Skip to content

Commit b008586

Browse files
committed
Reduce the number of allocations in HandleCompilationStart for spacing rules
1 parent a87b28f commit b008586

29 files changed

Lines changed: 82 additions & 44 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1000KeywordsMustBeSpacedCorrectly.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ internal class SA1000KeywordsMustBeSpacedCorrectly : DiagnosticAnalyzer
4545
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4646

4747
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
48+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
49+
private static readonly Action<SyntaxNodeAnalysisContext> InvocationExpressionAction = HandleInvocationExpression;
4850

4951
/// <inheritdoc/>
5052
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -59,10 +61,10 @@ public override void Initialize(AnalysisContext context)
5961
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
6062
{
6163
// handle everything except nameof
62-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
64+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
6365

6466
// handle nameof (which appears as an invocation expression??)
65-
context.RegisterSyntaxNodeActionHonorExclusions(HandleInvocationExpressionSyntax, SyntaxKind.InvocationExpression);
67+
context.RegisterSyntaxNodeActionHonorExclusions(InvocationExpressionAction, SyntaxKind.InvocationExpression);
6668
}
6769

6870
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)
@@ -135,7 +137,7 @@ private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)
135137
}
136138
}
137139

138-
private static void HandleInvocationExpressionSyntax(SyntaxNodeAnalysisContext context)
140+
private static void HandleInvocationExpression(SyntaxNodeAnalysisContext context)
139141
{
140142
InvocationExpressionSyntax invocationExpressionSyntax = (InvocationExpressionSyntax)context.Node;
141143
IdentifierNameSyntax identifierNameSyntax = invocationExpressionSyntax.Expression as IdentifierNameSyntax;

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1001CommasMustBeSpacedCorrectly.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ internal class SA1001CommasMustBeSpacedCorrectly : DiagnosticAnalyzer
3535
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
3636

3737
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
38+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
3839

3940
/// <inheritdoc/>
4041
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -48,7 +49,7 @@ public override void Initialize(AnalysisContext context)
4849

4950
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
5051
{
51-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
52+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
5253
}
5354

5455
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1002SemicolonsMustBeSpacedCorrectly.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ internal class SA1002SemicolonsMustBeSpacedCorrectly : DiagnosticAnalyzer
3535
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
3636

3737
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
38+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
3839

3940
/// <inheritdoc/>
4041
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -48,7 +49,7 @@ public override void Initialize(AnalysisContext context)
4849

4950
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
5051
{
51-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
52+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
5253
}
5354

5455
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1003SymbolsMustBeSpacedCorrectly.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,16 @@ internal class SA1003SymbolsMustBeSpacedCorrectly : DiagnosticAnalyzer
124124
ImmutableArray.Create(SyntaxKind.ParenthesizedLambdaExpression, SyntaxKind.SimpleLambdaExpression);
125125

126126
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
127+
private static readonly Action<SyntaxNodeAnalysisContext> ConstructorDeclarationAction = HandleConstructorDeclaration;
128+
private static readonly Action<SyntaxNodeAnalysisContext> ConditionalExpressionAction = HandleConditionalExpression;
129+
private static readonly Action<SyntaxNodeAnalysisContext> TypeParameterConstraintClauseAction = HandleTypeParameterConstraintClause;
130+
private static readonly Action<SyntaxNodeAnalysisContext> BinaryExpressionAction = HandleBinaryExpression;
131+
private static readonly Action<SyntaxNodeAnalysisContext> PrefixUnaryExpressionAction = HandlePrefixUnaryExpression;
132+
private static readonly Action<SyntaxNodeAnalysisContext> PostfixUnaryExpressionAction = HandlePostfixUnaryExpression;
133+
private static readonly Action<SyntaxNodeAnalysisContext> AssignmentExpressionAction = HandleAssignmentExpression;
134+
private static readonly Action<SyntaxNodeAnalysisContext> CastExpressionAction = HandleCastExpression;
135+
private static readonly Action<SyntaxNodeAnalysisContext> EqualsValueClauseAction = HandleEqualsValueClause;
136+
private static readonly Action<SyntaxNodeAnalysisContext> LambdaExpressionAction = HandleLambdaExpression;
127137

128138
/// <summary>
129139
/// Gets the descriptor for prefix unary expression that may not be followed by a comment.
@@ -191,16 +201,16 @@ public override void Initialize(AnalysisContext context)
191201

192202
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
193203
{
194-
context.RegisterSyntaxNodeActionHonorExclusions(HandleConstructorDeclaration, SyntaxKind.ConstructorDeclaration);
195-
context.RegisterSyntaxNodeActionHonorExclusions(HandleConditionalExpression, SyntaxKind.ConditionalExpression);
196-
context.RegisterSyntaxNodeActionHonorExclusions(HandleTypeParameterConstraint, SyntaxKind.TypeParameterConstraintClause);
197-
context.RegisterSyntaxNodeActionHonorExclusions(HandleBinaryExpression, BinaryExpressionKinds);
198-
context.RegisterSyntaxNodeActionHonorExclusions(HandlePrefixUnaryExpression, PrefixUnaryExpressionKinds);
199-
context.RegisterSyntaxNodeActionHonorExclusions(HandlePostfixUnaryExpression, PostfixUnaryExpressionKinds);
200-
context.RegisterSyntaxNodeActionHonorExclusions(HandleAssignmentExpression, AssignmentExpressionKinds);
201-
context.RegisterSyntaxNodeActionHonorExclusions(HandleCastExpression, SyntaxKind.CastExpression);
202-
context.RegisterSyntaxNodeActionHonorExclusions(HandleEqualsValueClause, SyntaxKind.EqualsValueClause);
203-
context.RegisterSyntaxNodeActionHonorExclusions(HandleLambdaExpression, LambdaExpressionKinds);
204+
context.RegisterSyntaxNodeActionHonorExclusions(ConstructorDeclarationAction, SyntaxKind.ConstructorDeclaration);
205+
context.RegisterSyntaxNodeActionHonorExclusions(ConditionalExpressionAction, SyntaxKind.ConditionalExpression);
206+
context.RegisterSyntaxNodeActionHonorExclusions(TypeParameterConstraintClauseAction, SyntaxKind.TypeParameterConstraintClause);
207+
context.RegisterSyntaxNodeActionHonorExclusions(BinaryExpressionAction, BinaryExpressionKinds);
208+
context.RegisterSyntaxNodeActionHonorExclusions(PrefixUnaryExpressionAction, PrefixUnaryExpressionKinds);
209+
context.RegisterSyntaxNodeActionHonorExclusions(PostfixUnaryExpressionAction, PostfixUnaryExpressionKinds);
210+
context.RegisterSyntaxNodeActionHonorExclusions(AssignmentExpressionAction, AssignmentExpressionKinds);
211+
context.RegisterSyntaxNodeActionHonorExclusions(CastExpressionAction, SyntaxKind.CastExpression);
212+
context.RegisterSyntaxNodeActionHonorExclusions(EqualsValueClauseAction, SyntaxKind.EqualsValueClause);
213+
context.RegisterSyntaxNodeActionHonorExclusions(LambdaExpressionAction, LambdaExpressionKinds);
204214
}
205215

206216
private static void HandleConstructorDeclaration(SyntaxNodeAnalysisContext context)
@@ -222,7 +232,7 @@ private static void HandleConditionalExpression(SyntaxNodeAnalysisContext contex
222232
CheckToken(context, conditionalExpression.ColonToken, true, true, true);
223233
}
224234

225-
private static void HandleTypeParameterConstraint(SyntaxNodeAnalysisContext context)
235+
private static void HandleTypeParameterConstraintClause(SyntaxNodeAnalysisContext context)
226236
{
227237
var typeParameterConstraint = (TypeParameterConstraintClauseSyntax)context.Node;
228238

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1004DocumentationLinesMustBeginWithSingleSpace.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ internal class SA1004DocumentationLinesMustBeginWithSingleSpace : DiagnosticAnal
5757
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
5858

5959
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
60+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
6061

6162
/// <inheritdoc/>
6263
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -70,7 +71,7 @@ public override void Initialize(AnalysisContext context)
7071

7172
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
7273
{
73-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
74+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
7475
}
7576

7677
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1005SingleLineCommentsMustBeginWithSingleSpace.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ internal class SA1005SingleLineCommentsMustBeginWithSingleSpace : DiagnosticAnal
6363
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
6464

6565
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
66+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
6667

6768
/// <inheritdoc/>
6869
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -76,7 +77,7 @@ public override void Initialize(AnalysisContext context)
7677

7778
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
7879
{
79-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
80+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
8081
}
8182

8283
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1006PreprocessorKeywordsMustNotBePrecededBySpace.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ internal class SA1006PreprocessorKeywordsMustNotBePrecededBySpace : DiagnosticAn
4343
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4444

4545
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
46+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
4647

4748
/// <inheritdoc/>
4849
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -56,7 +57,7 @@ public override void Initialize(AnalysisContext context)
5657

5758
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
5859
{
59-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
60+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
6061
}
6162

6263
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1007OperatorKeywordMustBeFollowedBySpace.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ internal class SA1007OperatorKeywordMustBeFollowedBySpace : DiagnosticAnalyzer
3939
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4040

4141
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
42+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
4243

4344
/// <inheritdoc/>
4445
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -52,7 +53,7 @@ public override void Initialize(AnalysisContext context)
5253

5354
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
5455
{
55-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
56+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
5657
}
5758

5859
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1008OpeningParenthesisMustBeSpacedCorrectly.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ internal class SA1008OpeningParenthesisMustBeSpacedCorrectly : DiagnosticAnalyze
4040
private const string MessageNotFollowed = "Opening parenthesis must not be followed by a space.";
4141

4242
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
43+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
4344

4445
/// <summary>
4546
/// Gets the diagnostic descriptor for an opening parenthesis that must not be preceded by whitespace.
@@ -74,7 +75,7 @@ public override void Initialize(AnalysisContext context)
7475

7576
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
7677
{
77-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
78+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
7879
}
7980

8081
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1009ClosingParenthesisMustBeSpacedCorrectly.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ internal class SA1009ClosingParenthesisMustBeSpacedCorrectly : DiagnosticAnalyze
4343
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.SpacingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4444

4545
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
46+
private static readonly Action<SyntaxTreeAnalysisContext> SyntaxTreeAction = HandleSyntaxTree;
4647

4748
/// <inheritdoc/>
4849
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -56,7 +57,7 @@ public override void Initialize(AnalysisContext context)
5657

5758
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
5859
{
59-
context.RegisterSyntaxTreeActionHonorExclusions(HandleSyntaxTree);
60+
context.RegisterSyntaxTreeActionHonorExclusions(SyntaxTreeAction);
6061
}
6162

6263
private static void HandleSyntaxTree(SyntaxTreeAnalysisContext context)

0 commit comments

Comments
 (0)