提交 744a1642 编写于 作者: C CyrusNajmabadi 提交者: GitHub

Merge pull request #15067 from CyrusNajmabadi/concurrentExecution

Enable concurrent execution for analyzers that run OOP.
Fixes #14639
......@@ -28,9 +28,7 @@ internal sealed class CSharpAddBracesDiagnosticAnalyzer : DiagnosticAnalyzer, IB
public bool OpenFileOnly(Workspace workspace) => false;
public override void Initialize(AnalysisContext context)
{
var syntaxKindsOfInterest =
private static readonly ImmutableArray<SyntaxKind> s_syntaxKindsOfInterest =
ImmutableArray.Create(SyntaxKind.IfStatement,
SyntaxKind.ElseClause,
SyntaxKind.ForStatement,
......@@ -41,7 +39,10 @@ public override void Initialize(AnalysisContext context)
SyntaxKind.UsingStatement,
SyntaxKind.LockStatement);
context.RegisterSyntaxNodeAction(AnalyzeNode, syntaxKindsOfInterest);
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(AnalyzeNode, s_syntaxKindsOfInterest);
}
public DiagnosticAnalyzerCategory GetAnalyzerCategory() => DiagnosticAnalyzerCategory.SemanticSpanAnalysis;
......
......@@ -37,6 +37,7 @@ public DiagnosticAnalyzerCategory GetAnalyzerCategory()
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(AnalyzeSyntaxNode, SyntaxKind.Argument);
}
......
......@@ -30,6 +30,7 @@ public InvokeDelegateWithConditionalAccessAnalyzer()
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(SyntaxNodeAction, SyntaxKind.IfStatement);
}
......
......@@ -30,6 +30,8 @@ internal sealed class PopulateSwitchDiagnosticAnalyzer : DiagnosticAnalyzer, IBu
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
var internalMethod = typeof(AnalysisContext).GetTypeInfo().GetDeclaredMethod("RegisterOperationActionImmutableArrayInternal");
internalMethod.Invoke(context, new object[] { new Action<OperationAnalysisContext>(AnalyzeOperation), ImmutableArray.Create(OperationKind.SwitchStatement) });
}
......
......@@ -38,6 +38,7 @@ internal abstract class AbstractUseAutoPropertyAnalyzer<TPropertyDeclaration, TF
public sealed override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterCompilationStartAction(csac =>
{
var analysisResults = new ConcurrentBag<AnalysisResult>();
......
......@@ -30,6 +30,7 @@ protected AbstractUseCoalesceExpressionDiagnosticAnalyzer()
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(AnalyzeSyntax, GetSyntaxKindToAnalyze());
}
......
......@@ -39,6 +39,7 @@ protected AbstractUseCollectionInitializerDiagnosticAnalyzer()
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterCompilationStartAction(compilationContext =>
{
var ienumerableType = compilationContext.Compilation.GetTypeByMetadataName("System.Collections.IEnumerable") as INamedTypeSymbol;
......
......@@ -40,6 +40,7 @@ protected AbstractUseNullPropagationDiagnosticAnalyzer()
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(AnalyzeSyntax, GetSyntaxKindToAnalyze());
}
......
......@@ -41,6 +41,7 @@ protected AbstractUseObjectInitializerDiagnosticAnalyzer()
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(AnalyzeNode, GetObjectCreationSyntaxKind());
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册