|
|
@@ -16,24 +16,23 @@ namespace Microsoft.AspNetCore.Analyzers.WebApplicationBuilder;
|
|
|
[DiagnosticAnalyzer(LanguageNames.CSharp)]
|
|
|
public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
{
|
|
|
- public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(new[]
|
|
|
- {
|
|
|
+ public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(
|
|
|
DiagnosticDescriptors.DoNotUseConfigureWebHostWithConfigureHostBuilder,
|
|
|
DiagnosticDescriptors.DoNotUseConfigureWithConfigureWebHostBuilder,
|
|
|
DiagnosticDescriptors.DoNotUseUseStartupWithConfigureWebHostBuilder,
|
|
|
DiagnosticDescriptors.DoNotUseHostConfigureLogging,
|
|
|
DiagnosticDescriptors.DoNotUseHostConfigureServices,
|
|
|
DiagnosticDescriptors.DisallowConfigureAppConfigureHostBuilder
|
|
|
- });
|
|
|
+ );
|
|
|
|
|
|
public override void Initialize(AnalysisContext context)
|
|
|
{
|
|
|
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
|
|
|
context.EnableConcurrentExecution();
|
|
|
|
|
|
- context.RegisterCompilationStartAction(compilationStartAnalysisContext =>
|
|
|
+ context.RegisterCompilationStartAction(context =>
|
|
|
{
|
|
|
- var compilation = compilationStartAnalysisContext.Compilation;
|
|
|
+ var compilation = context.Compilation;
|
|
|
if (!WellKnownTypes.TryCreate(compilation, out var wellKnownTypes))
|
|
|
{
|
|
|
Debug.Fail("One or more types could not be found. This usually means you are bad at spelling C# type names.");
|
|
|
@@ -66,22 +65,22 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
};
|
|
|
INamedTypeSymbol[] configureHostTypes = { wellKnownTypes.ConfigureHostBuilder };
|
|
|
|
|
|
- compilationStartAnalysisContext.RegisterOperationAction(operationAnalysisContext =>
|
|
|
+ context.RegisterOperationAction(context =>
|
|
|
{
|
|
|
- var invocation = (IInvocationOperation)operationAnalysisContext.Operation;
|
|
|
+ var invocation = (IInvocationOperation)context.Operation;
|
|
|
var targetMethod = invocation.TargetMethod;
|
|
|
|
|
|
// var builder = WebApplication.CreateBuilder();
|
|
|
// builder.Host.ConfigureWebHost(x => {});
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureHostBuilder,
|
|
|
"ConfigureWebHost",
|
|
|
configureWebHostTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DoNotUseConfigureWebHostWithConfigureHostBuilder,
|
|
|
invocation));
|
|
|
@@ -90,14 +89,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
// var builder = WebApplication.CreateBuilder();
|
|
|
// builder.WebHost.Configure(x => {});
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureWebHostBuilder,
|
|
|
"Configure",
|
|
|
configureTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DoNotUseConfigureWithConfigureWebHostBuilder,
|
|
|
invocation));
|
|
|
@@ -106,14 +105,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
// var builder = WebApplication.CreateBuilder();
|
|
|
// builder.WebHost.UseStartup<Startup>();
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureWebHostBuilder,
|
|
|
"UseStartup",
|
|
|
userStartupTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DoNotUseUseStartupWithConfigureWebHostBuilder,
|
|
|
invocation));
|
|
|
@@ -122,14 +121,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
//var builder = WebApplication.CreateBuilder(args);
|
|
|
//builder.Host.ConfigureLogging(x => {})
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureHostBuilder,
|
|
|
"ConfigureLogging",
|
|
|
configureLoggingTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DoNotUseHostConfigureLogging,
|
|
|
invocation));
|
|
|
@@ -138,14 +137,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
//var builder = WebApplication.CreateBuilder(args);
|
|
|
//builder.WebHost.ConfigureLogging(x => {})
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureWebHostBuilder,
|
|
|
"ConfigureLogging",
|
|
|
configureLoggingTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DoNotUseHostConfigureLogging,
|
|
|
invocation));
|
|
|
@@ -154,14 +153,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
// var builder = WebApplication.CreateBuilder(args);
|
|
|
// builder.Host.ConfigureServices(x => {});
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureHostBuilder,
|
|
|
"ConfigureServices",
|
|
|
configureServicesTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DoNotUseHostConfigureServices,
|
|
|
invocation));
|
|
|
@@ -170,14 +169,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
// var builder = WebApplication.CreateBuilder(args);
|
|
|
// builder.WebHost.ConfigureServices(x => {});
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureWebHostBuilder,
|
|
|
"ConfigureServices",
|
|
|
configureServicesTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DoNotUseHostConfigureServices,
|
|
|
invocation));
|
|
|
@@ -186,14 +185,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
// var builder = WebApplication.CreateBuilder();
|
|
|
// builder.WebHost.ConfigureAppConfiguration(builder => {});
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureWebHostBuilder,
|
|
|
"ConfigureAppConfiguration",
|
|
|
configureAppTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DisallowConfigureAppConfigureHostBuilder,
|
|
|
invocation));
|
|
|
@@ -202,14 +201,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
// var builder = WebApplication.CreateBuilder();
|
|
|
// builder.Host.ConfigureAppConfiguration(builder => {});
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureHostBuilder,
|
|
|
"ConfigureAppConfiguration",
|
|
|
configureAppTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DisallowConfigureAppConfigureHostBuilder,
|
|
|
invocation));
|
|
|
@@ -218,14 +217,14 @@ public class WebApplicationBuilderAnalyzer : DiagnosticAnalyzer
|
|
|
// var builder = WebApplication.CreateBuilder();
|
|
|
// builder.Host.ConfigureHostConfiguration(builder => {});
|
|
|
if (IsDisallowedMethod(
|
|
|
- operationAnalysisContext,
|
|
|
+ context,
|
|
|
invocation,
|
|
|
targetMethod,
|
|
|
wellKnownTypes.ConfigureHostBuilder,
|
|
|
"ConfigureHostConfiguration",
|
|
|
configureHostTypes))
|
|
|
{
|
|
|
- operationAnalysisContext.ReportDiagnostic(
|
|
|
+ context.ReportDiagnostic(
|
|
|
CreateDiagnostic(
|
|
|
DiagnosticDescriptors.DisallowConfigureAppConfigureHostBuilder,
|
|
|
invocation));
|