Skip to content

Commit 1ad3b58

Browse files
committed
Update SA1600 to use the new cached settings support
1 parent 19fc984 commit 1ad3b58

1 file changed

Lines changed: 47 additions & 47 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1600ElementsMustBeDocumented.cs

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ namespace StyleCop.Analyzers.DocumentationRules
66
using System;
77
using System.Collections.Immutable;
88
using System.Linq;
9-
using System.Threading;
109
using Helpers;
1110
using Microsoft.CodeAnalysis;
1211
using Microsoft.CodeAnalysis.CSharp;
@@ -46,6 +45,16 @@ internal class SA1600ElementsMustBeDocumented : DiagnosticAnalyzer
4645
ImmutableArray.Create(SyntaxKind.ClassDeclaration, SyntaxKind.StructDeclaration, SyntaxKind.InterfaceDeclaration, SyntaxKind.EnumDeclaration);
4746

4847
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
48+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> BaseTypeDeclarationAction = Analyzer.HandleBaseTypeDeclaration;
49+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> MethodDeclarationAction = Analyzer.HandleMethodDeclaration;
50+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> ConstructorDeclarationAction = Analyzer.HandleConstructorDeclaration;
51+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> DestructorDeclarationAction = Analyzer.HandleDestructorDeclaration;
52+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> PropertyDeclarationAction = Analyzer.HandlePropertyDeclaration;
53+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> IndexerDeclarationAction = Analyzer.HandleIndexerDeclaration;
54+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> FieldDeclarationAction = Analyzer.HandleFieldDeclaration;
55+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> DelegateDeclarationAction = Analyzer.HandleDelegateDeclaration;
56+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> EventDeclarationAction = Analyzer.HandleEventDeclaration;
57+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> EventFieldDeclarationAction = Analyzer.HandleEventFieldDeclaration;
4958

5059
/// <inheritdoc/>
5160
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -59,30 +68,21 @@ public override void Initialize(AnalysisContext context)
5968

6069
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
6170
{
62-
Analyzer analyzer = new Analyzer(context.Options, context.CancellationToken);
63-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleBaseTypeDeclaration, BaseTypeDeclarationKinds);
64-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleMethodDeclaration, SyntaxKind.MethodDeclaration);
65-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleConstructorDeclaration, SyntaxKind.ConstructorDeclaration);
66-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleDestructorDeclaration, SyntaxKind.DestructorDeclaration);
67-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandlePropertyDeclaration, SyntaxKind.PropertyDeclaration);
68-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleIndexerDeclaration, SyntaxKind.IndexerDeclaration);
69-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleFieldDeclaration, SyntaxKind.FieldDeclaration);
70-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleDelegateDeclaration, SyntaxKind.DelegateDeclaration);
71-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleEventDeclaration, SyntaxKind.EventDeclaration);
72-
context.RegisterSyntaxNodeActionHonorExclusions(analyzer.HandleEventFieldDeclaration, SyntaxKind.EventFieldDeclaration);
71+
context.RegisterSyntaxNodeActionHonorExclusions(BaseTypeDeclarationAction, BaseTypeDeclarationKinds);
72+
context.RegisterSyntaxNodeActionHonorExclusions(MethodDeclarationAction, SyntaxKind.MethodDeclaration);
73+
context.RegisterSyntaxNodeActionHonorExclusions(ConstructorDeclarationAction, SyntaxKind.ConstructorDeclaration);
74+
context.RegisterSyntaxNodeActionHonorExclusions(DestructorDeclarationAction, SyntaxKind.DestructorDeclaration);
75+
context.RegisterSyntaxNodeActionHonorExclusions(PropertyDeclarationAction, SyntaxKind.PropertyDeclaration);
76+
context.RegisterSyntaxNodeActionHonorExclusions(IndexerDeclarationAction, SyntaxKind.IndexerDeclaration);
77+
context.RegisterSyntaxNodeActionHonorExclusions(FieldDeclarationAction, SyntaxKind.FieldDeclaration);
78+
context.RegisterSyntaxNodeActionHonorExclusions(DelegateDeclarationAction, SyntaxKind.DelegateDeclaration);
79+
context.RegisterSyntaxNodeActionHonorExclusions(EventDeclarationAction, SyntaxKind.EventDeclaration);
80+
context.RegisterSyntaxNodeActionHonorExclusions(EventFieldDeclarationAction, SyntaxKind.EventFieldDeclaration);
7381
}
7482

75-
private class Analyzer
83+
private static class Analyzer
7684
{
77-
private readonly DocumentationSettings documentationSettings;
78-
79-
public Analyzer(AnalyzerOptions options, CancellationToken cancellationToken)
80-
{
81-
StyleCopSettings settings = options.GetStyleCopSettings(cancellationToken);
82-
this.documentationSettings = settings.DocumentationRules;
83-
}
84-
85-
public void HandleBaseTypeDeclaration(SyntaxNodeAnalysisContext context)
85+
public static void HandleBaseTypeDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
8686
{
8787
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
8888
{
@@ -98,7 +98,7 @@ public void HandleBaseTypeDeclaration(SyntaxNodeAnalysisContext context)
9898

9999
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
100100
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
101-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
101+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
102102
{
103103
if (!XmlCommentHelper.HasDocumentation(declaration))
104104
{
@@ -107,7 +107,7 @@ public void HandleBaseTypeDeclaration(SyntaxNodeAnalysisContext context)
107107
}
108108
}
109109

110-
public void HandleMethodDeclaration(SyntaxNodeAnalysisContext context)
110+
public static void HandleMethodDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
111111
{
112112
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
113113
{
@@ -118,7 +118,7 @@ public void HandleMethodDeclaration(SyntaxNodeAnalysisContext context)
118118

119119
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
120120
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
121-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
121+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
122122
{
123123
if (!XmlCommentHelper.HasDocumentation(declaration))
124124
{
@@ -127,7 +127,7 @@ public void HandleMethodDeclaration(SyntaxNodeAnalysisContext context)
127127
}
128128
}
129129

130-
public void HandleConstructorDeclaration(SyntaxNodeAnalysisContext context)
130+
public static void HandleConstructorDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
131131
{
132132
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
133133
{
@@ -138,7 +138,7 @@ public void HandleConstructorDeclaration(SyntaxNodeAnalysisContext context)
138138

139139
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
140140
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
141-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
141+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
142142
{
143143
if (!XmlCommentHelper.HasDocumentation(declaration))
144144
{
@@ -147,7 +147,7 @@ public void HandleConstructorDeclaration(SyntaxNodeAnalysisContext context)
147147
}
148148
}
149149

150-
public void HandleDestructorDeclaration(SyntaxNodeAnalysisContext context)
150+
public static void HandleDestructorDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
151151
{
152152
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
153153
{
@@ -158,7 +158,7 @@ public void HandleDestructorDeclaration(SyntaxNodeAnalysisContext context)
158158

159159
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
160160
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
161-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
161+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
162162
{
163163
if (!XmlCommentHelper.HasDocumentation(declaration))
164164
{
@@ -167,7 +167,7 @@ public void HandleDestructorDeclaration(SyntaxNodeAnalysisContext context)
167167
}
168168
}
169169

170-
public void HandlePropertyDeclaration(SyntaxNodeAnalysisContext context)
170+
public static void HandlePropertyDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
171171
{
172172
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
173173
{
@@ -178,7 +178,7 @@ public void HandlePropertyDeclaration(SyntaxNodeAnalysisContext context)
178178

179179
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
180180
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
181-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
181+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
182182
{
183183
if (!XmlCommentHelper.HasDocumentation(declaration))
184184
{
@@ -187,7 +187,7 @@ public void HandlePropertyDeclaration(SyntaxNodeAnalysisContext context)
187187
}
188188
}
189189

190-
public void HandleIndexerDeclaration(SyntaxNodeAnalysisContext context)
190+
public static void HandleIndexerDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
191191
{
192192
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
193193
{
@@ -198,7 +198,7 @@ public void HandleIndexerDeclaration(SyntaxNodeAnalysisContext context)
198198

199199
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
200200
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
201-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
201+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
202202
{
203203
if (!XmlCommentHelper.HasDocumentation(declaration))
204204
{
@@ -207,7 +207,7 @@ public void HandleIndexerDeclaration(SyntaxNodeAnalysisContext context)
207207
}
208208
}
209209

210-
public void HandleFieldDeclaration(SyntaxNodeAnalysisContext context)
210+
public static void HandleFieldDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
211211
{
212212
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
213213
{
@@ -219,7 +219,7 @@ public void HandleFieldDeclaration(SyntaxNodeAnalysisContext context)
219219

220220
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
221221
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
222-
if (variableDeclaration != null && this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
222+
if (variableDeclaration != null && NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
223223
{
224224
if (!XmlCommentHelper.HasDocumentation(declaration))
225225
{
@@ -232,7 +232,7 @@ public void HandleFieldDeclaration(SyntaxNodeAnalysisContext context)
232232
}
233233
}
234234

235-
public void HandleDelegateDeclaration(SyntaxNodeAnalysisContext context)
235+
public static void HandleDelegateDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
236236
{
237237
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
238238
{
@@ -243,7 +243,7 @@ public void HandleDelegateDeclaration(SyntaxNodeAnalysisContext context)
243243

244244
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
245245
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
246-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
246+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
247247
{
248248
if (!XmlCommentHelper.HasDocumentation(declaration))
249249
{
@@ -252,7 +252,7 @@ public void HandleDelegateDeclaration(SyntaxNodeAnalysisContext context)
252252
}
253253
}
254254

255-
public void HandleEventDeclaration(SyntaxNodeAnalysisContext context)
255+
public static void HandleEventDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
256256
{
257257
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
258258
{
@@ -263,7 +263,7 @@ public void HandleEventDeclaration(SyntaxNodeAnalysisContext context)
263263

264264
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
265265
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
266-
if (this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
266+
if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
267267
{
268268
if (!XmlCommentHelper.HasDocumentation(declaration))
269269
{
@@ -272,7 +272,7 @@ public void HandleEventDeclaration(SyntaxNodeAnalysisContext context)
272272
}
273273
}
274274

275-
public void HandleEventFieldDeclaration(SyntaxNodeAnalysisContext context)
275+
public static void HandleEventFieldDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
276276
{
277277
if (context.GetDocumentationMode() != DocumentationMode.Diagnose)
278278
{
@@ -284,7 +284,7 @@ public void HandleEventFieldDeclaration(SyntaxNodeAnalysisContext context)
284284

285285
Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken);
286286
Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken);
287-
if (variableDeclaration != null && this.NeedsComment(declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
287+
if (variableDeclaration != null && NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility))
288288
{
289289
if (!XmlCommentHelper.HasDocumentation(declaration))
290290
{
@@ -297,22 +297,22 @@ public void HandleEventFieldDeclaration(SyntaxNodeAnalysisContext context)
297297
}
298298
}
299299

300-
private bool NeedsComment(SyntaxKind syntaxKind, SyntaxKind parentSyntaxKind, Accessibility declaredAccessibility, Accessibility effectiveAccessibility)
300+
public static bool NeedsComment(DocumentationSettings documentationSettings, SyntaxKind syntaxKind, SyntaxKind parentSyntaxKind, Accessibility declaredAccessibility, Accessibility effectiveAccessibility)
301301
{
302-
if (this.documentationSettings.DocumentInterfaces
302+
if (documentationSettings.DocumentInterfaces
303303
&& (syntaxKind == SyntaxKind.InterfaceDeclaration || parentSyntaxKind == SyntaxKind.InterfaceDeclaration))
304304
{
305305
// DocumentInterfaces => all interfaces must be documented
306306
return true;
307307
}
308308

309-
if (syntaxKind == SyntaxKind.FieldDeclaration && this.documentationSettings.DocumentPrivateFields)
309+
if (syntaxKind == SyntaxKind.FieldDeclaration && documentationSettings.DocumentPrivateFields)
310310
{
311311
// DocumentPrivateFields => all fields must be documented
312312
return true;
313313
}
314314

315-
if (this.documentationSettings.DocumentPrivateElements)
315+
if (documentationSettings.DocumentPrivateElements)
316316
{
317317
if (syntaxKind == SyntaxKind.FieldDeclaration && declaredAccessibility == Accessibility.Private)
318318
{
@@ -330,12 +330,12 @@ private bool NeedsComment(SyntaxKind syntaxKind, SyntaxKind parentSyntaxKind, Ac
330330
case Accessibility.Protected:
331331
case Accessibility.ProtectedOrInternal:
332332
// These items are part of the exposed API surface => document if configured
333-
return this.documentationSettings.DocumentExposedElements;
333+
return documentationSettings.DocumentExposedElements;
334334

335335
case Accessibility.ProtectedAndInternal:
336336
case Accessibility.Internal:
337337
// These items are part of the internal API surface => document if configured
338-
return this.documentationSettings.DocumentInternalElements;
338+
return documentationSettings.DocumentInternalElements;
339339

340340
case Accessibility.NotApplicable:
341341
case Accessibility.Private:

0 commit comments

Comments
 (0)