From 60cb3bb5c47eb681bfc66b2c0c53122ce3d864ee Mon Sep 17 00:00:00 2001
From: Youssef Victor <31348972+Youssef1313@users.noreply.github.com>
Date: Thu, 13 Aug 2020 23:49:47 +0200
Subject: [PATCH] Fix warnings in analyzer packages (#24837)
---
Directory.Build.props | 3 ---
src/Components/Analyzers/src/ComponentFacts.cs | 8 ++++----
.../src/ComponentInternalUsageDiagnosticAnalzyer.cs | 1 +
.../Analyzers/src/ComponentParameterAnalyzer.cs | 2 ++
.../Analyzers/src/ComponentParameterUsageAnalyzer.cs | 1 +
src/Components/Analyzers/src/InternalUsageAnalyzer.cs | 4 ++--
src/Mvc/Mvc.Analyzers/src/CodeAnalysisExtensions.cs | 6 +++---
src/Mvc/Mvc.Analyzers/src/MvcFacts.cs | 2 +-
.../Mvc.Analyzers/src/TagHelpersInCodeBlocksAnalyzer.cs | 3 ++-
.../Mvc.Analyzers/src/TopLevelParameterNameAnalyzer.cs | 2 +-
src/Mvc/Mvc.Analyzers/src/ViewFeatureAnalyzerBase.cs | 2 ++
src/Mvc/Mvc.Analyzers/src/ViewFeaturesAnalyzerContext.cs | 2 +-
.../src/ActualApiResponseMetadataFactory.cs | 4 ++--
.../src/AddResponseTypeAttributeCodeFixAction.cs | 6 +++---
...onsDoNotRequireExplicitModelValidationCheckAnalyzer.cs | 2 +-
15 files changed, 26 insertions(+), 22 deletions(-)
diff --git a/Directory.Build.props b/Directory.Build.props
index bc09f78c3a..520064f60c 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -100,9 +100,6 @@
$(WarningsNotAsErrors);xUnit1004
-
-
- $(NoWarn);RS1024;RS1025;RS1026
diff --git a/src/Components/Analyzers/src/ComponentFacts.cs b/src/Components/Analyzers/src/ComponentFacts.cs
index 75403ce282..a8b24b37be 100644
--- a/src/Components/Analyzers/src/ComponentFacts.cs
+++ b/src/Components/Analyzers/src/ComponentFacts.cs
@@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Components.Analyzers
return property.GetAttributes().Any(a =>
{
- return a.AttributeClass == symbols.ParameterAttribute || a.AttributeClass == symbols.CascadingParameterAttribute;
+ return SymbolEqualityComparer.Default.Equals(a.AttributeClass, symbols.ParameterAttribute) || SymbolEqualityComparer.Default.Equals(a.AttributeClass, symbols.CascadingParameterAttribute);
});
}
@@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Components.Analyzers
throw new ArgumentNullException(nameof(property));
}
- return property.GetAttributes().Any(a => a.AttributeClass == symbols.ParameterAttribute);
+ return property.GetAttributes().Any(a => SymbolEqualityComparer.Default.Equals(a.AttributeClass, symbols.ParameterAttribute));
}
public static bool IsParameterWithCaptureUnmatchedValues(ComponentSymbols symbols, IPropertySymbol property)
@@ -55,7 +55,7 @@ namespace Microsoft.AspNetCore.Components.Analyzers
throw new ArgumentNullException(nameof(property));
}
- var attribute = property.GetAttributes().FirstOrDefault(a => a.AttributeClass == symbols.ParameterAttribute);
+ var attribute = property.GetAttributes().FirstOrDefault(a => SymbolEqualityComparer.Default.Equals(a.AttributeClass, symbols.ParameterAttribute));
if (attribute == null)
{
return false;
@@ -84,7 +84,7 @@ namespace Microsoft.AspNetCore.Components.Analyzers
throw new ArgumentNullException(nameof(property));
}
- return property.GetAttributes().Any(a => a.AttributeClass == symbols.CascadingParameterAttribute);
+ return property.GetAttributes().Any(a => SymbolEqualityComparer.Default.Equals(a.AttributeClass, symbols.CascadingParameterAttribute));
}
public static bool IsComponent(ComponentSymbols symbols, Compilation compilation, INamedTypeSymbol type)
diff --git a/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs b/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
index b1b5724cb3..f1a598a9c5 100644
--- a/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
+++ b/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
@@ -30,6 +30,7 @@ namespace Microsoft.Extensions.Internal
public override void Initialize(AnalysisContext context)
{
+ context.EnableConcurrentExecution();
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
_inner.Register(context);
diff --git a/src/Components/Analyzers/src/ComponentParameterAnalyzer.cs b/src/Components/Analyzers/src/ComponentParameterAnalyzer.cs
index c6d8670dcb..43ad2b77d1 100644
--- a/src/Components/Analyzers/src/ComponentParameterAnalyzer.cs
+++ b/src/Components/Analyzers/src/ComponentParameterAnalyzer.cs
@@ -29,6 +29,8 @@ namespace Microsoft.AspNetCore.Components.Analyzers
public override void Initialize(AnalysisContext context)
{
+ context.EnableConcurrentExecution();
+ context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
context.RegisterCompilationStartAction(context =>
{
if (!ComponentSymbols.TryCreate(context.Compilation, out var symbols))
diff --git a/src/Components/Analyzers/src/ComponentParameterUsageAnalyzer.cs b/src/Components/Analyzers/src/ComponentParameterUsageAnalyzer.cs
index 8df3167b83..527ea0372b 100644
--- a/src/Components/Analyzers/src/ComponentParameterUsageAnalyzer.cs
+++ b/src/Components/Analyzers/src/ComponentParameterUsageAnalyzer.cs
@@ -25,6 +25,7 @@ namespace Microsoft.AspNetCore.Components.Analyzers
public override void Initialize(AnalysisContext context)
{
+ context.EnableConcurrentExecution();
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
context.RegisterCompilationStartAction(context =>
{
diff --git a/src/Components/Analyzers/src/InternalUsageAnalyzer.cs b/src/Components/Analyzers/src/InternalUsageAnalyzer.cs
index af77a42ecc..d9ac0a155d 100644
--- a/src/Components/Analyzers/src/InternalUsageAnalyzer.cs
+++ b/src/Components/Analyzers/src/InternalUsageAnalyzer.cs
@@ -126,7 +126,7 @@ namespace Microsoft.Extensions.Internal
// Similar logic here to VisitDeclarationSymbol, keep these in sync.
private void VisitOperationSymbol(OperationAnalysisContext context, ISymbol symbol)
{
- if (symbol == null || symbol.ContainingAssembly == context.Compilation.Assembly)
+ if (symbol == null || SymbolEqualityComparer.Default.Equals(symbol.ContainingAssembly, context.Compilation.Assembly))
{
// The type is being referenced within the same assembly. This is valid use of an "internal" type
return;
@@ -155,7 +155,7 @@ namespace Microsoft.Extensions.Internal
// Similar logic here to VisitOperationSymbol, keep these in sync.
private void VisitDeclarationSymbol(SymbolAnalysisContext context, ISymbol symbol, ISymbol symbolForDiagnostic)
{
- if (symbol == null || symbol.ContainingAssembly == context.Compilation.Assembly)
+ if (symbol == null || SymbolEqualityComparer.Default.Equals(symbol.ContainingAssembly, context.Compilation.Assembly))
{
// This is part of the compilation, avoid this analyzer when building from source.
return;
diff --git a/src/Mvc/Mvc.Analyzers/src/CodeAnalysisExtensions.cs b/src/Mvc/Mvc.Analyzers/src/CodeAnalysisExtensions.cs
index 2da40500b8..186083aca1 100644
--- a/src/Mvc/Mvc.Analyzers/src/CodeAnalysisExtensions.cs
+++ b/src/Mvc/Mvc.Analyzers/src/CodeAnalysisExtensions.cs
@@ -97,7 +97,7 @@ namespace Microsoft.CodeAnalysis
source = source ?? throw new ArgumentNullException(nameof(source));
target = target ?? throw new ArgumentNullException(nameof(target));
- if (source == target)
+ if (SymbolEqualityComparer.Default.Equals(source, target))
{
return true;
}
@@ -106,7 +106,7 @@ namespace Microsoft.CodeAnalysis
{
foreach (var @interface in target.AllInterfaces)
{
- if (source == @interface)
+ if (SymbolEqualityComparer.Default.Equals(source, @interface))
{
return true;
}
@@ -117,7 +117,7 @@ namespace Microsoft.CodeAnalysis
foreach (var type in target.GetTypeHierarchy())
{
- if (source == type)
+ if (SymbolEqualityComparer.Default.Equals(source, type))
{
return true;
}
diff --git a/src/Mvc/Mvc.Analyzers/src/MvcFacts.cs b/src/Mvc/Mvc.Analyzers/src/MvcFacts.cs
index 7991bb6ff9..e97439897f 100644
--- a/src/Mvc/Mvc.Analyzers/src/MvcFacts.cs
+++ b/src/Mvc/Mvc.Analyzers/src/MvcFacts.cs
@@ -141,7 +141,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
}
var implementedMethod = method.ContainingType.FindImplementationForInterfaceMember(disposableDispose);
- return implementedMethod == method;
+ return SymbolEqualityComparer.Default.Equals(implementedMethod, method);
}
}
}
diff --git a/src/Mvc/Mvc.Analyzers/src/TagHelpersInCodeBlocksAnalyzer.cs b/src/Mvc/Mvc.Analyzers/src/TagHelpersInCodeBlocksAnalyzer.cs
index 9cf680f2e4..e14350ec1b 100644
--- a/src/Mvc/Mvc.Analyzers/src/TagHelpersInCodeBlocksAnalyzer.cs
+++ b/src/Mvc/Mvc.Analyzers/src/TagHelpersInCodeBlocksAnalyzer.cs
@@ -24,6 +24,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
public override void Initialize(AnalysisContext context)
{
+ context.EnableConcurrentExecution();
// Generated Razor code is considered auto generated. By default analyzers skip over auto-generated code unless we say otherwise.
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
context.RegisterCompilationStartAction(context =>
@@ -105,7 +106,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
private bool IsTagHelperRunnerRunAsync(IMethodSymbol method, SymbolCache symbolCache)
{
- if (method != symbolCache.TagHelperRunnerRunAsyncMethodSymbol)
+ if (!SymbolEqualityComparer.Default.Equals(method, symbolCache.TagHelperRunnerRunAsyncMethodSymbol))
{
return false;
}
diff --git a/src/Mvc/Mvc.Analyzers/src/TopLevelParameterNameAnalyzer.cs b/src/Mvc/Mvc.Analyzers/src/TopLevelParameterNameAnalyzer.cs
index 2d391f55c8..9de0b3dd17 100644
--- a/src/Mvc/Mvc.Analyzers/src/TopLevelParameterNameAnalyzer.cs
+++ b/src/Mvc/Mvc.Analyzers/src/TopLevelParameterNameAnalyzer.cs
@@ -152,7 +152,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
foreach (var attribute in symbol.GetAttributes(symbolCache.IModelNameProvider))
{
// BindAttribute uses the Prefix property as an alias for IModelNameProvider.Name
- var nameProperty = attribute.AttributeClass == symbolCache.BindAttribute ? "Prefix" : "Name";
+ var nameProperty = SymbolEqualityComparer.Default.Equals(attribute.AttributeClass, symbolCache.BindAttribute) ? "Prefix" : "Name";
// All of the built-in attributes (FromQueryAttribute, ModelBinderAttribute etc) only support setting the name via
// a property. We'll ignore constructor values.
diff --git a/src/Mvc/Mvc.Analyzers/src/ViewFeatureAnalyzerBase.cs b/src/Mvc/Mvc.Analyzers/src/ViewFeatureAnalyzerBase.cs
index bade87c8a4..45df7c7ffb 100644
--- a/src/Mvc/Mvc.Analyzers/src/ViewFeatureAnalyzerBase.cs
+++ b/src/Mvc/Mvc.Analyzers/src/ViewFeatureAnalyzerBase.cs
@@ -21,6 +21,8 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
public sealed override void Initialize(AnalysisContext context)
{
+ context.EnableConcurrentExecution();
+ context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
context.RegisterCompilationStartAction(compilationContext =>
{
var analyzerContext = new ViewFeaturesAnalyzerContext(compilationContext);
diff --git a/src/Mvc/Mvc.Analyzers/src/ViewFeaturesAnalyzerContext.cs b/src/Mvc/Mvc.Analyzers/src/ViewFeaturesAnalyzerContext.cs
index 6fe12d0b3d..221d077c63 100644
--- a/src/Mvc/Mvc.Analyzers/src/ViewFeaturesAnalyzerContext.cs
+++ b/src/Mvc/Mvc.Analyzers/src/ViewFeaturesAnalyzerContext.cs
@@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
return false;
}
- if (method.ContainingType != HtmlHelperPartialExtensionsType)
+ if (!SymbolEqualityComparer.Default.Equals(method.ContainingType, HtmlHelperPartialExtensionsType))
{
return false;
}
diff --git a/src/Mvc/Mvc.Api.Analyzers/src/ActualApiResponseMetadataFactory.cs b/src/Mvc/Mvc.Api.Analyzers/src/ActualApiResponseMetadataFactory.cs
index 7ae878a51e..58d75a9944 100644
--- a/src/Mvc/Mvc.Api.Analyzers/src/ActualApiResponseMetadataFactory.cs
+++ b/src/Mvc/Mvc.Api.Analyzers/src/ActualApiResponseMetadataFactory.cs
@@ -281,14 +281,14 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
for (var i = 0; i < property.ExplicitInterfaceImplementations.Length; i++)
{
- if (property.ExplicitInterfaceImplementations[i] == statusCodeActionResultStatusProperty)
+ if (SymbolEqualityComparer.Default.Equals(property.ExplicitInterfaceImplementations[i], statusCodeActionResultStatusProperty))
{
return true;
}
}
var implementedProperty = property.ContainingType.FindImplementationForInterfaceMember(statusCodeActionResultStatusProperty);
- return implementedProperty == property;
+ return SymbolEqualityComparer.Default.Equals(implementedProperty, property);
}
private static bool HasAttributeNamed(ISymbol symbol, string attributeName)
diff --git a/src/Mvc/Mvc.Api.Analyzers/src/AddResponseTypeAttributeCodeFixAction.cs b/src/Mvc/Mvc.Api.Analyzers/src/AddResponseTypeAttributeCodeFixAction.cs
index d285e892cd..3ef2919686 100644
--- a/src/Mvc/Mvc.Api.Analyzers/src/AddResponseTypeAttributeCodeFixAction.cs
+++ b/src/Mvc/Mvc.Api.Analyzers/src/AddResponseTypeAttributeCodeFixAction.cs
@@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
AttributeSyntax attributeSyntax;
bool addUsing;
- if (statusCode >= 400 && returnType != null && returnType != errorResponseType)
+ if (statusCode >= 400 && returnType != null && !SymbolEqualityComparer.Default.Equals(returnType, errorResponseType))
{
// If a returnType was discovered and is different from the errorResponseType, use it in the result.
attributeSyntax = CreateProducesResponseTypeAttribute(context, statusCode, returnType, out addUsing);
@@ -86,7 +86,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
addUsingDirective |= addUsing;
}
- if (!declaredResponseMetadata.Any(m => m.IsDefault && m.AttributeSource == context.Method))
+ if (!declaredResponseMetadata.Any(m => m.IsDefault && SymbolEqualityComparer.Default.Equals(m.AttributeSource, context.Method)))
{
// Add a ProducesDefaultResponseTypeAttribute if the method does not already have one.
documentEditor.AddAttribute(context.MethodSyntax, CreateProducesDefaultResponseTypeAttribute());
@@ -200,7 +200,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
foreach (var metadata in actualResponseMetadata)
{
if (DeclaredApiResponseMetadata.TryGetDeclaredMetadata(declaredResponseMetadata, metadata, result: out var declaredMetadata) &&
- declaredMetadata.AttributeSource == context.Method)
+ SymbolEqualityComparer.Default.Equals(declaredMetadata.AttributeSource, context.Method))
{
// A ProducesResponseType attribute is declared on the method for the current status code.
continue;
diff --git a/src/Mvc/Mvc.Api.Analyzers/src/ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs b/src/Mvc/Mvc.Api.Analyzers/src/ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs
index d884ed3504..b1f52a8c78 100644
--- a/src/Mvc/Mvc.Api.Analyzers/src/ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs
+++ b/src/Mvc/Mvc.Api.Analyzers/src/ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs
@@ -199,7 +199,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
return false;
}
- if (propertyReference.Member.ContainingType != symbolCache.ModelStateDictionary)
+ if (!SymbolEqualityComparer.Default.Equals(propertyReference.Member.ContainingType, symbolCache.ModelStateDictionary))
{
return false;
}