Skip to content

Commit 7cd0fde

Browse files
committed
Reduce the number of allocations which occur within Initialize implementations
1 parent f04a881 commit 7cd0fde

153 files changed

Lines changed: 617 additions & 168 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

StyleCop.Analyzers/StyleCop.Analyzers.Test/Helpers/ExclusionTestAnalyzer.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace TestHelper
55
{
6+
using System;
67
using System.Collections.Immutable;
78
using Microsoft.CodeAnalysis;
89
using Microsoft.CodeAnalysis.Diagnostics;
@@ -25,14 +26,16 @@ internal class ExclusionTestAnalyzer : DiagnosticAnalyzer
2526
private static readonly DiagnosticDescriptor Descriptor =
2627
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, "TestRules", DiagnosticSeverity.Warning, true, Description, HelpLink);
2728

29+
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
30+
2831
/// <inheritdoc/>
2932
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
3033
ImmutableArray.Create(Descriptor);
3134

3235
/// <inheritdoc/>
3336
public override void Initialize(AnalysisContext context)
3437
{
35-
context.RegisterCompilationStartAction(HandleCompilationStart);
38+
context.RegisterCompilationStartAction(CompilationStartAction);
3639
}
3740

3841
private static void HandleCompilationStart(CompilationStartAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/ElementDocumentationSummaryBase.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,17 @@ namespace StyleCop.Analyzers.DocumentationRules
1616
/// </summary>
1717
internal abstract class ElementDocumentationSummaryBase : DiagnosticAnalyzer
1818
{
19+
private readonly Action<CompilationStartAnalysisContext> compilationStartAction;
20+
21+
protected ElementDocumentationSummaryBase()
22+
{
23+
this.compilationStartAction = this.HandleCompilationStart;
24+
}
25+
1926
/// <inheritdoc/>
2027
public override void Initialize(AnalysisContext context)
2128
{
22-
context.RegisterCompilationStartAction(this.HandleCompilationStart);
29+
context.RegisterCompilationStartAction(this.compilationStartAction);
2330
}
2431

2532
/// <summary>

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/FileHeaderAnalyzers.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ internal class FileHeaderAnalyzers : DiagnosticAnalyzer
8383
private static readonly LocalizableString SA1641Description = new LocalizableResourceString(nameof(DocumentationResources.SA1641Description), DocumentationResources.ResourceManager, typeof(DocumentationResources));
8484
private static readonly string SA1641HelpLink = "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1641.md";
8585

86+
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
87+
8688
/// <summary>
8789
/// Gets the diagnostic descriptor for SA1633 with a missing header.
8890
/// </summary>
@@ -169,7 +171,7 @@ internal class FileHeaderAnalyzers : DiagnosticAnalyzer
169171
/// <inheritdoc/>
170172
public override void Initialize(AnalysisContext context)
171173
{
172-
context.RegisterCompilationStartAction(HandleCompilationStart);
174+
context.RegisterCompilationStartAction(CompilationStartAction);
173175
}
174176

175177
private static void HandleCompilationStart(CompilationStartAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/PartialElementDocumentationSummaryBase.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace StyleCop.Analyzers.DocumentationRules
55
{
6+
using System;
67
using System.Linq;
78
using Microsoft.CodeAnalysis;
89
using Microsoft.CodeAnalysis.CSharp;
@@ -16,10 +17,17 @@ namespace StyleCop.Analyzers.DocumentationRules
1617
/// </summary>
1718
internal abstract class PartialElementDocumentationSummaryBase : DiagnosticAnalyzer
1819
{
20+
private readonly Action<CompilationStartAnalysisContext> compilationStartAction;
21+
22+
protected PartialElementDocumentationSummaryBase()
23+
{
24+
this.compilationStartAction = this.HandleCompilationStart;
25+
}
26+
1927
/// <inheritdoc/>
2028
public override void Initialize(AnalysisContext context)
2129
{
22-
context.RegisterCompilationStartAction(this.HandleCompilationStart);
30+
context.RegisterCompilationStartAction(this.compilationStartAction);
2331
}
2432

2533
/// <summary>

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/PropertyDocumentationSummaryBase.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace StyleCop.Analyzers.DocumentationRules
55
{
6+
using System;
67
using Microsoft.CodeAnalysis;
78
using Microsoft.CodeAnalysis.CSharp;
89
using Microsoft.CodeAnalysis.CSharp.Syntax;
@@ -14,10 +15,17 @@ namespace StyleCop.Analyzers.DocumentationRules
1415
/// </summary>
1516
internal abstract class PropertyDocumentationSummaryBase : DiagnosticAnalyzer
1617
{
18+
private readonly Action<CompilationStartAnalysisContext> compilationStartAction;
19+
20+
protected PropertyDocumentationSummaryBase()
21+
{
22+
this.compilationStartAction = this.HandleCompilationStart;
23+
}
24+
1725
/// <inheritdoc/>
1826
public override void Initialize(AnalysisContext context)
1927
{
20-
context.RegisterCompilationStartAction(this.HandleCompilationStart);
28+
context.RegisterCompilationStartAction(this.compilationStartAction);
2129
}
2230

2331
/// <summary>

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace StyleCop.Analyzers.DocumentationRules
55
{
6+
using System;
67
using System.Collections.Immutable;
78
using System.Linq;
89
using Helpers;
@@ -40,14 +41,16 @@ internal class SA1600ElementsMustBeDocumented : DiagnosticAnalyzer
4041
private static readonly DiagnosticDescriptor Descriptor =
4142
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.DocumentationRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4243

44+
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
45+
4346
/// <inheritdoc/>
4447
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
4548
ImmutableArray.Create(Descriptor);
4649

4750
/// <inheritdoc/>
4851
public override void Initialize(AnalysisContext context)
4952
{
50-
context.RegisterCompilationStartAction(HandleCompilationStart);
53+
context.RegisterCompilationStartAction(CompilationStartAction);
5154
}
5255

5356
private static void HandleCompilationStart(CompilationStartAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1601PartialElementsMustBeDocumented.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace StyleCop.Analyzers.DocumentationRules
55
{
6+
using System;
67
using System.Collections.Immutable;
78
using System.Linq;
89
using Microsoft.CodeAnalysis;
@@ -81,14 +82,16 @@ internal class SA1601PartialElementsMustBeDocumented : DiagnosticAnalyzer
8182
private static readonly DiagnosticDescriptor Descriptor =
8283
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.DocumentationRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
8384

85+
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
86+
8487
/// <inheritdoc/>
8588
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
8689
ImmutableArray.Create(Descriptor);
8790

8891
/// <inheritdoc/>
8992
public override void Initialize(AnalysisContext context)
9093
{
91-
context.RegisterCompilationStartAction(HandleCompilationStart);
94+
context.RegisterCompilationStartAction(CompilationStartAction);
9295
}
9396

9497
private static void HandleCompilationStart(CompilationStartAnalysisContext context)

StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1602EnumerationItemsMustBeDocumented.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace StyleCop.Analyzers.DocumentationRules
55
{
6+
using System;
67
using System.Collections.Immutable;
78
using Microsoft.CodeAnalysis;
89
using Microsoft.CodeAnalysis.CSharp;
@@ -51,14 +52,16 @@ internal class SA1602EnumerationItemsMustBeDocumented : DiagnosticAnalyzer
5152
private static readonly DiagnosticDescriptor Descriptor =
5253
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.DocumentationRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
5354

55+
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
56+
5457
/// <inheritdoc/>
5558
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
5659
ImmutableArray.Create(Descriptor);
5760

5861
/// <inheritdoc/>
5962
public override void Initialize(AnalysisContext context)
6063
{
61-
context.RegisterCompilationStartAction(HandleCompilationStart);
64+
context.RegisterCompilationStartAction(CompilationStartAction);
6265
}
6366

6467
private static void HandleCompilationStart(CompilationStartAnalysisContext context)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,16 @@ internal class SA1608ElementDocumentationMustNotHaveDefaultSummary : DiagnosticA
4747
private static readonly DiagnosticDescriptor Descriptor =
4848
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.DocumentationRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4949

50+
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
51+
5052
/// <inheritdoc/>
5153
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
5254
ImmutableArray.Create(Descriptor);
5355

5456
/// <inheritdoc/>
5557
public override void Initialize(AnalysisContext context)
5658
{
57-
context.RegisterCompilationStartAction(HandleCompilationStart);
59+
context.RegisterCompilationStartAction(CompilationStartAction);
5860
}
5961

6062
private static void HandleCompilationStart(CompilationStartAnalysisContext context)

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace StyleCop.Analyzers.DocumentationRules
55
{
6+
using System;
67
using System.Collections.Generic;
78
using System.Collections.Immutable;
89
using System.Linq;
@@ -41,14 +42,16 @@ internal class SA1611ElementParametersMustBeDocumented : DiagnosticAnalyzer
4142
private static readonly DiagnosticDescriptor Descriptor =
4243
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.DocumentationRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4344

45+
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
46+
4447
/// <inheritdoc/>
4548
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
4649
ImmutableArray.Create(Descriptor);
4750

4851
/// <inheritdoc/>
4952
public override void Initialize(AnalysisContext context)
5053
{
51-
context.RegisterCompilationStartAction(HandleCompilationStart);
54+
context.RegisterCompilationStartAction(CompilationStartAction);
5255
}
5356

5457
private static void HandleCompilationStart(CompilationStartAnalysisContext context)

0 commit comments

Comments
 (0)