Skip to content

Commit

Permalink
Merge pull request #5406 from DustinCampbell/reduce-jit-time
Browse files Browse the repository at this point in the history
  • Loading branch information
jmarolf authored Sep 2, 2021
2 parents 226c5a1 + 8478f2b commit e52a3f1
Show file tree
Hide file tree
Showing 401 changed files with 4,625 additions and 5,024 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,22 @@

namespace Microsoft.CodeAnalysis.CSharp.Analyzers
{
using static CodeAnalysisDiagnosticsResources;

[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class CSharpImmutableObjectMethodAnalyzer : DiagnosticAnalyzer
{
// Each analyzer needs a public id to identify each DiagnosticDescriptor and subsequently fix diagnostics in CodeFixProvider.cs
private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotIgnoreReturnValueOnImmutableObjectMethodInvocationTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotIgnoreReturnValueOnImmutableObjectMethodInvocationMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotIgnoreReturnValueOnImmutableObjectMethodInvocationDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));

public static readonly DiagnosticDescriptor DoNotIgnoreReturnValueDiagnosticRule = new(
DiagnosticIds.DoNotIgnoreReturnValueOnImmutableObjectMethodInvocation,
s_localizableTitle,
s_localizableMessage,
CreateLocalizableResourceString(nameof(DoNotIgnoreReturnValueOnImmutableObjectMethodInvocationTitle)),
CreateLocalizableResourceString(nameof(DoNotIgnoreReturnValueOnImmutableObjectMethodInvocationMessage)),
DiagnosticCategory.MicrosoftCodeAnalysisCorrectness,
DiagnosticSeverity.Warning,
isEnabledByDefault: true,
description: s_localizableDescription,
customTags: WellKnownDiagnosticTags.Telemetry);
description: CreateLocalizableResourceString(nameof(DoNotIgnoreReturnValueOnImmutableObjectMethodInvocationDescription)),
customTags: WellKnownDiagnosticTagsExtensions.Telemetry);

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

private const string SolutionFullName = @"Microsoft.CodeAnalysis.Solution";
private const string ProjectFullName = @"Microsoft.CodeAnalysis.Project";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information.

using System;

namespace Microsoft.CodeAnalysis.Analyzers
{
internal static partial class CodeAnalysisDiagnosticsResources
{
private static readonly Type s_resourcesType = typeof(CodeAnalysisDiagnosticsResources);

public static LocalizableResourceString CreateLocalizableResourceString(string nameOfLocalizableResource)
=> new(nameOfLocalizableResource, ResourceManager, s_resourcesType);

public static LocalizableResourceString CreateLocalizableResourceString(string nameOfLocalizableResource, params string[] formatArguments)
=> new(nameOfLocalizableResource, ResourceManager, s_resourcesType, formatArguments);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.Fixers
[ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic, Name = nameof(FixerWithFixAllFix)), Shared]
public sealed class FixerWithFixAllFix : CodeFixProvider
{
public sealed override ImmutableArray<string> FixableDiagnosticIds => ImmutableArray.Create(DiagnosticIds.OverrideGetFixAllProviderRuleId);
public sealed override ImmutableArray<string> FixableDiagnosticIds { get; } = ImmutableArray.Create(DiagnosticIds.OverrideGetFixAllProviderRuleId);

public sealed override FixAllProvider GetFixAllProvider()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

namespace Microsoft.CodeAnalysis.Analyzers.FixAnalyzers
{
using static CodeAnalysisDiagnosticsResources;

/// <summary>
/// A <see cref="CodeFixProvider"/> that intends to support fix all occurrences must classify the registered code actions into equivalence classes by assigning it an explicit, non-null equivalence key which is unique across all registered code actions by this fixer.
/// This enables the <see cref="FixAllProvider"/> to fix all diagnostics in the required scope by applying code actions from this fixer that are in the equivalence class of the trigger code action.
Expand All @@ -26,22 +28,12 @@ public sealed class FixerWithFixAllAnalyzer : DiagnosticAnalyzer
internal const string CodeFixProviderMetadataName = "Microsoft.CodeAnalysis.CodeFixes.CodeFixProvider";
internal const string GetFixAllProviderMethodName = "GetFixAllProvider";

private static readonly LocalizableString s_localizableCreateCodeActionWithEquivalenceKeyTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CreateCodeActionWithEquivalenceKeyTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableCreateCodeActionWithEquivalenceKeyMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CreateCodeActionWithEquivalenceKeyMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));

private static readonly LocalizableString s_localizableOverrideCodeActionEquivalenceKeyTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideCodeActionEquivalenceKeyTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableOverrideCodeActionEquivalenceKeyMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideCodeActionEquivalenceKeyMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));

private static readonly LocalizableString s_localizableOverrideGetFixAllProviderTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableOverrideGetFixAllProviderMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));

private static readonly LocalizableString s_localizableCodeActionNeedsEquivalenceKeyDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CodeActionNeedsEquivalenceKeyDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableOverrideGetFixAllProviderDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableCodeActionNeedsEquivalenceKeyDescription = CreateLocalizableResourceString(nameof(CodeActionNeedsEquivalenceKeyDescription));

internal static readonly DiagnosticDescriptor CreateCodeActionEquivalenceKeyRule = new(
DiagnosticIds.CreateCodeActionWithEquivalenceKeyRuleId,
s_localizableCreateCodeActionWithEquivalenceKeyTitle,
s_localizableCreateCodeActionWithEquivalenceKeyMessage,
CreateLocalizableResourceString(nameof(CreateCodeActionWithEquivalenceKeyTitle)),
CreateLocalizableResourceString(nameof(CreateCodeActionWithEquivalenceKeyMessage)),
"Correctness",
DiagnosticSeverity.Warning,
description: s_localizableCodeActionNeedsEquivalenceKeyDescription,
Expand All @@ -50,8 +42,8 @@ public sealed class FixerWithFixAllAnalyzer : DiagnosticAnalyzer

internal static readonly DiagnosticDescriptor OverrideCodeActionEquivalenceKeyRule = new(
DiagnosticIds.OverrideCodeActionEquivalenceKeyRuleId,
s_localizableOverrideCodeActionEquivalenceKeyTitle,
s_localizableOverrideCodeActionEquivalenceKeyMessage,
CreateLocalizableResourceString(nameof(OverrideCodeActionEquivalenceKeyTitle)),
CreateLocalizableResourceString(nameof(OverrideCodeActionEquivalenceKeyMessage)),
"Correctness",
DiagnosticSeverity.Warning,
description: s_localizableCodeActionNeedsEquivalenceKeyDescription,
Expand All @@ -60,15 +52,15 @@ public sealed class FixerWithFixAllAnalyzer : DiagnosticAnalyzer

internal static readonly DiagnosticDescriptor OverrideGetFixAllProviderRule = new(
DiagnosticIds.OverrideGetFixAllProviderRuleId,
s_localizableOverrideGetFixAllProviderTitle,
s_localizableOverrideGetFixAllProviderMessage,
CreateLocalizableResourceString(nameof(OverrideGetFixAllProviderTitle)),
CreateLocalizableResourceString(nameof(OverrideGetFixAllProviderMessage)),
"Correctness",
DiagnosticSeverity.Warning,
description: s_localizableOverrideGetFixAllProviderDescription,
description: CreateLocalizableResourceString(nameof(OverrideGetFixAllProviderDescription)),
isEnabledByDefault: true,
customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry);

public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics =>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
ImmutableArray.Create(CreateCodeActionEquivalenceKeyRule, OverrideCodeActionEquivalenceKeyRule, OverrideGetFixAllProviderRule);

public override void Initialize(AnalysisContext context)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,24 @@

namespace Microsoft.CodeAnalysis.Analyzers
{
using static CodeAnalysisDiagnosticsResources;

[DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)]
public class InternalImplementationOnlyAnalyzer : DiagnosticAnalyzer
{
private const string InternalImplementationOnlyAttributeName = "InternalImplementationOnlyAttribute";
private const string InternalImplementationOnlyAttributeFullName = "System.Runtime.CompilerServices.InternalImplementationOnlyAttribute";
private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableMessageFormat = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));

public static readonly DiagnosticDescriptor Rule = new(
DiagnosticIds.InternalImplementationOnlyRuleId,
s_localizableTitle,
s_localizableMessageFormat,
DiagnosticCategory.MicrosoftCodeAnalysisCompatibility,
DiagnosticSeverity.Error,
isEnabledByDefault: true,
description: s_localizableDescription);
DiagnosticIds.InternalImplementationOnlyRuleId,
CreateLocalizableResourceString(nameof(InternalImplementationOnlyTitle)),
CreateLocalizableResourceString(nameof(InternalImplementationOnlyMessage)),
DiagnosticCategory.MicrosoftCodeAnalysisCompatibility,
DiagnosticSeverity.Error,
isEnabledByDefault: true,
description: CreateLocalizableResourceString(nameof(InternalImplementationOnlyDescription)));

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

public override void Initialize(AnalysisContext context)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,21 @@

namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers
{
using static CodeAnalysisDiagnosticsResources;

[DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)]
public sealed class ClassIsNotDiagnosticAnalyzer : DiagnosticAnalyzer
{
private static readonly LocalizableString s_localizableTitleNotDiagnosticAnalyzer = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ClassIsNotDiagnosticAnalyzerTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableMessageNotDiagnosticAnalyzer = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ClassIsNotDiagnosticAnalyzerMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));

public static readonly DiagnosticDescriptor Rule = new(
DiagnosticIds.TypeIsNotDiagnosticAnalyzerRuleId,
s_localizableTitleNotDiagnosticAnalyzer,
s_localizableMessageNotDiagnosticAnalyzer,
CreateLocalizableResourceString(nameof(ClassIsNotDiagnosticAnalyzerTitle)),
CreateLocalizableResourceString(nameof(ClassIsNotDiagnosticAnalyzerMessage)),
DiagnosticCategory.MicrosoftCodeAnalysisCorrectness,
DiagnosticSeverity.Warning,
isEnabledByDefault: true,
customTags: WellKnownDiagnosticTags.Telemetry);
customTags: WellKnownDiagnosticTagsExtensions.Telemetry);

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

public override void Initialize(AnalysisContext context)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,14 @@

namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers
{
using static CodeAnalysisDiagnosticsResources;

[DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)]
public class CompareSymbolsCorrectlyAnalyzer : DiagnosticAnalyzer
{
private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CompareSymbolsCorrectlyTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CompareSymbolsCorrectlyMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CompareSymbolsCorrectlyDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableDescriptionGetHashCode = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CompareSymbolsCorrectlyDescriptionGetHashCode), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources));
private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(CompareSymbolsCorrectlyTitle));
private static readonly LocalizableString s_localizableMessage = CreateLocalizableResourceString(nameof(CompareSymbolsCorrectlyMessage));
private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(CompareSymbolsCorrectlyDescription));

private static readonly string s_symbolTypeFullName = typeof(ISymbol).FullName;
private const string s_symbolEqualsName = nameof(ISymbol.Equals);
Expand All @@ -32,7 +33,7 @@ public class CompareSymbolsCorrectlyAnalyzer : DiagnosticAnalyzer
DiagnosticSeverity.Warning,
isEnabledByDefault: true,
description: s_localizableDescription,
customTags: WellKnownDiagnosticTags.Telemetry);
customTags: WellKnownDiagnosticTagsExtensions.Telemetry);

public static readonly DiagnosticDescriptor GetHashCodeRule = new(
DiagnosticIds.CompareSymbolsCorrectlyRuleId,
Expand All @@ -41,8 +42,8 @@ public class CompareSymbolsCorrectlyAnalyzer : DiagnosticAnalyzer
DiagnosticCategory.MicrosoftCodeAnalysisCorrectness,
DiagnosticSeverity.Warning,
isEnabledByDefault: true,
description: s_localizableDescriptionGetHashCode,
customTags: WellKnownDiagnosticTags.Telemetry);
description: CreateLocalizableResourceString(nameof(CompareSymbolsCorrectlyDescriptionGetHashCode)),
customTags: WellKnownDiagnosticTagsExtensions.Telemetry);

public static readonly DiagnosticDescriptor CollectionRule = new(
DiagnosticIds.CompareSymbolsCorrectlyRuleId,
Expand All @@ -52,9 +53,9 @@ public class CompareSymbolsCorrectlyAnalyzer : DiagnosticAnalyzer
DiagnosticSeverity.Warning,
isEnabledByDefault: true,
description: s_localizableDescription,
customTags: WellKnownDiagnosticTags.Telemetry);
customTags: WellKnownDiagnosticTagsExtensions.Telemetry);

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

public override void Initialize(AnalysisContext context)
{
Expand Down
Loading

0 comments on commit e52a3f1

Please sign in to comment.