Skip to content

Commit c813702

Browse files
committed
Update SA1611 to suppress messages when documentation for an element is optional
Fixes #2444
1 parent 5400cf3 commit c813702

9 files changed

Lines changed: 121 additions & 52 deletions

StyleCop.Analyzers/StyleCop.Analyzers.Test/DocumentationRules/SA1611UnitTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,25 @@ public class ClassName
154154
await this.VerifyCSharpDiagnosticAsync(testCode.Replace("##", p), expected, CancellationToken.None).ConfigureAwait(false);
155155
}
156156

157+
[Fact]
158+
[WorkItem(2444, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/2444")]
159+
public async Task TestPrivateMethodMissingParametersAsync()
160+
{
161+
var testCode = @"
162+
internal class ClassName
163+
{
164+
///
165+
private void Test1(int arg) { }
166+
167+
/**
168+
*
169+
*/
170+
private void Test2(int arg) { }
171+
}";
172+
173+
await this.VerifyCSharpDiagnosticAsync(testCode, EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false);
174+
}
175+
157176
/// <summary>
158177
/// Verifies that valid operator declarations will not produce diagnostics.
159178
/// </summary>

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/ElementDocumentationBase.cs

Lines changed: 76 additions & 38 deletions
Large diffs are not rendered by default.

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1608ElementDocumentationMustNotHaveDefaultSummary.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public SA1608ElementDocumentationMustNotHaveDefaultSummary()
5959
ImmutableArray.Create(Descriptor);
6060

6161
/// <inheritdoc/>
62-
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
62+
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, bool needsComment, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
6363
{
6464
foreach (var syntax in syntaxList)
6565
{
@@ -79,7 +79,7 @@ protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnu
7979
}
8080

8181
/// <inheritdoc/>
82-
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, XElement completeDocumentation, params Location[] diagnosticLocations)
82+
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, bool needsComment, XElement completeDocumentation, params Location[] diagnosticLocations)
8383
{
8484
// We are working with an <include> element
8585
var includedSummaryElement = completeDocumentation.Nodes().OfType<XElement>().FirstOrDefault(element => element.Name == XmlCommentHelper.SummaryXmlTag);

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1611ElementParametersMustBeDocumented.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,14 @@ public SA1611ElementParametersMustBeDocumented()
5151
ImmutableArray.Create(Descriptor);
5252

5353
/// <inheritdoc/>
54-
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
54+
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, bool needsComment, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
5555
{
56+
if (!needsComment)
57+
{
58+
// Omitting documentation for a parameter is allowed for this element.
59+
return;
60+
}
61+
5662
var node = context.Node;
5763
var parameterList = GetParameters(node);
5864
if (parameterList == null)
@@ -69,8 +75,14 @@ protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnu
6975
}
7076

7177
/// <inheritdoc/>
72-
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, XElement completeDocumentation, params Location[] diagnosticLocations)
78+
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, bool needsComment, XElement completeDocumentation, params Location[] diagnosticLocations)
7379
{
80+
if (!needsComment)
81+
{
82+
// Omitting documentation for a parameter is allowed for this element.
83+
return;
84+
}
85+
7486
var node = context.Node;
7587
var parameterList = GetParameters(node);
7688
if (parameterList == null)

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1612ElementParameterDocumentationMustMatchElementParameters.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public SA1612ElementParameterDocumentationMustMatchElementParameters()
5757
ImmutableArray.Create(MissingParameterDescriptor);
5858

5959
/// <inheritdoc/>
60-
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
60+
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, bool needsComment, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
6161
{
6262
var node = context.Node;
6363
var identifier = GetIdentifier(node);
@@ -112,7 +112,7 @@ protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnu
112112
}
113113

114114
/// <inheritdoc/>
115-
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, XElement completeDocumentation, params Location[] diagnosticLocations)
115+
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, bool needsComment, XElement completeDocumentation, params Location[] diagnosticLocations)
116116
{
117117
var node = context.Node;
118118
var identifier = GetIdentifier(node);

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1613ElementParameterDocumentationMustDeclareParameterName.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public SA1613ElementParameterDocumentationMustDeclareParameterName()
5656
ImmutableArray.Create(Descriptor);
5757

5858
/// <inheritdoc/>
59-
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
59+
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, bool needsComment, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
6060
{
6161
foreach (var syntax in syntaxList)
6262
{
@@ -71,7 +71,7 @@ protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnu
7171
}
7272

7373
/// <inheritdoc/>
74-
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, XElement completeDocumentation, params Location[] diagnosticLocations)
74+
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, bool needsComment, XElement completeDocumentation, params Location[] diagnosticLocations)
7575
{
7676
var xmlParamTags = completeDocumentation.Nodes()
7777
.OfType<XElement>()

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1614ElementParameterDocumentationMustHaveText.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public SA1614ElementParameterDocumentationMustHaveText()
5252
ImmutableArray.Create(Descriptor);
5353

5454
/// <inheritdoc/>
55-
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
55+
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, bool needsComment, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
5656
{
5757
foreach (var syntax in syntaxList)
5858
{
@@ -66,7 +66,7 @@ protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnu
6666
}
6767

6868
/// <inheritdoc/>
69-
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, XElement completeDocumentation, params Location[] diagnosticLocations)
69+
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, bool needsComment, XElement completeDocumentation, params Location[] diagnosticLocations)
7070
{
7171
var xmlParamTags = completeDocumentation.Nodes()
7272
.OfType<XElement>()

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1616ElementReturnValueDocumentationMustHaveText.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public SA1616ElementReturnValueDocumentationMustHaveText()
5151
ImmutableArray.Create(Descriptor);
5252

5353
/// <inheritdoc/>
54-
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
54+
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, bool needsComment, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
5555
{
5656
foreach (var syntax in syntaxList)
5757
{
@@ -64,7 +64,7 @@ protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnu
6464
}
6565

6666
/// <inheritdoc/>
67-
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, XElement completeDocumentation, params Location[] diagnosticLocations)
67+
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, bool needsComment, XElement completeDocumentation, params Location[] diagnosticLocations)
6868
{
6969
var returnsNodes = completeDocumentation.Nodes()
7070
.OfType<XElement>()

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1625ElementDocumentationMustNotBeCopiedAndPasted.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public SA1625ElementDocumentationMustNotBeCopiedAndPasted()
8787
ImmutableArray.Create(Descriptor);
8888

8989
/// <inheritdoc/>
90-
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
90+
protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, bool needsComment, IEnumerable<XmlNodeSyntax> syntaxList, params Location[] diagnosticLocations)
9191
{
9292
var objectPool = SharedPools.Default<HashSet<string>>();
9393
HashSet<string> documentationTexts = objectPool.Allocate();
@@ -119,7 +119,7 @@ protected override void HandleXmlElement(SyntaxNodeAnalysisContext context, IEnu
119119
}
120120

121121
/// <inheritdoc/>
122-
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, XElement completeDocumentation, params Location[] diagnosticLocations)
122+
protected override void HandleCompleteDocumentation(SyntaxNodeAnalysisContext context, bool needsComment, XElement completeDocumentation, params Location[] diagnosticLocations)
123123
{
124124
var objectPool = SharedPools.Default<HashSet<string>>();
125125
HashSet<string> documentationTexts = objectPool.Allocate();

0 commit comments

Comments
 (0)