Skip to content

Commit a4ffd4f

Browse files
authored
Merge pull request #5252 from Youssef1313/cleanup
General cleanup
2 parents 8d27b16 + e407040 commit a4ffd4f

17 files changed

+61
-122
lines changed

src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,8 @@ public override void Initialize(AnalysisContext context)
4949

5050
private static void OnCompilationStart(CompilationStartAnalysisContext context)
5151
{
52-
INamedTypeSymbol? objectType = context.Compilation.GetSpecialType(SpecialType.System_Object);
5352
INamedTypeSymbol? equatableType = context.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemIEquatable1);
54-
if (objectType != null && equatableType != null)
53+
if (equatableType != null)
5554
{
5655
context.RegisterSymbolAction(c => AnalyzeSymbol(c, equatableType), SymbolKind.NamedType);
5756
}

src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,14 @@ public override void Initialize(AnalysisContext context)
4343

4444
context.RegisterCompilationStartAction(c =>
4545
{
46-
INamedTypeSymbol? @string = c.Compilation.GetSpecialType(SpecialType.System_String);
4746
INamedTypeSymbol? uri = c.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemUri);
48-
if (@string == null || uri == null)
47+
if (uri == null)
4948
{
5049
// we don't have required types
5150
return;
5251
}
5352

54-
var analyzer = new PerCompilationAnalyzer(c.Compilation, @string, uri, GetInvocationExpression);
53+
var analyzer = new PerCompilationAnalyzer(c.Compilation, uri, GetInvocationExpression);
5554
c.RegisterOperationAction(analyzer.Analyze, OperationKind.Invocation);
5655
});
5756
}
@@ -62,18 +61,15 @@ private sealed class PerCompilationAnalyzer
6261
{
6362
// this type will be created per compilation
6463
private readonly Compilation _compilation;
65-
private readonly INamedTypeSymbol _string;
6664
private readonly INamedTypeSymbol _uri;
6765
private readonly Func<SyntaxNode, SyntaxNode?> _expressionGetter;
6866

6967
public PerCompilationAnalyzer(
7068
Compilation compilation,
71-
INamedTypeSymbol @string,
7269
INamedTypeSymbol uri,
7370
Func<SyntaxNode, SyntaxNode?> expressionGetter)
7471
{
7572
_compilation = compilation;
76-
_string = @string;
7773
_uri = uri;
7874
_expressionGetter = expressionGetter;
7975
}
@@ -105,7 +101,7 @@ public void Analyze(OperationAnalysisContext context)
105101
return;
106102
}
107103

108-
var stringParameters = method.Parameters.GetParametersOfType(_string);
104+
var stringParameters = method.Parameters.GetParametersOfType(SpecialType.System_String);
109105
if (!stringParameters.Any())
110106
{
111107
// no string parameter. not interested.

src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,26 @@ public override void Initialize(AnalysisContext context)
4141

4242
context.RegisterCompilationStartAction(c =>
4343
{
44-
var @string = c.Compilation.GetSpecialType(SpecialType.System_String);
4544
var uri = c.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemUri);
4645
var attribute = c.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemAttribute);
47-
if (@string == null || uri == null || attribute == null)
46+
if (uri == null || attribute == null)
4847
{
4948
// we don't have required types
5049
return;
5150
}
5251

53-
var analyzer = new PerCompilationAnalyzer(@string, uri, attribute);
52+
var analyzer = new PerCompilationAnalyzer(uri, attribute);
5453
c.RegisterSymbolAction(analyzer.Analyze, SymbolKind.Method);
5554
});
5655
}
5756

5857
private class PerCompilationAnalyzer
5958
{
60-
private readonly INamedTypeSymbol _string;
6159
private readonly INamedTypeSymbol _uri;
6260
private readonly INamedTypeSymbol _attribute;
6361

64-
public PerCompilationAnalyzer(INamedTypeSymbol @string, INamedTypeSymbol uri, INamedTypeSymbol attribute)
62+
public PerCompilationAnalyzer(INamedTypeSymbol uri, INamedTypeSymbol attribute)
6563
{
66-
_string = @string;
6764
_uri = uri;
6865
_attribute = attribute;
6966
}
@@ -87,7 +84,7 @@ public void Analyze(SymbolAnalysisContext context)
8784
return;
8885
}
8986

90-
var stringParameters = method.Parameters.GetParametersOfType(_string);
87+
var stringParameters = method.Parameters.GetParametersOfType(SpecialType.System_String);
9188
if (!stringParameters.Any())
9289
{
9390
// no string parameter. not interested.

src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,24 @@ public override void Initialize(AnalysisContext context)
4040

4141
context.RegisterCompilationStartAction(c =>
4242
{
43-
var @string = c.Compilation.GetSpecialType(SpecialType.System_String);
4443
var attribute = c.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemAttribute);
45-
if (@string == null || attribute == null)
44+
if (attribute == null)
4645
{
4746
// we don't have required types
4847
return;
4948
}
5049

51-
var analyzer = new PerCompilationAnalyzer(@string, attribute);
50+
var analyzer = new PerCompilationAnalyzer(attribute);
5251
c.RegisterSymbolAction(analyzer.Analyze, SymbolKind.Property);
5352
});
5453
}
5554

5655
private class PerCompilationAnalyzer
5756
{
58-
private readonly INamedTypeSymbol _string;
5957
private readonly INamedTypeSymbol _attribute;
6058

61-
public PerCompilationAnalyzer(INamedTypeSymbol @string, INamedTypeSymbol attribute)
59+
public PerCompilationAnalyzer(INamedTypeSymbol attribute)
6260
{
63-
_string = @string;
6461
_attribute = attribute;
6562
}
6663

@@ -83,7 +80,7 @@ public void Analyze(SymbolAnalysisContext context)
8380
return;
8481
}
8582

86-
if (property.Type?.Equals(_string) != true)
83+
if (property.Type?.SpecialType != SpecialType.System_String)
8784
{
8885
// not expected type
8986
return;

src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,24 @@ public override void Initialize(AnalysisContext context)
4040

4141
context.RegisterCompilationStartAction(c =>
4242
{
43-
var @string = c.Compilation.GetSpecialType(SpecialType.System_String);
4443
var uri = c.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemUri);
45-
if (@string == null || uri == null)
44+
if (uri == null)
4645
{
4746
// we don't have required types
4847
return;
4948
}
5049

51-
var analyzer = new PerCompilationAnalyzer(@string, uri);
50+
var analyzer = new PerCompilationAnalyzer(uri);
5251
c.RegisterSymbolAction(analyzer.Analyze, SymbolKind.Method);
5352
});
5453
}
5554

5655
private class PerCompilationAnalyzer
5756
{
58-
private readonly INamedTypeSymbol _string;
5957
private readonly INamedTypeSymbol _uri;
6058

61-
public PerCompilationAnalyzer(INamedTypeSymbol @string, INamedTypeSymbol uri)
59+
public PerCompilationAnalyzer(INamedTypeSymbol uri)
6260
{
63-
_string = @string;
6461
_uri = uri;
6562
}
6663

@@ -83,7 +80,7 @@ public void Analyze(SymbolAnalysisContext context)
8380
return;
8481
}
8582

86-
if (method.IsAccessorMethod() || method.ReturnType?.Equals(_string) != true)
83+
if (method.IsAccessorMethod() || method.ReturnType?.SpecialType != SpecialType.System_String)
8784
{
8885
// return type must be string and it must be not an accessor method
8986
return;

src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.Fixer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System.Threading;
77
using System.Threading.Tasks;
88
using Analyzer.Utilities;
9-
using Analyzer.Utilities.Extensions;
109
using Microsoft.CodeAnalysis;
1110
using Microsoft.CodeAnalysis.CodeFixes;
1211
using Microsoft.CodeAnalysis.Editing;
@@ -51,7 +50,7 @@ private static async Task<Document> ConvertToArrayEmptyAsync(Document document,
5150
SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);
5251
SyntaxGenerator generator = editor.Generator;
5352

54-
INamedTypeSymbol? arrayTypeSymbol = semanticModel.Compilation.GetOrCreateTypeByMetadataName(AvoidZeroLengthArrayAllocationsAnalyzer.ArrayTypeName);
53+
INamedTypeSymbol? arrayTypeSymbol = semanticModel.Compilation.GetSpecialType(SpecialType.System_Array);
5554
if (arrayTypeSymbol == null)
5655
{
5756
return document;

src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ public abstract class AvoidZeroLengthArrayAllocationsAnalyzer : DiagnosticAnalyz
1818
{
1919
internal const string RuleId = "CA1825";
2020

21-
/// <summary>The name of the array type.</summary>
22-
internal const string ArrayTypeName = "System.Array"; // using instead of GetSpecialType to make more testable
23-
2421
/// <summary>The name of the Empty method on System.Array.</summary>
2522
internal const string ArrayEmptyMethodName = "Empty";
2623

@@ -52,24 +49,24 @@ public sealed override void Initialize(AnalysisContext context)
5249
// Only if it is, register the syntax node action provided by the derived implementations.
5350
context.RegisterCompilationStartAction(ctx =>
5451
{
55-
INamedTypeSymbol? typeSymbol = ctx.Compilation.GetOrCreateTypeByMetadataName(ArrayTypeName);
56-
if (typeSymbol != null && typeSymbol.DeclaredAccessibility == Accessibility.Public)
52+
INamedTypeSymbol typeSymbol = ctx.Compilation.GetSpecialType(SpecialType.System_Array);
53+
if (typeSymbol.DeclaredAccessibility == Accessibility.Public)
5754
{
5855
if (typeSymbol.GetMembers(ArrayEmptyMethodName).FirstOrDefault() is IMethodSymbol methodSymbol && methodSymbol.DeclaredAccessibility == Accessibility.Public &&
59-
methodSymbol.IsStatic && methodSymbol.Arity == 1 && methodSymbol.Parameters.IsEmpty)
56+
methodSymbol.IsStatic && methodSymbol.Arity == 1 && methodSymbol.Parameters.IsEmpty)
6057
{
61-
ctx.RegisterOperationAction(AnalyzeOperation, OperationKind.ArrayCreation);
58+
ctx.RegisterOperationAction(c => AnalyzeOperation(c, methodSymbol), OperationKind.ArrayCreation);
6259
}
6360
}
6461
});
6562
}
6663

67-
private void AnalyzeOperation(OperationAnalysisContext context)
64+
private void AnalyzeOperation(OperationAnalysisContext context, IMethodSymbol arrayEmptyMethodSymbol)
6865
{
69-
AnalyzeOperation(context, IsAttributeSyntax);
66+
AnalyzeOperation(context, arrayEmptyMethodSymbol, IsAttributeSyntax);
7067
}
7168

72-
private static void AnalyzeOperation(OperationAnalysisContext context, Func<SyntaxNode, bool> isAttributeSytnax)
69+
private static void AnalyzeOperation(OperationAnalysisContext context, IMethodSymbol arrayEmptyMethodSymbol, Func<SyntaxNode, bool> isAttributeSytnax)
7370
{
7471
IArrayCreationOperation arrayCreationExpression = (IArrayCreationOperation)context.Operation;
7572

@@ -108,14 +105,7 @@ private static void AnalyzeOperation(OperationAnalysisContext context, Func<Synt
108105

109106
if (elementType.TypeKind != TypeKind.Pointer)
110107
{
111-
var arrayType = context.Compilation.GetOrCreateTypeByMetadataName(ArrayTypeName);
112-
if (arrayType == null)
113-
{
114-
return;
115-
}
116-
117-
IMethodSymbol emptyMethod = (IMethodSymbol)arrayType.GetMembers(ArrayEmptyMethodName).First();
118-
var constructed = emptyMethod.Construct(elementType);
108+
var constructed = arrayEmptyMethodSymbol.Construct(elementType);
119109

120110
string typeName = constructed.ToDisplayString(ReportFormat);
121111
context.ReportDiagnostic(arrayCreationExpression.Syntax.CreateDiagnostic(UseArrayEmptyDescriptor, typeName));

src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,6 @@ public override void Initialize(AnalysisContext context)
5353
{
5454
var objectType = compilationStartContext.Compilation.GetSpecialType(SpecialType.System_Object);
5555

56-
if (objectType == null)
57-
{
58-
return;
59-
}
60-
6156
var objectObjectParameters = new[]
6257
{
6358
ParameterInfo.GetParameterInfo(objectType),

src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@ public sealed class NormalizeStringsToUppercaseAnalyzer : AbstractGlobalizationD
4141
protected override void InitializeWorker(CompilationStartAnalysisContext context)
4242
{
4343
var stringType = context.Compilation.GetSpecialType(SpecialType.System_String);
44-
if (stringType == null)
45-
{
46-
return;
47-
}
4844

4945
var cultureInfo = context.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemGlobalizationCultureInfo);
5046
var invariantCulture = cultureInfo?.GetMembers("InvariantCulture").OfType<IPropertySymbol>().FirstOrDefault();

src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public override void Initialize(AnalysisContext context)
3838
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
3939
context.RegisterCompilationStartAction(context =>
4040
{
41-
if (!context.Compilation.TryGetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemString, out INamedTypeSymbol? stringType) ||
42-
!context.Compilation.TryGetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemChar, out INamedTypeSymbol? charType) ||
41+
if (context.Compilation.GetSpecialType(SpecialType.System_String) is not INamedTypeSymbol stringType ||
42+
context.Compilation.GetSpecialType(SpecialType.System_Char) is not INamedTypeSymbol charType ||
4343
!context.Compilation.TryGetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemStringComparison, out INamedTypeSymbol? stringComparisonType))
4444
{
4545
return;

0 commit comments

Comments
 (0)