Comments (7)
@Alxandr Not the same problem. Yours is a duplicate of #3595 which has been fixed but not yet released.
from stylecopanalyzers.
IMO, no. I think SA1600 should not apply to explicit interface implementations. But the rest (assuming they only run when documentation is present) should run. The high level is: docs aren't required, but if they exist, they should follow the regular rules.
Thanks for the input! The connections between the rules are intricate and my thinking might be flawed, but this is my take on it:
That would mean that SA1615 would require a return tag for a method if there is any documentation at all. For private members, that is not required by default. I don't think we should put higher demands on explicitly implemented members than on private ones, rather the contrary since explicit ones can never be used directly.
I definitely agree with you on rules that trigger on bad or missing text inside a tag (for example SA1616 for the returns tag), but those are other rules than the ones I listed above. (SA1611 looks suspicious though, I will have to check that one again.)
from stylecopanalyzers.
I am having a look at this. There seems to be quite a lot of dependencies between the SA16xx rules at the code level, with many of them calling a method inside the SA1600 analyzer. I need to try this out some more, but my gut says that this is not the only rule that should be affected by this issue. What is actually the desired behaviour? Should we treat explicitly implemented methods etc as if they were private or skip them all together? I am for example thinking about how the "document private elements" option fits in this.
from stylecopanalyzers.
Thanks for looking, @bjornhellander.
I think the doc rules should allow for the user not documenting explicit interface implementations. But if they are present, the rules that ensure that docs follow certain conventions are probably still good to run. For example, if I did document the method (for whatever reason) but left out the docs for one particular parameter, or put them out of order, then stylecop calling that out is arguably still a good thing.
from stylecopanalyzers.
SA1648 has the same issue. I get an error telling me that I can't use inheritdoc when doing static TAggregate IAggregate<TAggregate, TEvent>.New(Guid id)
. Not sure if this qualifies as a new issue or not.
from stylecopanalyzers.
The following rules share code today that determine if the rule is applicable for a specific element, based on accessibility and documentation settings:
- SA1600 ElementsMustBeDocumented
- SA1601 PartialElementsMustBeDocumented
- SA1602 EnumerationItemsMustBeDocumented (not relevant for this discussion)
- SA1604 ElementDocumentationMustHaveSummary
- SA1605 PartialElementDocumentationMustHaveSummary
- SA1609 PropertyDocumentationMustHaveValue
- SA1611 PropertyDocumentationMustHaveValueText
- SA1612 ElementParameterDocumentationMustMatchElementParameters
- SA1615 ElementReturnValueMustBeDocumented
- SA1618 GenericTypeParametersMustBeDocumented
- SA1619 GenericTypeParametersMustBeDocumentedPartialClass
So for example if the element is private and it is not configured that private elements should be documented, then SA1600 does not trigger, but it also means that none of the other trigger, which they would have done by default if the element had been public.
Is the intended behaviour that none of the above should ever trigger for explicitly implemented members, regardless of documentation settings?
from stylecopanalyzers.
Is the intended behaviour that none of the above should ever trigger for explicitly implemented members, regardless of documentation settings?
IMO, no. I think SA1600 should not apply to explicit interface implementations. But the rest (assuming they only run when documentation is present) should run. The high level is: docs aren't required, but if they exist, they should follow the regular rules.
from stylecopanalyzers.
Related Issues (20)
- SA1611 not throwing warning for additional parameter in the "private" method if documentation not available for it HOT 4
- SA1009 ans SA1024 clashses in the middle of a line HOT 4
- SA1009 - Behavior in Switch expression
- SA1106 false positive on class with no body HOT 5
- Ability to have multiple (hierarchical) configuration files HOT 2
- SA1003 conflicts with SA1010 for new style collection initialisation. HOT 2
- SA1009 conflicts with SA1024 for primary constructors with parent classes. HOT 2
- SA1313 incorrectly suggests that record property names should start with a lower-case letter. HOT 3
- SA1206 suggests a non-idiomatic placement of the required modifier. HOT 6
- New Rule Proposal: SA1208 but for Microsoft.*
- Documentation for SA1604 contains an irrelevant line
- SA1514 is falsely reported when documenting types declared in the global namespace HOT 1
- When using the new collection initializer [] no SA1010 should be raised. HOT 4
- SA1402 is not raised when declaring multiple types in a file-scoped namespace HOT 1
- SA1402 doesn't recognize records HOT 5
- SA1516 is reported between extern alias and global using HOT 5
- Extend SA1129 to cover parameterless struct constructors HOT 1
- SA1015 false positive on object initializer HOT 3
- SA1012 incorrectly reported on opening brace in List Pattern matching HOT 2
- Add option to detect unused using HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from stylecopanalyzers.