diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/BuildServiceProviderAnalzyer.cs b/src/Analyzers/Analyzers/src/BuildServiceProviderAnalzyer.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/BuildServiceProviderAnalzyer.cs
rename to src/Analyzers/Analyzers/src/BuildServiceProviderAnalzyer.cs
diff --git a/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj b/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj
index 2a6daa68bd..feec3324be 100644
--- a/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj
+++ b/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj
@@ -15,6 +15,7 @@
false
false
$(MSBuildProjectName).nuspec
+ Enable
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/MiddlewareAnalysis.cs b/src/Analyzers/Analyzers/src/MiddlewareAnalysis.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/MiddlewareAnalysis.cs
rename to src/Analyzers/Analyzers/src/MiddlewareAnalysis.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/MiddlewareAnalyzer.cs b/src/Analyzers/Analyzers/src/MiddlewareAnalyzer.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/MiddlewareAnalyzer.cs
rename to src/Analyzers/Analyzers/src/MiddlewareAnalyzer.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/MiddlewareItem.cs b/src/Analyzers/Analyzers/src/MiddlewareItem.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/MiddlewareItem.cs
rename to src/Analyzers/Analyzers/src/MiddlewareItem.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/OptionsAnalysis.cs b/src/Analyzers/Analyzers/src/OptionsAnalysis.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/OptionsAnalysis.cs
rename to src/Analyzers/Analyzers/src/OptionsAnalysis.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/OptionsAnalyzer.cs b/src/Analyzers/Analyzers/src/OptionsAnalyzer.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/OptionsAnalyzer.cs
rename to src/Analyzers/Analyzers/src/OptionsAnalyzer.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/OptionsFacts.cs b/src/Analyzers/Analyzers/src/OptionsFacts.cs
similarity index 88%
rename from src/Mvc/Mvc.Analyzers/src/Startup/OptionsFacts.cs
rename to src/Analyzers/Analyzers/src/OptionsFacts.cs
index da95216f73..fb89a0224d 100644
--- a/src/Mvc/Mvc.Analyzers/src/Startup/OptionsFacts.cs
+++ b/src/Analyzers/Analyzers/src/OptionsFacts.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
-using Microsoft.AspNetCore.Mvc.Analyzers;
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Analyzers
@@ -14,8 +13,8 @@ namespace Microsoft.AspNetCore.Analyzers
for (var i = 0; i < analysis.Options.Length; i++)
{
var item = analysis.Options[i];
- if (string.Equals(item.OptionsType.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat), SymbolNames.MvcOptions) &&
- string.Equals(item.Property.Name, SymbolNames.EnableEndpointRoutingProperty, StringComparison.Ordinal))
+ if (string.Equals(item.OptionsType.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat), SymbolNames.MvcOptions.MetadataName) &&
+ string.Equals(item.Property.Name, SymbolNames.MvcOptions.EnableEndpointRoutingPropertyName, StringComparison.Ordinal))
{
return item.ConstantValue as bool? == false;
}
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/OptionsItem.cs b/src/Analyzers/Analyzers/src/OptionsItem.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/OptionsItem.cs
rename to src/Analyzers/Analyzers/src/OptionsItem.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/ServicesAnalysis.cs b/src/Analyzers/Analyzers/src/ServicesAnalysis.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/ServicesAnalysis.cs
rename to src/Analyzers/Analyzers/src/ServicesAnalysis.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/ServicesAnalyzer.cs b/src/Analyzers/Analyzers/src/ServicesAnalyzer.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/ServicesAnalyzer.cs
rename to src/Analyzers/Analyzers/src/ServicesAnalyzer.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/ServicesItem.cs b/src/Analyzers/Analyzers/src/ServicesItem.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/ServicesItem.cs
rename to src/Analyzers/Analyzers/src/ServicesItem.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalysis.cs b/src/Analyzers/Analyzers/src/StartupAnalysis.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalysis.cs
rename to src/Analyzers/Analyzers/src/StartupAnalysis.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalysisBuilder.cs b/src/Analyzers/Analyzers/src/StartupAnalysisBuilder.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalysisBuilder.cs
rename to src/Analyzers/Analyzers/src/StartupAnalysisBuilder.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalyzer.Diagnostics.cs b/src/Analyzers/Analyzers/src/StartupAnalyzer.Diagnostics.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalyzer.Diagnostics.cs
rename to src/Analyzers/Analyzers/src/StartupAnalyzer.Diagnostics.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalyzer.Events.cs b/src/Analyzers/Analyzers/src/StartupAnalyzer.Events.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalyzer.Events.cs
rename to src/Analyzers/Analyzers/src/StartupAnalyzer.Events.cs
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalzyer.cs b/src/Analyzers/Analyzers/src/StartupAnalzyer.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/StartupAnalzyer.cs
rename to src/Analyzers/Analyzers/src/StartupAnalzyer.cs
diff --git a/src/Analyzers/Analyzers/src/StartupSymbols.cs b/src/Analyzers/Analyzers/src/StartupSymbols.cs
index 9b98302b46..e1beb5a74d 100644
--- a/src/Analyzers/Analyzers/src/StartupSymbols.cs
+++ b/src/Analyzers/Analyzers/src/StartupSymbols.cs
@@ -11,6 +11,7 @@ namespace Microsoft.AspNetCore.Analyzers
{
IApplicationBuilder = compilation.GetTypeByMetadataName(SymbolNames.IApplicationBuilder.MetadataName);
IServiceCollection = compilation.GetTypeByMetadataName(SymbolNames.IServiceCollection.MetadataName);
+ MvcOptions = compilation.GetTypeByMetadataName(SymbolNames.MvcOptions.MetadataName);
}
public bool HasRequiredSymbols => IApplicationBuilder != null && IServiceCollection != null;
@@ -18,5 +19,7 @@ namespace Microsoft.AspNetCore.Analyzers
public INamedTypeSymbol IApplicationBuilder { get; }
public INamedTypeSymbol IServiceCollection { get; }
+
+ public INamedTypeSymbol MvcOptions { get; }
}
}
diff --git a/src/Analyzers/Analyzers/src/SymbolNames.cs b/src/Analyzers/Analyzers/src/SymbolNames.cs
index 0442d96c75..eb544f1e67 100644
--- a/src/Analyzers/Analyzers/src/SymbolNames.cs
+++ b/src/Analyzers/Analyzers/src/SymbolNames.cs
@@ -41,5 +41,12 @@ namespace Microsoft.AspNetCore.Analyzers
public const string UseSignalRMethodName = "UseSignalR";
}
+
+ public static class MvcOptions
+ {
+ public const string MetadataName = "Microsoft.AspNetCore.Mvc.MvcOptions";
+
+ public const string EnableEndpointRoutingPropertyName = "EnableEndpointRouting";
+ }
}
}
diff --git a/src/Mvc/Mvc.Analyzers/src/Startup/UseMvcAnalyzer.cs b/src/Analyzers/Analyzers/src/UseMvcAnalyzer.cs
similarity index 100%
rename from src/Mvc/Mvc.Analyzers/src/Startup/UseMvcAnalyzer.cs
rename to src/Analyzers/Analyzers/src/UseMvcAnalyzer.cs
diff --git a/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs b/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
index dee9dd3227..9ec94add87 100644
--- a/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
+++ b/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
@@ -17,6 +17,11 @@ namespace Microsoft.AspNetCore.Analyzers
public TestSource Read(string source)
{
+ if (!source.EndsWith(".cs"))
+ {
+ source = source + ".cs";
+ }
+
var filePath = Path.Combine(ProjectDirectory, "TestFiles", GetType().Name, source);
if (!File.Exists(filePath))
{
diff --git a/src/Analyzers/Analyzers/test/AnalyzersDiagnosticAnalyzerRunner.cs b/src/Analyzers/Analyzers/test/AnalyzersDiagnosticAnalyzerRunner.cs
new file mode 100644
index 0000000000..57a8ce8a69
--- /dev/null
+++ b/src/Analyzers/Analyzers/test/AnalyzersDiagnosticAnalyzerRunner.cs
@@ -0,0 +1,31 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Analyzer.Testing;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.Diagnostics;
+
+namespace Microsoft.AspNetCore.Analyzers
+{
+ internal class AnalyzersDiagnosticAnalyzerRunner : DiagnosticAnalyzerRunner
+ {
+ public AnalyzersDiagnosticAnalyzerRunner(DiagnosticAnalyzer analyzer)
+ {
+ Analyzer = analyzer;
+ }
+
+ public DiagnosticAnalyzer Analyzer { get; }
+
+ public Task GetDiagnosticsAsync(string source)
+ {
+ return GetDiagnosticsAsync(sources: new[] { source }, Analyzer, Array.Empty());
+ }
+
+ public Task GetDiagnosticsAsync(Project project)
+ {
+ return GetDiagnosticsAsync(new[] { project }, Analyzer, Array.Empty());
+ }
+ }
+}
diff --git a/src/Mvc/Mvc.Analyzers/test/StartupAnalyzerTest.cs b/src/Analyzers/Analyzers/test/StartupAnalyzerTest.cs
similarity index 89%
rename from src/Mvc/Mvc.Analyzers/test/StartupAnalyzerTest.cs
rename to src/Analyzers/Analyzers/test/StartupAnalyzerTest.cs
index ef76ab0ff0..c471b56a56 100644
--- a/src/Mvc/Mvc.Analyzers/test/StartupAnalyzerTest.cs
+++ b/src/Analyzers/Analyzers/test/StartupAnalyzerTest.cs
@@ -1,24 +1,22 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-using System;
using System.Collections.Concurrent;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
-using Microsoft.AspNetCore.Mvc;
using Microsoft.CodeAnalysis;
using Xunit;
namespace Microsoft.AspNetCore.Analyzers
{
- public class StartupAnalyzerTest
+ public class StartupAnalyzerTest : AnalyzerTestBase
{
public StartupAnalyzerTest()
{
StartupAnalyzer = new StartupAnalzyer();
- Runner = new MvcDiagnosticAnalyzerRunner(StartupAnalyzer);
+ Runner = new AnalyzersDiagnosticAnalyzerRunner(StartupAnalyzer);
Analyses = new ConcurrentBag