Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
adamralph committed Mar 3, 2021
1 parent 80dbd6e commit 7ea6099
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 17 deletions.
14 changes: 14 additions & 0 deletions src/NServiceBus.Core.Analyzer/AnalysisContextExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace NServiceBus.Core.Analyzer
{
using Microsoft.CodeAnalysis.Diagnostics;

static class AnalysisContextExtensions
{
public static AnalysisContext WithDefaultSettings(this AnalysisContext context)
{
context.EnableConcurrentExecution();
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
return context;
}
}
}
12 changes: 5 additions & 7 deletions src/NServiceBus.Core.Analyzer/AwaitOrCaptureTasksAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@ namespace NServiceBus.Core.Analyzer
[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class AwaitOrCaptureTasksAnalyzer : DiagnosticAnalyzer
{
public const string DiagnosticId = "NSB0001";

public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(diagnostic);

public override void Initialize(AnalysisContext context)
{
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(Analyze, SyntaxKind.InvocationExpression);
}
public override void Initialize(AnalysisContext context) =>
context.WithDefaultSettings().RegisterSyntaxNodeAction(Analyze, SyntaxKind.InvocationExpression);

void Analyze(SyntaxNodeAnalysisContext context)
{
Expand Down Expand Up @@ -55,7 +53,7 @@ void Analyze(SyntaxNodeAnalysisContext context)
methods.Contains(methodSymbol.GetFullName());

static readonly DiagnosticDescriptor diagnostic = new DiagnosticDescriptor(
"NSB0001",
DiagnosticId,
"Await or assign Task",
"A Task returned by an NServiceBus method is not awaited or assigned to a variable.",
"NServiceBus.Code",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class ForwardCancellationTokenAnalyzer : DiagnosticAnalyzer
{
public const string DiagnosticId = "NSB0002";

public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(
ForwardCancellationTokenDiagnostic
);
Expand Down Expand Up @@ -56,13 +58,8 @@ public AnalysisTarget(string typeName, string methodName, string contextTypeName
}
}

public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);

context.RegisterCompilationStartAction(AnalyzeCompilationStart);
}
public override void Initialize(AnalysisContext context) =>
context.WithDefaultSettings().RegisterCompilationStartAction(AnalyzeCompilationStart);

static void AnalyzeCompilationStart(CompilationStartAnalysisContext startContext)
{
Expand Down Expand Up @@ -398,8 +395,8 @@ static bool ArgumentIsACancellationToken(SyntaxNodeAnalysisContext context, Argu

// {0} = Variable name for the IMessageHandlerContext parameter
// {1} = Name of method being invoked
internal static readonly DiagnosticDescriptor ForwardCancellationTokenDiagnostic = new DiagnosticDescriptor(
id: "NSB0002",
static readonly DiagnosticDescriptor ForwardCancellationTokenDiagnostic = new DiagnosticDescriptor(
id: DiagnosticId,
title: "Forward `context.CancellationToken` to methods",
messageFormat: "Forward `{0}.CancellationToken` to the `{1}` method.",
category: "NServiceBus.Code",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
public class ForwardCancellationTokenFixer : CodeFixProvider
{
public override ImmutableArray<string> FixableDiagnosticIds =>
ImmutableArray.Create(ForwardCancellationTokenAnalyzer.ForwardCancellationTokenDiagnostic.Id);
ImmutableArray.Create(ForwardCancellationTokenAnalyzer.DiagnosticId);

public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer;

Expand Down

0 comments on commit 7ea6099

Please sign in to comment.