From c2650c3526e864d8ad93ec66a8567215426bf803 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 11:45:57 -0700 Subject: [PATCH 01/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.Analyzers This is a largely mechanical change the reduces the IL byte size of several static constructors in Microsoft.CodeAnalysis.Analyzers. The following changes have been made: 1. A `CreateLocalizableResourceString(...)` helper has been introduced. This avoids multiple references to `typeof(CodeAnalysisDiagnosticsResources)`, removing tons of IL that looks like this: ``` ldtoken Microsoft.CodeAnalysis.Analyzers.CodeAnalysisDiagnosticsResources call class [netstandard]System.Type [netstandard]System.Type::GetTypeFromHandle(valuetype [netstandard]System.RuntimeTypeHandle) ``` 2. Static readonly fields are no longer declared for every single `LocalizableString`. Creating a new field for each localizable string is a pattern that has been used throughout the code base. However, this causes us to pay the cost of writing to a static field, even when it's only referenced once. 3. Several unnecessary array allocations have been removed where custom tags are passed into the `DiagnosticDescriptor`. In each case, there's already a cached version of the array available that just needs to be used. The largest offender for static constructor IL byte size is `DiagnosticDescriptorCreationAnalyzer`. Currently, this is ~3,083 bytes. With the changes in this commit, the size has been cut in half to ~1,583 bytes. --- .../Core/CodeAnalysisDiagnosticsResources.cs | 17 +++ .../FixAnalyzers/FixerWithFixAllAnalyzer.cs | 16 +-- .../InternalImplementationOnlyAnalyzer.cs | 6 +- .../ClassIsNotDiagnosticAnalyzer.cs | 11 +- .../CompareSymbolsCorrectlyAnalyzer.cs | 17 +-- .../ConfigureGeneratedCodeAnalysisAnalyzer.cs | 11 +- .../DiagnosticAnalyzerAPIUsageAnalyzer.cs | 12 +- .../DiagnosticAnalyzerAttributeAnalyzer.cs | 26 ++-- .../DiagnosticAnalyzerFieldsAnalyzer.cs | 13 +- .../DiagnosticDescriptorCreationAnalyzer.cs | 116 +++++++----------- ...onAnalyzer_IdRangeAndCategoryValidation.cs | 44 +++---- ...criptorCreationAnalyzer_ReleaseTracking.cs | 82 +++++++------ ...tUseCompilationGetSemanticModelAnalyzer.cs | 14 +-- .../EnableConcurrentExecutionAnalyzer.cs | 11 +- .../MetaAnalyzers/PreferIsKindAnalyzer.cs | 14 +-- .../MetaAnalyzers/RegisterActionAnalyzer.cs | 62 ++++------ .../MetaAnalyzers/ReportDiagnosticAnalyzer.cs | 14 +-- .../Core/UpgradeMSBuildWorkspaceAnalyzer.cs | 15 +-- 18 files changed, 223 insertions(+), 278 deletions(-) create mode 100644 src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs new file mode 100644 index 0000000000..39bf447d74 --- /dev/null +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs @@ -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); + } +} diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs index 9373f96721..bd0c2b84c2 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs @@ -26,17 +26,17 @@ 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_localizableCreateCodeActionWithEquivalenceKeyTitle = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CreateCodeActionWithEquivalenceKeyTitle)); + private static readonly LocalizableString s_localizableCreateCodeActionWithEquivalenceKeyMessage = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CreateCodeActionWithEquivalenceKeyMessage)); - 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_localizableOverrideCodeActionEquivalenceKeyTitle = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideCodeActionEquivalenceKeyTitle)); + private static readonly LocalizableString s_localizableOverrideCodeActionEquivalenceKeyMessage = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideCodeActionEquivalenceKeyMessage)); - 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_localizableOverrideGetFixAllProviderTitle = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderTitle)); + private static readonly LocalizableString s_localizableOverrideGetFixAllProviderMessage = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderMessage)); - 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 = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CodeActionNeedsEquivalenceKeyDescription)); + private static readonly LocalizableString s_localizableOverrideGetFixAllProviderDescription = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderDescription)); internal static readonly DiagnosticDescriptor CreateCodeActionEquivalenceKeyRule = new( DiagnosticIds.CreateCodeActionWithEquivalenceKeyRuleId, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs index 3d85e3a6ba..8b2f86d83c 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs @@ -14,9 +14,9 @@ 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)); + private static readonly LocalizableString s_localizableTitle = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyTitle)); + private static readonly LocalizableString s_localizableMessageFormat = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyMessage)); + private static readonly LocalizableString s_localizableDescription = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyDescription)); public static readonly DiagnosticDescriptor Rule = new( DiagnosticIds.InternalImplementationOnlyRuleId, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs index ad97ae54d7..c65de40db4 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs @@ -7,20 +7,19 @@ 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 SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs index 46af557867..618d2333cf 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs @@ -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); @@ -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, @@ -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, @@ -52,7 +53,7 @@ public class CompareSymbolsCorrectlyAnalyzer : DiagnosticAnalyzer DiagnosticSeverity.Warning, isEnabledByDefault: true, description: s_localizableDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(EqualityRule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs index e7e371d80f..8f1df49753 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs @@ -9,20 +9,19 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ConfigureGeneratedCodeAnalysisAnalyzer : DiagnosticAnalyzerCorrectnessAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ConfigureGeneratedCodeAnalysisTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ConfigureGeneratedCodeAnalysisMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - public static readonly DiagnosticDescriptor Rule = new( DiagnosticIds.ConfigureGeneratedCodeAnalysisRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(ConfigureGeneratedCodeAnalysisTitle)), + CreateLocalizableResourceString(nameof(ConfigureGeneratedCodeAnalysisMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs index 8b96eb18f8..8acad2ea2f 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs @@ -15,13 +15,13 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + public abstract class DiagnosticAnalyzerApiUsageAnalyzer : DiagnosticAnalyzer where TTypeSyntax : SyntaxNode { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseTypesFromAssemblyRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseTypesFromAssemblyRuleDirectMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableIndirectMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseTypesFromAssemblyRuleIndirectMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseTypesFromAssemblyRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources), nameof(AnalysisContext), DiagnosticWellKnownNames.RegisterCompilationStartActionName); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DoNotUseTypesFromAssemblyRuleTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(DoNotUseTypesFromAssemblyRuleDescription), nameof(AnalysisContext), DiagnosticWellKnownNames.RegisterCompilationStartActionName); private const string CodeActionMetadataName = "Microsoft.CodeAnalysis.CodeActions.CodeAction"; private static readonly ImmutableArray s_WorkspaceAssemblyNames = ImmutableArray.Create( "Microsoft.CodeAnalysis.Workspaces", @@ -31,7 +31,7 @@ public abstract class DiagnosticAnalyzerApiUsageAnalyzer : Diagnost public static readonly DiagnosticDescriptor DoNotUseTypesFromAssemblyDirectRule = new( DiagnosticIds.DoNotUseTypesFromAssemblyRuleId, s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotUseTypesFromAssemblyRuleDirectMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, @@ -41,7 +41,7 @@ public abstract class DiagnosticAnalyzerApiUsageAnalyzer : Diagnost public static readonly DiagnosticDescriptor DoNotUseTypesFromAssemblyIndirectRule = new( DiagnosticIds.DoNotUseTypesFromAssemblyRuleId, s_localizableTitle, - s_localizableIndirectMessage, + CreateLocalizableResourceString(nameof(DoNotUseTypesFromAssemblyRuleIndirectMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs index afa0eb6f09..d42b66e684 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs @@ -8,36 +8,30 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DiagnosticAnalyzerAttributeAnalyzer : DiagnosticAnalyzerCorrectnessAnalyzer { - private static readonly LocalizableString s_localizableTitleMissingAttribute = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingDiagnosticAnalyzerAttributeTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageMissingAttribute = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingAttributeMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources), WellKnownTypeNames.MicrosoftCodeAnalysisDiagnosticsDiagnosticAnalyzerAttribute); - private static readonly LocalizableString s_localizableDescriptionMissingAttribute = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingDiagnosticAnalyzerAttributeDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - public static readonly DiagnosticDescriptor MissingDiagnosticAnalyzerAttributeRule = new( DiagnosticIds.MissingDiagnosticAnalyzerAttributeRuleId, - s_localizableTitleMissingAttribute, - s_localizableMessageMissingAttribute, + CreateLocalizableResourceString(nameof(MissingDiagnosticAnalyzerAttributeTitle)), + CreateLocalizableResourceString(nameof(MissingAttributeMessage), WellKnownTypeNames.MicrosoftCodeAnalysisDiagnosticsDiagnosticAnalyzerAttribute), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescriptionMissingAttribute, - customTags: WellKnownDiagnosticTags.Telemetry); - - private static readonly LocalizableString s_localizableTitleAddLanguageSupportToAnalyzer = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.AddLanguageSupportToAnalyzerTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageAddLanguageSupportToAnalyzer = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.AddLanguageSupportToAnalyzerMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDescriptionAddLanguageSupportToAnalyzer = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.AddLanguageSupportToAnalyzerDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); + description: CreateLocalizableResourceString(nameof(MissingDiagnosticAnalyzerAttributeDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public static readonly DiagnosticDescriptor AddLanguageSupportToAnalyzerRule = new( DiagnosticIds.AddLanguageSupportToAnalyzerRuleId, - s_localizableTitleAddLanguageSupportToAnalyzer, - s_localizableMessageAddLanguageSupportToAnalyzer, + CreateLocalizableResourceString(nameof(AddLanguageSupportToAnalyzerTitle)), + CreateLocalizableResourceString(nameof(AddLanguageSupportToAnalyzerMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescriptionAddLanguageSupportToAnalyzer, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(AddLanguageSupportToAnalyzerDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(MissingDiagnosticAnalyzerAttributeRule, AddLanguageSupportToAnalyzerRule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs index 04dd3bd137..cd5fb32492 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + public abstract class DiagnosticAnalyzerFieldsAnalyzer : DiagnosticAnalyzerCorrectnessAnalyzer where TClassDeclarationSyntax : SyntaxNode where TStructDeclarationSyntax : SyntaxNode @@ -17,22 +19,19 @@ public abstract class DiagnosticAnalyzerFieldsAnalyzer SupportedDiagnostics => ImmutableArray.Create(DoNotStorePerCompilationDataOntoFieldsRule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs index 36e617f359..b790926e16 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs @@ -19,6 +19,7 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; using PooledLocalizabeStringsConcurrentDictionary = PooledConcurrentDictionary>; using PooledResourcesDataValueConcurrentDictionary = PooledConcurrentDictionary>; using PooledFieldToResourceNameAndFileNameConcurrentDictionary = PooledConcurrentDictionary; @@ -57,152 +58,119 @@ public sealed partial class DiagnosticDescriptorCreationAnalyzer : DiagnosticAna "Text.CSharp.Analyzers", "Text.VisualBasic.Analyzers"); - private static readonly LocalizableString s_localizableUseLocalizableStringsTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseLocalizableStringsInDescriptorTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableUseLocalizableStringsMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseLocalizableStringsInDescriptorMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableUseLocalizableStringsDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseLocalizableStringsInDescriptorDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableProvideHelpUriTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ProvideHelpUriInDescriptorTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableProvideHelpUriMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ProvideHelpUriInDescriptorMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableProvideHelpUriDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ProvideHelpUriInDescriptorDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableDiagnosticIdMustBeAConstantTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DiagnosticIdMustBeAConstantTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDiagnosticIdMustBeAConstantMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DiagnosticIdMustBeAConstantMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDiagnosticIdMustBeAConstantDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DiagnosticIdMustBeAConstantDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableUseUniqueDiagnosticIdTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseUniqueDiagnosticIdTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableUseUniqueDiagnosticIdMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseUniqueDiagnosticIdMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableUseUniqueDiagnosticIdDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseUniqueDiagnosticIdDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableProvideCustomTagsTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ProvideCustomTagsInDescriptorTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableProvideCustomTagsMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ProvideCustomTagsInDescriptorMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableProvideCustomTagsDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.ProvideCustomTagsInDescriptorDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableDoNotUseReservedDiagnosticIdTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseReservedDiagnosticIdTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDoNotUseReservedDiagnosticIdMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseReservedDiagnosticIdMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDoNotUseReservedDiagnosticIdDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseReservedDiagnosticIdDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableDefineDiagnosticTitleCorrectlyTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DefineDiagnosticTitleCorrectlyTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDefineDiagnosticTitleCorrectlyMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DefineDiagnosticTitleCorrectlyMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableDefineDiagnosticMessageCorrectlyTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DefineDiagnosticMessageCorrectlyTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDefineDiagnosticMessageCorrectlyMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DefineDiagnosticMessageCorrectlyMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableDefineDiagnosticDescriptionCorrectlyTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DefineDiagnosticDescriptionCorrectlyTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDefineDiagnosticDescriptionCorrectlyMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DefineDiagnosticDescriptionCorrectlyMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - /// - /// RS1007 () + /// RS1007 () /// public static readonly DiagnosticDescriptor UseLocalizableStringsInDescriptorRule = new( DiagnosticIds.UseLocalizableStringsInDescriptorRuleId, - s_localizableUseLocalizableStringsTitle, - s_localizableUseLocalizableStringsMessage, + CreateLocalizableResourceString(nameof(UseLocalizableStringsInDescriptorTitle)), + CreateLocalizableResourceString(nameof(UseLocalizableStringsInDescriptorMessage)), DiagnosticCategory.MicrosoftCodeAnalysisLocalization, DiagnosticSeverity.Warning, isEnabledByDefault: false, - description: s_localizableUseLocalizableStringsDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(UseLocalizableStringsInDescriptorDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1015 () + /// RS1015 () /// public static readonly DiagnosticDescriptor ProvideHelpUriInDescriptorRule = new( DiagnosticIds.ProvideHelpUriInDescriptorRuleId, - s_localizableProvideHelpUriTitle, - s_localizableProvideHelpUriMessage, + CreateLocalizableResourceString(nameof(ProvideHelpUriInDescriptorTitle)), + CreateLocalizableResourceString(nameof(ProvideHelpUriInDescriptorMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDocumentation, DiagnosticSeverity.Warning, isEnabledByDefault: false, - description: s_localizableProvideHelpUriDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(ProvideHelpUriInDescriptorDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1017 () + /// RS1017 () /// public static readonly DiagnosticDescriptor DiagnosticIdMustBeAConstantRule = new( DiagnosticIds.DiagnosticIdMustBeAConstantRuleId, - s_localizableDiagnosticIdMustBeAConstantTitle, - s_localizableDiagnosticIdMustBeAConstantMessage, + CreateLocalizableResourceString(nameof(DiagnosticIdMustBeAConstantTitle)), + CreateLocalizableResourceString(nameof(DiagnosticIdMustBeAConstantMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDiagnosticIdMustBeAConstantDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(DiagnosticIdMustBeAConstantDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1019 () + /// RS1019 () /// public static readonly DiagnosticDescriptor UseUniqueDiagnosticIdRule = new( DiagnosticIds.UseUniqueDiagnosticIdRuleId, - s_localizableUseUniqueDiagnosticIdTitle, - s_localizableUseUniqueDiagnosticIdMessage, + CreateLocalizableResourceString(nameof(UseUniqueDiagnosticIdTitle)), + CreateLocalizableResourceString(nameof(UseUniqueDiagnosticIdMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableUseUniqueDiagnosticIdDescription, + description: CreateLocalizableResourceString(nameof(UseUniqueDiagnosticIdDescription)), customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); /// - /// RS1028 () + /// RS1028 () /// public static readonly DiagnosticDescriptor ProvideCustomTagsInDescriptorRule = new( DiagnosticIds.ProvideCustomTagsInDescriptorRuleId, - s_localizableProvideCustomTagsTitle, - s_localizableProvideCustomTagsMessage, + CreateLocalizableResourceString(nameof(ProvideCustomTagsInDescriptorTitle)), + CreateLocalizableResourceString(nameof(ProvideCustomTagsInDescriptorMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDocumentation, DiagnosticSeverity.Warning, isEnabledByDefault: false, - description: s_localizableProvideCustomTagsDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(ProvideCustomTagsInDescriptorDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1029 () + /// RS1029 () /// public static readonly DiagnosticDescriptor DoNotUseReservedDiagnosticIdRule = new( DiagnosticIds.DoNotUseReservedDiagnosticIdRuleId, - s_localizableDoNotUseReservedDiagnosticIdTitle, - s_localizableDoNotUseReservedDiagnosticIdMessage, + CreateLocalizableResourceString(nameof(DoNotUseReservedDiagnosticIdTitle)), + CreateLocalizableResourceString(nameof(DoNotUseReservedDiagnosticIdMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDoNotUseReservedDiagnosticIdDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(DoNotUseReservedDiagnosticIdDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1031 () + /// RS1031 () /// public static readonly DiagnosticDescriptor DefineDiagnosticTitleCorrectlyRule = new( DiagnosticIds.DefineDiagnosticTitleCorrectlyRuleId, - s_localizableDefineDiagnosticTitleCorrectlyTitle, - s_localizableDefineDiagnosticTitleCorrectlyMessage, + CreateLocalizableResourceString(nameof(DefineDiagnosticTitleCorrectlyTitle)), + CreateLocalizableResourceString(nameof(DefineDiagnosticTitleCorrectlyMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1032 () + /// RS1032 () /// public static readonly DiagnosticDescriptor DefineDiagnosticMessageCorrectlyRule = new( DiagnosticIds.DefineDiagnosticMessageCorrectlyRuleId, - s_localizableDefineDiagnosticMessageCorrectlyTitle, - s_localizableDefineDiagnosticMessageCorrectlyMessage, + CreateLocalizableResourceString(nameof(DefineDiagnosticMessageCorrectlyTitle)), + CreateLocalizableResourceString(nameof(DefineDiagnosticMessageCorrectlyMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1033 () + /// RS1033 () /// public static readonly DiagnosticDescriptor DefineDiagnosticDescriptionCorrectlyRule = new( DiagnosticIds.DefineDiagnosticDescriptionCorrectlyRuleId, - s_localizableDefineDiagnosticDescriptionCorrectlyTitle, - s_localizableDefineDiagnosticDescriptionCorrectlyMessage, + CreateLocalizableResourceString(nameof(DefineDiagnosticDescriptionCorrectlyTitle)), + CreateLocalizableResourceString(nameof(DefineDiagnosticDescriptionCorrectlyMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( UseLocalizableStringsInDescriptorRule, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_IdRangeAndCategoryValidation.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_IdRangeAndCategoryValidation.cs index 871fb12410..77d920f892 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_IdRangeAndCategoryValidation.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_IdRangeAndCategoryValidation.cs @@ -15,61 +15,51 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + public sealed partial class DiagnosticDescriptorCreationAnalyzer { private const string DiagnosticCategoryAndIdRangeFile = "DiagnosticCategoryAndIdRanges.txt"; private static readonly (string? prefix, int start, int end) s_defaultAllowedIdsInfo = (null, -1, -1); - private static readonly LocalizableString s_localizableDiagnosticIdMustBeInSpecifiedFormatTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DiagnosticIdMustBeInSpecifiedFormatTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDiagnosticIdMustBeInSpecifiedFormatMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DiagnosticIdMustBeInSpecifiedFormatMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDiagnosticIdMustBeInSpecifiedFormatDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DiagnosticIdMustBeInSpecifiedFormatDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableUseCategoriesFromSpecifiedRangeTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseCategoriesFromSpecifiedRangeTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableUseCategoriesFromSpecifiedRangeMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseCategoriesFromSpecifiedRangeMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableUseCategoriesFromSpecifiedRangeDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UseCategoriesFromSpecifiedRangeDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - - private static readonly LocalizableString s_localizableAnalyzerCategoryAndIdRangeFileInvalidTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.AnalyzerCategoryAndIdRangeFileInvalidTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableAnalyzerCategoryAndIdRangeFileInvalidMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.AnalyzerCategoryAndIdRangeFileInvalidMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableAnalyzerCategoryAndIdRangeFileInvalidDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.AnalyzerCategoryAndIdRangeFileInvalidDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - /// - /// RS1018 () + /// RS1018 () /// public static readonly DiagnosticDescriptor DiagnosticIdMustBeInSpecifiedFormatRule = new( DiagnosticIds.DiagnosticIdMustBeInSpecifiedFormatRuleId, - s_localizableDiagnosticIdMustBeInSpecifiedFormatTitle, - s_localizableDiagnosticIdMustBeInSpecifiedFormatMessage, + CreateLocalizableResourceString(nameof(DiagnosticIdMustBeInSpecifiedFormatTitle)), + CreateLocalizableResourceString(nameof(DiagnosticIdMustBeInSpecifiedFormatMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDiagnosticIdMustBeInSpecifiedFormatDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(DiagnosticIdMustBeInSpecifiedFormatDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1020 () + /// RS1020 () /// public static readonly DiagnosticDescriptor UseCategoriesFromSpecifiedRangeRule = new( DiagnosticIds.UseCategoriesFromSpecifiedRangeRuleId, - s_localizableUseCategoriesFromSpecifiedRangeTitle, - s_localizableUseCategoriesFromSpecifiedRangeMessage, + CreateLocalizableResourceString(nameof(UseCategoriesFromSpecifiedRangeTitle)), + CreateLocalizableResourceString(nameof(UseCategoriesFromSpecifiedRangeMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: false, - description: s_localizableUseCategoriesFromSpecifiedRangeDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(UseCategoriesFromSpecifiedRangeDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); /// - /// RS1021 () + /// RS1021 () /// public static readonly DiagnosticDescriptor AnalyzerCategoryAndIdRangeFileInvalidRule = new( DiagnosticIds.AnalyzerCategoryAndIdRangeFileInvalidRuleId, - s_localizableAnalyzerCategoryAndIdRangeFileInvalidTitle, - s_localizableAnalyzerCategoryAndIdRangeFileInvalidMessage, + CreateLocalizableResourceString(nameof(AnalyzerCategoryAndIdRangeFileInvalidTitle)), + CreateLocalizableResourceString(nameof(AnalyzerCategoryAndIdRangeFileInvalidMessage)), DiagnosticCategory.MicrosoftCodeAnalysisDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableAnalyzerCategoryAndIdRangeFileInvalidDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(AnalyzerCategoryAndIdRangeFileInvalidDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); private static void AnalyzeAllowedIdsInfoList( string ruleId, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_ReleaseTracking.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_ReleaseTracking.cs index f3982bf15e..9c1488877b 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_ReleaseTracking.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer_ReleaseTracking.cs @@ -18,6 +18,8 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + public sealed partial class DiagnosticDescriptorCreationAnalyzer { // Property names which are keys for diagnostic property bag passed to the code fixer. @@ -26,135 +28,135 @@ public sealed partial class DiagnosticDescriptorCreationAnalyzer internal static readonly DiagnosticDescriptor DeclareDiagnosticIdInAnalyzerReleaseRule = new( id: DiagnosticIds.DeclareDiagnosticIdInAnalyzerReleaseRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DeclareDiagnosticIdInAnalyzerReleaseTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DeclareDiagnosticIdInAnalyzerReleaseMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(DeclareDiagnosticIdInAnalyzerReleaseTitle)), + messageFormat: CreateLocalizableResourceString(nameof(DeclareDiagnosticIdInAnalyzerReleaseMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DeclareDiagnosticIdInAnalyzerReleaseDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(DeclareDiagnosticIdInAnalyzerReleaseDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor UpdateDiagnosticIdInAnalyzerReleaseRule = new( id: DiagnosticIds.UpdateDiagnosticIdInAnalyzerReleaseRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UpdateDiagnosticIdInAnalyzerReleaseTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UpdateDiagnosticIdInAnalyzerReleaseMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(UpdateDiagnosticIdInAnalyzerReleaseTitle)), + messageFormat: CreateLocalizableResourceString(nameof(UpdateDiagnosticIdInAnalyzerReleaseMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UpdateDiagnosticIdInAnalyzerReleaseDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(UpdateDiagnosticIdInAnalyzerReleaseDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor RemoveUnshippedDeletedDiagnosticIdRule = new( id: DiagnosticIds.RemoveUnshippedDeletedDiagnosticIdRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveUnshippedDeletedDiagnosticIdTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveUnshippedDeletedDiagnosticIdMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(RemoveUnshippedDeletedDiagnosticIdTitle)), + messageFormat: CreateLocalizableResourceString(nameof(RemoveUnshippedDeletedDiagnosticIdMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveUnshippedDeletedDiagnosticIdDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(RemoveUnshippedDeletedDiagnosticIdDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor RemoveShippedDeletedDiagnosticIdRule = new( id: DiagnosticIds.RemoveShippedDeletedDiagnosticIdRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveShippedDeletedDiagnosticIdTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveShippedDeletedDiagnosticIdMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(RemoveShippedDeletedDiagnosticIdTitle)), + messageFormat: CreateLocalizableResourceString(nameof(RemoveShippedDeletedDiagnosticIdMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveShippedDeletedDiagnosticIdDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(RemoveShippedDeletedDiagnosticIdDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdRule = new( id: DiagnosticIds.UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdTitle)), + messageFormat: CreateLocalizableResourceString(nameof(UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(UnexpectedAnalyzerDiagnosticForRemovedDiagnosticIdDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor RemoveDuplicateEntriesForAnalyzerReleaseRule = new( id: DiagnosticIds.RemoveDuplicateEntriesForAnalyzerReleaseRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveDuplicateEntriesForAnalyzerReleaseRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveDuplicateEntriesForAnalyzerReleaseRuleMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(RemoveDuplicateEntriesForAnalyzerReleaseRuleTitle)), + messageFormat: CreateLocalizableResourceString(nameof(RemoveDuplicateEntriesForAnalyzerReleaseRuleMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveDuplicateEntriesForAnalyzerReleaseRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(RemoveDuplicateEntriesForAnalyzerReleaseRuleDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor RemoveDuplicateEntriesBetweenAnalyzerReleasesRule = new( id: DiagnosticIds.RemoveDuplicateEntriesBetweenAnalyzerReleasesRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveDuplicateEntriesBetweenAnalyzerReleasesRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveDuplicateEntriesBetweenAnalyzerReleasesRuleMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(RemoveDuplicateEntriesBetweenAnalyzerReleasesRuleTitle)), + messageFormat: CreateLocalizableResourceString(nameof(RemoveDuplicateEntriesBetweenAnalyzerReleasesRuleMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.RemoveDuplicateEntriesBetweenAnalyzerReleasesRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(RemoveDuplicateEntriesBetweenAnalyzerReleasesRuleDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor InvalidEntryInAnalyzerReleasesFileRule = new( id: DiagnosticIds.InvalidEntryInAnalyzerReleasesFileRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleTitle)), + messageFormat: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor InvalidHeaderInAnalyzerReleasesFileRule = new( id: DiagnosticIds.InvalidEntryInAnalyzerReleasesFileRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidHeaderInAnalyzerReleasesFileRuleMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleTitle)), + messageFormat: CreateLocalizableResourceString(nameof(InvalidHeaderInAnalyzerReleasesFileRuleMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor InvalidUndetectedEntryInAnalyzerReleasesFileRule = new( id: DiagnosticIds.InvalidEntryInAnalyzerReleasesFileRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidUndetectedEntryInAnalyzerReleasesFileRuleMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleTitle)), + messageFormat: CreateLocalizableResourceString(nameof(InvalidUndetectedEntryInAnalyzerReleasesFileRuleMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor InvalidRemovedOrChangedWithoutPriorNewEntryInAnalyzerReleasesFileRule = new( id: DiagnosticIds.InvalidEntryInAnalyzerReleasesFileRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidRemovedOrChangedWithoutPriorNewEntryInAnalyzerReleasesFileRuleMessageMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleTitle)), + messageFormat: CreateLocalizableResourceString(nameof(InvalidRemovedOrChangedWithoutPriorNewEntryInAnalyzerReleasesFileRuleMessageMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidEntryInAnalyzerReleasesFileRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(InvalidEntryInAnalyzerReleasesFileRuleDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor EnableAnalyzerReleaseTrackingRule = new( id: DiagnosticIds.EnableAnalyzerReleaseTrackingRuleId, - title: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.EnableAnalyzerReleaseTrackingRuleTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), - messageFormat: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.EnableAnalyzerReleaseTrackingRuleMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + title: CreateLocalizableResourceString(nameof(EnableAnalyzerReleaseTrackingRuleTitle)), + messageFormat: CreateLocalizableResourceString(nameof(EnableAnalyzerReleaseTrackingRuleMessage)), category: DiagnosticCategory.MicrosoftCodeAnalysisReleaseTracking, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.EnableAnalyzerReleaseTrackingRuleDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)), + description: CreateLocalizableResourceString(nameof(EnableAnalyzerReleaseTrackingRuleDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); private static bool TryGetReleaseTrackingData( ImmutableArray additionalTexts, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs index f328f5ad0c..023f42f3e5 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs @@ -9,22 +9,20 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseCompilationGetSemanticModelAnalyzer : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseCompilationGetSemanticModelTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseCompilationGetSemanticModelMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.DoNotUseCompilationGetSemanticModelDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - public static readonly DiagnosticDescriptor Rule = new( DiagnosticIds.DoNotUseCompilationGetSemanticModelRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotUseCompilationGetSemanticModelTitle)), + CreateLocalizableResourceString(nameof(DoNotUseCompilationGetSemanticModelMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(DoNotUseCompilationGetSemanticModelDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs index fe85f782ba..d7aba946f4 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs @@ -9,20 +9,19 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class EnableConcurrentExecutionAnalyzer : DiagnosticAnalyzerCorrectnessAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.EnableConcurrentExecutionTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.EnableConcurrentExecutionMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - public static readonly DiagnosticDescriptor Rule = new( DiagnosticIds.EnableConcurrentExecutionRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(EnableConcurrentExecutionTitle)), + CreateLocalizableResourceString(nameof(EnableConcurrentExecutionMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs index b8c9a30904..494575c3e6 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs @@ -9,23 +9,21 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class PreferIsKindAnalyzer : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.PreferIsKindTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.PreferIsKindMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.PreferIsKindDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - internal static DiagnosticDescriptor Rule = new( DiagnosticIds.PreferIsKindRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(PreferIsKindTitle)), + CreateLocalizableResourceString(nameof(PreferIsKindMessage)), DiagnosticCategory.MicrosoftCodeAnalysisPerformance, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(PreferIsKindDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs index 126525898c..7b4d54684d 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs @@ -14,101 +14,87 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + public abstract class RegisterActionAnalyzer : DiagnosticAnalyzerCorrectnessAnalyzer where TClassDeclarationSyntax : SyntaxNode where TInvocationExpressionSyntax : SyntaxNode where TArgumentSyntax : SyntaxNode where TLanguageKindEnum : struct { - private static readonly LocalizableString s_localizableTitleMissingKindArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingKindArgumentToRegisterActionTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageMissingSymbolKindArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingSymbolKindArgumentToRegisterActionMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageMissingSyntaxKindArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingSyntaxKindArgumentToRegisterActionMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageMissingOperationKindArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingOperationKindArgumentToRegisterActionMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDescriptionMissingKindArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.MissingKindArgumentToRegisterActionDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); + private static readonly LocalizableString s_localizableTitleMissingKindArgument = CreateLocalizableResourceString(nameof(MissingKindArgumentToRegisterActionTitle)); + private static readonly LocalizableString s_localizableDescriptionMissingKindArgument = CreateLocalizableResourceString(nameof(MissingKindArgumentToRegisterActionDescription)); public static readonly DiagnosticDescriptor MissingSymbolKindArgumentRule = new( DiagnosticIds.MissingKindArgumentToRegisterActionRuleId, s_localizableTitleMissingKindArgument, - s_localizableMessageMissingSymbolKindArgument, + CreateLocalizableResourceString(nameof(MissingSymbolKindArgumentToRegisterActionMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: s_localizableDescriptionMissingKindArgument, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public static readonly DiagnosticDescriptor MissingSyntaxKindArgumentRule = new( DiagnosticIds.MissingKindArgumentToRegisterActionRuleId, s_localizableTitleMissingKindArgument, - s_localizableMessageMissingSyntaxKindArgument, + CreateLocalizableResourceString(nameof(MissingSyntaxKindArgumentToRegisterActionMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: s_localizableDescriptionMissingKindArgument, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public static readonly DiagnosticDescriptor MissingOperationKindArgumentRule = new( DiagnosticIds.MissingKindArgumentToRegisterActionRuleId, s_localizableTitleMissingKindArgument, - s_localizableMessageMissingOperationKindArgument, + CreateLocalizableResourceString(nameof(MissingOperationKindArgumentToRegisterActionMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: s_localizableDescriptionMissingKindArgument, - customTags: WellKnownDiagnosticTags.Telemetry); - - private static readonly LocalizableString s_localizableTitleUnsupportedSymbolKindArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UnsupportedSymbolKindArgumentToRegisterActionTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageUnsupportedSymbolKindArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UnsupportedSymbolKindArgumentToRegisterActionMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public static readonly DiagnosticDescriptor UnsupportedSymbolKindArgumentRule = new( DiagnosticIds.UnsupportedSymbolKindArgumentRuleId, - s_localizableTitleUnsupportedSymbolKindArgument, - s_localizableMessageUnsupportedSymbolKindArgument, + CreateLocalizableResourceString(nameof(UnsupportedSymbolKindArgumentToRegisterActionTitle)), + CreateLocalizableResourceString(nameof(UnsupportedSymbolKindArgumentToRegisterActionMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); - - private static readonly LocalizableString s_localizableTitleInvalidSyntaxKindTypeArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidSyntaxKindTypeArgumentTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageInvalidSyntaxKindTypeArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidSyntaxKindTypeArgumentMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDescriptionInvalidSyntaxKindTypeArgument = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InvalidSyntaxKindTypeArgumentDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources), nameof(DiagnosticWellKnownNames.TLanguageKindEnumName)); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public static readonly DiagnosticDescriptor InvalidSyntaxKindTypeArgumentRule = new( DiagnosticIds.InvalidSyntaxKindTypeArgumentRuleId, - s_localizableTitleInvalidSyntaxKindTypeArgument, - s_localizableMessageInvalidSyntaxKindTypeArgument, + CreateLocalizableResourceString(nameof(InvalidSyntaxKindTypeArgumentTitle)), + CreateLocalizableResourceString(nameof(InvalidSyntaxKindTypeArgumentMessage)), DiagnosticCategory.MicrosoftCodeAnalysisCorrectness, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescriptionInvalidSyntaxKindTypeArgument, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(InvalidSyntaxKindTypeArgumentDescription), nameof(DiagnosticWellKnownNames.TLanguageKindEnumName)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - private static readonly LocalizableString s_localizableDescriptionStatefulAnalyzerRegisterActionsDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.StatefulAnalyzerRegisterActionsDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources), nameof(DiagnosticWellKnownNames.TLanguageKindEnumName)); - - private static readonly LocalizableString s_localizableTitleStartActionWithNoRegisteredActions = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.StartActionWithNoRegisteredActionsTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageStartActionWithNoRegisteredActions = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.StartActionWithNoRegisteredActionsMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); + private static readonly LocalizableString s_localizableDescriptionStatefulAnalyzerRegisterActionsDescription = CreateLocalizableResourceString(nameof(StatefulAnalyzerRegisterActionsDescription), nameof(DiagnosticWellKnownNames.TLanguageKindEnumName)); public static readonly DiagnosticDescriptor StartActionWithNoRegisteredActionsRule = new( DiagnosticIds.StartActionWithNoRegisteredActionsRuleId, - s_localizableTitleStartActionWithNoRegisteredActions, - s_localizableMessageStartActionWithNoRegisteredActions, + CreateLocalizableResourceString(nameof(StartActionWithNoRegisteredActionsTitle)), + CreateLocalizableResourceString(nameof(StartActionWithNoRegisteredActionsMessage)), DiagnosticCategory.MicrosoftCodeAnalysisPerformance, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: s_localizableDescriptionStatefulAnalyzerRegisterActionsDescription, - customTags: WellKnownDiagnosticTags.Telemetry); - - private static readonly LocalizableString s_localizableTitleStartActionWithOnlyEndAction = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.StartActionWithOnlyEndActionTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessageStartActionWithOnlyEndAction = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.StartActionWithOnlyEndActionMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public static readonly DiagnosticDescriptor StartActionWithOnlyEndActionRule = new( DiagnosticIds.StartActionWithOnlyEndActionRuleId, - s_localizableTitleStartActionWithOnlyEndAction, - s_localizableMessageStartActionWithOnlyEndAction, + CreateLocalizableResourceString(nameof(StartActionWithOnlyEndActionTitle)), + CreateLocalizableResourceString(nameof(StartActionWithOnlyEndActionMessage)), DiagnosticCategory.MicrosoftCodeAnalysisPerformance, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: s_localizableDescriptionStatefulAnalyzerRegisterActionsDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( MissingSymbolKindArgumentRule, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs index d3587ac48c..e2498712d0 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs @@ -13,6 +13,8 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers { + using static CodeAnalysisDiagnosticsResources; + public abstract class ReportDiagnosticAnalyzer : DiagnosticAnalyzerCorrectnessAnalyzer where TClassDeclarationSyntax : SyntaxNode where TStructDeclarationSyntax : SyntaxNode @@ -20,19 +22,15 @@ public abstract class ReportDiagnosticAnalyzer SupportedDiagnostics => ImmutableArray.Create(InvalidReportDiagnosticRule); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/UpgradeMSBuildWorkspaceAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/UpgradeMSBuildWorkspaceAnalyzer.cs index d57a5433f0..61e20fa656 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/UpgradeMSBuildWorkspaceAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/UpgradeMSBuildWorkspaceAnalyzer.cs @@ -7,6 +7,8 @@ namespace Microsoft.CodeAnalysis.Analyzers { + using static CodeAnalysisDiagnosticsResources; + public abstract class UpgradeMSBuildWorkspaceAnalyzer : DiagnosticAnalyzer { private const string WorkspacesDesktop = "Microsoft.CodeAnalysis.Workspaces.Desktop"; @@ -14,21 +16,16 @@ public abstract class UpgradeMSBuildWorkspaceAnalyzer : DiagnosticAnalyzer private const string MSBuildWorkspaceFullName = "Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace"; protected const string MSBuildWorkspace = "MSBuildWorkspace"; - // 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.UpgradeMSBuildWorkspaceTitle), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UpgradeMSBuildWorkspaceMessage), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.UpgradeMSBuildWorkspaceDescription), CodeAnalysisDiagnosticsResources.ResourceManager, typeof(CodeAnalysisDiagnosticsResources)); - public static readonly DiagnosticDescriptor UpgradeMSBuildWorkspaceDiagnosticRule = new( DiagnosticIds.UpgradeMSBuildWorkspaceRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(UpgradeMSBuildWorkspaceTitle)), + CreateLocalizableResourceString(nameof(UpgradeMSBuildWorkspaceMessage)), DiagnosticCategory.Library, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(UpgradeMSBuildWorkspaceDescription)), helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=874285", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(UpgradeMSBuildWorkspaceDiagnosticRule); From db76558c36820852121bc7999e106f26542b0ec9 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 12:15:16 -0700 Subject: [PATCH 02/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.BannedApiAnalyzers --- .../Core/BannedApiAnalyzerResources.cs | 17 +++++++++++++++++ .../RestrictedInternalsVisibleToAnalyzer.cs | 10 ++++++---- .../Core/SymbolIsBannedAnalyzer.cs | 16 +++++++++------- 3 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/BannedApiAnalyzerResources.cs diff --git a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/BannedApiAnalyzerResources.cs b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/BannedApiAnalyzerResources.cs new file mode 100644 index 0000000000..9a63925163 --- /dev/null +++ b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/BannedApiAnalyzerResources.cs @@ -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.BannedApiAnalyzers +{ + internal partial class BannedApiAnalyzerResources + { + private static readonly Type s_resourcesType = typeof(BannedApiAnalyzerResources); + + 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); + } +} diff --git a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs index ae0d9f2436..6f7d783452 100644 --- a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs @@ -14,20 +14,22 @@ namespace Microsoft.CodeAnalysis.BannedApiAnalyzers { + using static BannedApiAnalyzerResources; + public abstract class RestrictedInternalsVisibleToAnalyzer : DiagnosticAnalyzer where TNameSyntax : SyntaxNode where TSyntaxKind : struct { public static readonly DiagnosticDescriptor Rule = new( id: DiagnosticIds.RestrictedInternalsVisibleToRuleId, - title: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.RestrictedInternalsVisibleToTitle), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.RestrictedInternalsVisibleToMessage), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(RestrictedInternalsVisibleToTitle)), + messageFormat: CreateLocalizableResourceString(nameof(RestrictedInternalsVisibleToMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Error, // Force build break on invalid external access. isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.RestrictedInternalsVisibleToDescription), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(RestrictedInternalsVisibleToDescription)), helpLinkUri: null, // TODO: Add help link - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs index 4d4c3b3bbd..9ac397c866 100644 --- a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs @@ -16,29 +16,31 @@ namespace Microsoft.CodeAnalysis.BannedApiAnalyzers { + using static BannedApiAnalyzerResources; + internal static class SymbolIsBannedAnalyzer { public const string BannedSymbolsFileName = "BannedSymbols.txt"; public static readonly DiagnosticDescriptor SymbolIsBannedRule = new( id: DiagnosticIds.SymbolIsBannedRuleId, - title: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.SymbolIsBannedTitle), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.SymbolIsBannedMessage), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(SymbolIsBannedTitle)), + messageFormat: CreateLocalizableResourceString(nameof(SymbolIsBannedMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.SymbolIsBannedDescription), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(SymbolIsBannedDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/BannedApiAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public static readonly DiagnosticDescriptor DuplicateBannedSymbolRule = new( id: DiagnosticIds.DuplicateBannedSymbolRuleId, - title: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.DuplicateBannedSymbolTitle), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.DuplicateBannedSymbolMessage), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(DuplicateBannedSymbolTitle)), + messageFormat: CreateLocalizableResourceString(nameof(DuplicateBannedSymbolMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(BannedApiAnalyzerResources.DuplicateBannedSymbolDescription), BannedApiAnalyzerResources.ResourceManager, typeof(BannedApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(DuplicateBannedSymbolDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/BannedApiAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); } From 24699acc2cb77b20fab38b135f60a2e0255d9390 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 12:18:42 -0700 Subject: [PATCH 03/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.CSharp.Analyzers --- .../CSharp/CSharpImmutableObjectMethodAnalyzer.cs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs index 8bfccb2bd8..d25e2405a3 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs @@ -11,23 +11,20 @@ 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 SupportedDiagnostics => ImmutableArray.Create(DoNotIgnoreReturnValueDiagnosticRule); From 1df864f235e960756509ea43dcc72f3788c4b832 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 12:22:53 -0700 Subject: [PATCH 04/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers --- .../Core/ExplicitAllocationAnalyzer.cs | 10 ++++++---- .../PerformanceSensitiveAnalyzersResources.cs | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/PerformanceSensitiveAnalyzers/Core/PerformanceSensitiveAnalyzersResources.cs diff --git a/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs index 5255ab26b9..241ffc998f 100644 --- a/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers { + using static PerformanceSensitiveAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] internal sealed class ExplicitAllocationAnalyzer : AbstractAllocationAnalyzer { @@ -19,10 +21,10 @@ internal sealed class ExplicitAllocationAnalyzer : AbstractAllocationAnalyzer // HAA0505 is retired and should not be reused public const string LetCauseRuleId = "HAA0506"; - private static readonly LocalizableString s_localizableArrayCreationRuleTitleAndMessage = new LocalizableResourceString(nameof(PerformanceSensitiveAnalyzersResources.NewArrayRuleTitleAndMessage), PerformanceSensitiveAnalyzersResources.ResourceManager, typeof(PerformanceSensitiveAnalyzersResources)); - private static readonly LocalizableString s_localizableObjectCreationRuleTitleAndMessage = new LocalizableResourceString(nameof(PerformanceSensitiveAnalyzersResources.NewObjectRuleTitleAndMessage), PerformanceSensitiveAnalyzersResources.ResourceManager, typeof(PerformanceSensitiveAnalyzersResources)); - private static readonly LocalizableString s_localizablAnonymousObjectCreationRuleTitleAndMessage = new LocalizableResourceString(nameof(PerformanceSensitiveAnalyzersResources.AnonymousNewObjectRuleTitleAndMessage), PerformanceSensitiveAnalyzersResources.ResourceManager, typeof(PerformanceSensitiveAnalyzersResources)); - private static readonly LocalizableString s_localizableLetCauseRuleTitleAndMessage = new LocalizableResourceString(nameof(PerformanceSensitiveAnalyzersResources.LetCauseRuleTitleAndMessage), PerformanceSensitiveAnalyzersResources.ResourceManager, typeof(PerformanceSensitiveAnalyzersResources)); + private static readonly LocalizableString s_localizableArrayCreationRuleTitleAndMessage = CreateLocalizableResourceString(nameof(NewArrayRuleTitleAndMessage)); + private static readonly LocalizableString s_localizableObjectCreationRuleTitleAndMessage = CreateLocalizableResourceString(nameof(NewObjectRuleTitleAndMessage)); + private static readonly LocalizableString s_localizablAnonymousObjectCreationRuleTitleAndMessage = CreateLocalizableResourceString(nameof(AnonymousNewObjectRuleTitleAndMessage)); + private static readonly LocalizableString s_localizableLetCauseRuleTitleAndMessage = CreateLocalizableResourceString(nameof(LetCauseRuleTitleAndMessage)); internal static DiagnosticDescriptor ArrayCreationRule = new( ArrayCreationRuleId, diff --git a/src/PerformanceSensitiveAnalyzers/Core/PerformanceSensitiveAnalyzersResources.cs b/src/PerformanceSensitiveAnalyzers/Core/PerformanceSensitiveAnalyzersResources.cs new file mode 100644 index 0000000000..d1904a25bb --- /dev/null +++ b/src/PerformanceSensitiveAnalyzers/Core/PerformanceSensitiveAnalyzersResources.cs @@ -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.PerformanceSensitiveAnalyzers +{ + internal partial class PerformanceSensitiveAnalyzersResources + { + private static readonly Type s_resourcesType = typeof(PerformanceSensitiveAnalyzersResources); + + 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); + } +} From 7fd11187b254c5d6a3ebc6bebb118b4549c8f83a Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 12:34:58 -0700 Subject: [PATCH 05/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers --- .../CSharp/Analyzers/AnalyzersResources.cs | 17 +++++++++++ .../CallSiteImplicitAllocationAnalyzer.cs | 16 ++++------ .../ConcatenationAllocationAnalyzer.cs | 16 ++++------ .../DisplayClassAllocationAnalyzer.cs | 22 +++++--------- .../Analyzers/EnumeratorAllocationAnalyzer.cs | 8 ++--- .../TypeConversionAllocationAnalyzer.cs | 29 ++++++------------- 6 files changed, 48 insertions(+), 60 deletions(-) create mode 100644 src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/AnalyzersResources.cs diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/AnalyzersResources.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/AnalyzersResources.cs new file mode 100644 index 0000000000..a7edb9b851 --- /dev/null +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/AnalyzersResources.cs @@ -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.CSharp.PerformanceSensitiveAnalyzers +{ + internal partial class AnalyzersResources + { + private static readonly Type s_resourcesType = typeof(AnalyzersResources); + + 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); + } +} diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs index 9974569e2b..a9ac40cb44 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs @@ -10,30 +10,26 @@ namespace Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers { + using static AnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp)] internal sealed class CallSiteImplicitAllocationAnalyzer : AbstractAllocationAnalyzer { public const string ParamsParameterRuleId = "HAA0101"; public const string ValueTypeNonOverridenCallRuleId = "HAA0102"; - private static readonly LocalizableString s_localizableParamsParameterRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ParamsParameterRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableParamsParameterRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ParamsParameterRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - - private static readonly LocalizableString s_localizableValueTypeNonOverridenCallRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ValueTypeNonOverridenCallRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableValueTypeNonOverridenCallRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ValueTypeNonOverridenCallRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - internal static DiagnosticDescriptor ParamsParameterRule = new( ParamsParameterRuleId, - s_localizableParamsParameterRuleTitle, - s_localizableParamsParameterRuleMessage, + CreateLocalizableResourceString(nameof(ParamsParameterRuleTitle)), + CreateLocalizableResourceString(nameof(ParamsParameterRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); internal static DiagnosticDescriptor ValueTypeNonOverridenCallRule = new( ValueTypeNonOverridenCallRuleId, - s_localizableValueTypeNonOverridenCallRuleTitle, - s_localizableValueTypeNonOverridenCallRuleMessage, + CreateLocalizableResourceString(nameof(ValueTypeNonOverridenCallRuleTitle)), + CreateLocalizableResourceString(nameof(ValueTypeNonOverridenCallRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs index 44db47c165..e4b865cc1d 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs @@ -11,22 +11,18 @@ namespace Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers { + using static AnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp)] internal sealed class ConcatenationAllocationAnalyzer : AbstractAllocationAnalyzer { public const string StringConcatenationAllocationRuleId = "HAA0201"; public const string ValueTypeToReferenceTypeInAStringConcatenationRuleId = "HAA0202"; - private static readonly LocalizableString s_localizableStringConcatenationAllocationRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.StringConcatenationAllocationRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableStringConcatenationAllocationRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.StringConcatenationAllocationRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - - private static readonly LocalizableString s_localizableValueTypeToReferenceTypeInAStringConcatenationRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ValueTypeToReferenceTypeInAStringConcatenationRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableValueTypeToReferenceTypeInAStringConcatenationRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ValueTypeToReferenceTypeInAStringConcatenationRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - internal static DiagnosticDescriptor StringConcatenationAllocationRule = new( StringConcatenationAllocationRuleId, - s_localizableStringConcatenationAllocationRuleTitle, - s_localizableStringConcatenationAllocationRuleMessage, + CreateLocalizableResourceString(nameof(StringConcatenationAllocationRuleTitle)), + CreateLocalizableResourceString(nameof(StringConcatenationAllocationRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true, @@ -34,8 +30,8 @@ internal sealed class ConcatenationAllocationAnalyzer : AbstractAllocationAnalyz internal static DiagnosticDescriptor ValueTypeToReferenceTypeInAStringConcatenationRule = new( ValueTypeToReferenceTypeInAStringConcatenationRuleId, - s_localizableValueTypeToReferenceTypeInAStringConcatenationRuleTitle, - s_localizableValueTypeToReferenceTypeInAStringConcatenationRuleMessage, + CreateLocalizableResourceString(nameof(ValueTypeToReferenceTypeInAStringConcatenationRuleTitle)), + CreateLocalizableResourceString(nameof(ValueTypeToReferenceTypeInAStringConcatenationRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true, diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs index 16e8cb452a..c9576159df 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs @@ -12,6 +12,7 @@ namespace Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers { + using static AnalyzersResources; [DiagnosticAnalyzer(LanguageNames.CSharp)] internal sealed class DisplayClassAllocationAnalyzer : AbstractAllocationAnalyzer @@ -20,35 +21,26 @@ internal sealed class DisplayClassAllocationAnalyzer : AbstractAllocationAnalyze public const string ClosureCaptureRuleId = "HAA0302"; public const string LambaOrAnonymousMethodInGenericMethodRuleId = "HAA0303"; - private static readonly LocalizableString s_localizableClosureDriverRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ClosureDriverRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableClosureDriverRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ClosureDriverRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - - private static readonly LocalizableString s_localizableClosureCaptureRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ClosureCaptureRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableClosureCaptureRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ClosureCaptureRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - - private static readonly LocalizableString s_localizableLambaOrAnonymousMethodInGenericMethodRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.LambaOrAnonymousMethodInGenericMethodRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableLambaOrAnonymousMethodInGenericMethodRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.LambaOrAnonymousMethodInGenericMethodRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - internal static DiagnosticDescriptor ClosureDriverRule = new( ClosureDriverRuleId, - s_localizableClosureDriverRuleTitle, - s_localizableClosureDriverRuleMessage, + CreateLocalizableResourceString(nameof(ClosureDriverRuleTitle)), + CreateLocalizableResourceString(nameof(ClosureDriverRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); internal static DiagnosticDescriptor ClosureCaptureRule = new( ClosureCaptureRuleId, - s_localizableClosureCaptureRuleTitle, - s_localizableClosureCaptureRuleMessage, + CreateLocalizableResourceString(nameof(ClosureCaptureRuleTitle)), + CreateLocalizableResourceString(nameof(ClosureCaptureRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); internal static DiagnosticDescriptor LambaOrAnonymousMethodInGenericMethodRule = new( LambaOrAnonymousMethodInGenericMethodRuleId, - s_localizableLambaOrAnonymousMethodInGenericMethodRuleTitle, - s_localizableLambaOrAnonymousMethodInGenericMethodRuleMessage, + CreateLocalizableResourceString(nameof(LambaOrAnonymousMethodInGenericMethodRuleTitle)), + CreateLocalizableResourceString(nameof(LambaOrAnonymousMethodInGenericMethodRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs index 6fb0be3f1f..d4156ca96b 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs @@ -11,19 +11,17 @@ namespace Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers { + using static AnalyzersResources; [DiagnosticAnalyzer(LanguageNames.CSharp)] internal sealed class EnumeratorAllocationAnalyzer : AbstractAllocationAnalyzer { public const string ReferenceTypeEnumeratorRuleId = "HAA0401"; - private static readonly LocalizableString s_localizableReferenceTypeEnumeratorRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ReferenceTypeEnumeratorRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableReferenceTypeEnumeratorRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ReferenceTypeEnumeratorRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - internal static DiagnosticDescriptor ReferenceTypeEnumeratorRule = new( ReferenceTypeEnumeratorRuleId, - s_localizableReferenceTypeEnumeratorRuleTitle, - s_localizableReferenceTypeEnumeratorRuleMessage, + CreateLocalizableResourceString(nameof(ReferenceTypeEnumeratorRuleTitle)), + CreateLocalizableResourceString(nameof(ReferenceTypeEnumeratorRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs index 7f2be59bf6..7d39f6dd2e 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs @@ -11,6 +11,7 @@ namespace Microsoft.CodeAnalysis.CSharp.PerformanceSensitiveAnalyzers { + using static AnalyzersResources; [DiagnosticAnalyzer(LanguageNames.CSharp)] internal sealed class TypeConversionAllocationAnalyzer : AbstractAllocationAnalyzer @@ -20,46 +21,34 @@ internal sealed class TypeConversionAllocationAnalyzer : AbstractAllocationAnaly public const string MethodGroupAllocationRuleId = "HAA0603"; public const string ReadonlyMethodGroupAllocationRuleId = "HAA0604"; - private static readonly LocalizableString s_localizableValueTypeToReferenceTypeConversionRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ValueTypeToReferenceTypeConversionRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableValueTypeToReferenceTypeConversionRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ValueTypeToReferenceTypeConversionRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - - private static readonly LocalizableString s_localizableDelegateOnStructInstanceRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.DelegateOnStructInstanceRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableDelegateOnStructInstanceRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.DelegateOnStructInstanceRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - - private static readonly LocalizableString s_localizableMethodGroupAllocationRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.MethodGroupAllocationRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableMethodGroupAllocationRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.MethodGroupAllocationRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - - private static readonly LocalizableString s_localizableReadonlyMethodGroupAllocationRuleTitle = new LocalizableResourceString(nameof(AnalyzersResources.ReadonlyMethodGroupAllocationRuleTitle), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - private static readonly LocalizableString s_localizableReadonlyMethodGroupAllocationRuleMessage = new LocalizableResourceString(nameof(AnalyzersResources.ReadonlyMethodGroupAllocationRuleMessage), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)); - internal static DiagnosticDescriptor ValueTypeToReferenceTypeConversionRule = new( ValueTypeToReferenceTypeConversionRuleId, - s_localizableValueTypeToReferenceTypeConversionRuleTitle, - s_localizableValueTypeToReferenceTypeConversionRuleMessage, + CreateLocalizableResourceString(nameof(ValueTypeToReferenceTypeConversionRuleTitle)), + CreateLocalizableResourceString(nameof(ValueTypeToReferenceTypeConversionRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); internal static DiagnosticDescriptor DelegateOnStructInstanceRule = new( DelegateOnStructInstanceRuleId, - s_localizableDelegateOnStructInstanceRuleTitle, - s_localizableDelegateOnStructInstanceRuleMessage, + CreateLocalizableResourceString(nameof(DelegateOnStructInstanceRuleTitle)), + CreateLocalizableResourceString(nameof(DelegateOnStructInstanceRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); internal static DiagnosticDescriptor MethodGroupAllocationRule = new( MethodGroupAllocationRuleId, - s_localizableMethodGroupAllocationRuleTitle, - s_localizableMethodGroupAllocationRuleMessage, + CreateLocalizableResourceString(nameof(MethodGroupAllocationRuleTitle)), + CreateLocalizableResourceString(nameof(MethodGroupAllocationRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Warning, isEnabledByDefault: true); internal static DiagnosticDescriptor ReadonlyMethodGroupAllocationRule = new( ReadonlyMethodGroupAllocationRuleId, - s_localizableReadonlyMethodGroupAllocationRuleTitle, - s_localizableReadonlyMethodGroupAllocationRuleMessage, + CreateLocalizableResourceString(nameof(ReadonlyMethodGroupAllocationRuleTitle)), + CreateLocalizableResourceString(nameof(ReadonlyMethodGroupAllocationRuleMessage)), DiagnosticCategory.Performance, DiagnosticSeverity.Info, isEnabledByDefault: true); From 31e54b33a01b0a4e6277008f7495d2a0589b705a Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 16:17:19 -0700 Subject: [PATCH 06/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.NetAnalyzers --- .../AbstractTypesShouldNotHaveConstructors.cs | 24 +- .../AvoidEmptyInterfaces.cs | 24 +- .../AvoidExcessiveParametersOnGenericTypes.cs | 14 +- .../ApiDesignGuidelines/AvoidOutParameters.cs | 26 +- ...CancellationTokenParametersMustComeLast.cs | 11 +- .../CollectionPropertiesShouldBeReadOnly.cs | 23 +- ...lectionsShouldImplementGenericInterface.cs | 28 +- .../DeclareTypesInNamespaces.cs | 24 +- .../DefineAccessorsForAttributeArguments.cs | 64 ++-- .../DoNotCatchGeneralExceptionTypes.cs | 24 +- ...NotDeclareProtectedMembersInSealedTypes.cs | 14 +- ...DoNotDeclareStaticMembersOnGenericTypes.cs | 23 +- .../DoNotDeclareVisibleInstanceFields.cs | 24 +- .../DoNotDirectlyAwaitATask.Fixer.cs | 8 +- .../DoNotDirectlyAwaitATask.cs | 12 +- .../DoNotExposeGenericLists.cs | 14 +- .../DoNotHideBaseClassMethods.cs | 12 +- .../DoNotNameEnumValuesReserved.cs | 12 +- ...tOverloadOperatorEqualsOnReferenceTypes.cs | 12 +- .../DoNotPassTypesByReference.cs | 14 +- .../DoNotPrefixEnumValuesWithTypeName.cs | 14 +- ...NotRaiseExceptionsInUnexpectedLocations.cs | 65 ++-- .../EnumShouldNotHaveDuplicatedValues.cs | 44 +-- .../EnumStorageShouldBeInt32.cs | 25 +- .../EnumWithFlagsAttribute.cs | 44 ++- .../EnumsShouldHaveZeroValue.cs | 72 ++-- .../ApiDesignGuidelines/EquatableAnalyzer.cs | 22 +- .../EventsShouldNotHaveBeforeOrAfterPrefix.cs | 14 +- .../ExceptionsShouldBePublic.cs | 24 +- .../IdentifiersShouldDifferByMoreThanCase.cs | 23 +- .../IdentifiersShouldHaveCorrectPrefix.cs | 46 +-- .../IdentifiersShouldHaveCorrectSuffix.cs | 45 +-- .../IdentifiersShouldNotContainTypeNames.cs | 23 +- .../IdentifiersShouldNotContainUnderscores.cs | 160 ++++---- ...IdentifiersShouldNotHaveIncorrectSuffix.cs | 84 +++-- .../IdentifiersShouldNotMatchKeywords.cs | 84 +++-- .../ImplementIDisposableCorrectly.cs | 177 ++++----- .../ImplementStandardExceptionConstructors.cs | 23 +- ...faceMethodsShouldBeCallableByChildTypes.cs | 23 +- ...embliesWithAttributesDiagnosticAnalyzer.cs | 47 ++- .../MarkAssembliesWithComVisible.cs | 51 +-- .../MarkAttributesWithAttributeUsage.cs | 21 +- .../MovePInvokesToNativeMethodsClass.cs | 25 +- .../NestedTypesShouldNotBeVisible.cs | 46 +-- .../NonConstantFieldsShouldNotBeVisible.cs | 24 +- .../OperatorOverloadsHaveNamedAlternates.cs | 80 ++-- ...orsShouldHaveSymmetricalOverloads.Fixer.cs | 4 +- ...OperatorsShouldHaveSymmetricalOverloads.cs | 27 +- ...eratorEqualsOnOverridingValueTypeEquals.cs | 23 +- ...rideEqualsAndOperatorEqualsOnValueTypes.cs | 43 +-- .../OverrideMethodsOnComparableTypes.cs | 66 ++-- ...arameterNamesShouldMatchBaseDeclaration.cs | 24 +- .../PassSystemUriObjectsInsteadOfStrings.cs | 24 +- .../PropertiesShouldNotBeWriteOnly.cs | 43 ++- .../PropertiesShouldNotReturnArrays.cs | 24 +- .../PropertyNamesShouldNotMatchGetMethods.cs | 23 +- .../ProvideObsoleteAttributeMessage.cs | 24 +- .../ApiDesignGuidelines/StaticHolderTypes.cs | 18 +- .../TypeNamesShouldNotMatchNamespaces.cs | 46 +-- ...atOwnDisposableFieldsShouldBeDisposable.cs | 23 +- .../UriParametersShouldNotBeStrings.cs | 24 +- .../UriPropertiesShouldNotBeStrings.cs | 24 +- .../UriReturnValuesShouldNotBeStrings.cs | 24 +- .../UseEventsWhereAppropriate.cs | 24 +- .../UseGenericEventHandlerInstances.cs | 29 +- .../UseIntegralOrStringArgumentForIndexers.cs | 24 +- .../ApiDesignGuidelines/UsePreferredTerms.cs | 342 +++++++++--------- .../UsePropertiesWhereAppropriate.cs | 25 +- .../AvoidCallingProblematicMethods.cs | 216 +++++------ .../AvoidUsingCrefTagsWithAPrefix.cs | 24 +- .../AvoidDeadConditionalCode.cs | 42 ++- .../AvoidUninstantiatedInternalClasses.cs | 26 +- .../AvoidUnusedPrivateFields.cs | 24 +- .../Maintainability/CodeMetricsAnalyzer.cs | 135 ++++--- .../DoNotIgnoreMethodResults.cs | 147 ++++---- .../Maintainability/ReviewUnusedParameters.cs | 24 +- .../UseNameofInPlaceOfString.cs | 23 +- .../VariableNamesShouldNotMatchFieldNames.cs | 48 +-- .../MicrosoftCodeQualityAnalyzersResources.cs | 18 + ...igningSymbolAndItsMemberInSameStatement.cs | 15 +- .../AvoidDuplicateElementInitialization.cs | 23 +- .../AvoidInfiniteRecursion.cs | 14 +- .../AvoidPropertySelfAssignment.cs | 11 +- ...NotCallOverridableMethodsInConstructors.cs | 22 +- .../DoNotDeclareEventFieldsAsVirtual.cs | 14 +- .../DoNotInitializeUnnecessarily.cs | 10 +- .../DoNotRaiseExceptionsInExceptionClauses.cs | 23 +- .../QualityGuidelines/MarkMembersAsStatic.cs | 24 +- .../PreferJaggedArraysOverMultidimensional.cs | 65 ++-- .../RemoveEmptyFinalizers.cs | 22 +- .../RethrowToPreserveStackDetails.cs | 21 +- .../ReviewVisibleEventHandlers.cs | 14 +- ...SealMethodsThatSatisfyPrivateInterfaces.cs | 24 +- .../UseLiteralsWhereAppropriate.cs | 46 +-- .../ValidateArgumentsOfPublicMethods.cs | 23 +- ...iewSqlQueriesForSecurityVulnerabilities.cs | 25 +- ...eCollectionOnAnImmutableCollectionValue.cs | 22 +- .../AvoidStringBuilderPInvokeParameters.cs | 23 +- ...tUseOutAttributeStringPInvokeParameters.cs | 23 +- ...leanPInvokeArgumentsWithMarshalAs.Fixer.cs | 1 - ...arkBooleanPInvokeArgumentsWithMarshalAs.cs | 45 ++- .../PInvokeDiagnosticAnalyzer.cs | 46 +-- .../PlatformCompatibilityAnalyzer.cs | 192 +++++----- .../UseManagedEquivalentsOfWin32Api.cs | 24 +- .../MicrosoftNetCoreAnalyzersResources.cs | 18 + .../UseAsSpanInsteadOfRangeIndexer.cs | 15 +- .../Performance/UseCountProperly.cs | 48 +-- .../AvoidAssemblyLocationInSingleFile.cs | 20 +- ...kAssembliesWithNeutralResourcesLanguage.cs | 26 +- ...ibuteStringLiteralsShouldParseCorrectly.cs | 48 +-- .../Runtime/AvoidUnsealedAttributes.cs | 22 +- .../AvoidZeroLengthArrayAllocations.cs | 9 +- .../CallGCSuppressFinalizeCorrectly.cs | 84 +++-- .../DisposableFieldsShouldBeDisposed.cs | 23 +- .../DisposableTypesShouldDeclareFinalizer.cs | 24 +- ...isposeMethodsShouldCallBaseClassDispose.cs | 23 +- .../DisposeObjectsBeforeLosingScope.cs | 86 ++--- ...alizersForTypesDerivedFromMemoryManager.cs | 15 +- ...oNotLockOnObjectsWithWeakIdentity.Fixer.cs | 1 - .../DoNotLockOnObjectsWithWeakIdentity.cs | 22 +- .../DoNotPassLiteralsAsLocalizedParameters.cs | 23 +- .../DoNotRaiseReservedExceptionTypes.cs | 45 +-- ...lectionsInsteadUseTheCollectionDirectly.cs | 24 +- .../DoNotUseReferenceEqualsWithValueTypes.cs | 18 +- .../DoNotUseStackallocInLoopsAnalyzer.cs | 8 +- ...otUseTimersThatPreventPowerStateChanges.cs | 24 +- ...CancellationTokenToInvocations.Analyzer.cs | 16 +- .../ImplementISerializableCorrectly.cs | 65 ++-- .../ImplementSerializationMethodsCorrectly.cs | 107 +++--- .../Runtime/InitializeStaticFieldsInline.cs | 47 ++- .../InstantiateArgumentExceptionsCorrectly.cs | 67 ++-- .../Runtime/NormalizeStringsToUppercase.cs | 24 +- ...referConstCharOverConstUnitString.Fixer.cs | 12 +- ...ferConstCharOverConstUnitStringAnalyzer.cs | 22 +- .../PreferStreamAsyncMemoryOverloads.cs | 59 ++- ...PreferStringContainsOverIndexOfAnalyzer.cs | 24 +- ...PreferTypedStringBuilderAppendOverloads.cs | 11 +- ...videCorrectArgumentsToFormattingMethods.cs | 28 +- ...DeserializationMethodsForOptionalFields.cs | 48 +-- .../SerializationRulesDiagnosticAnalyzer.cs | 127 +++---- .../Runtime/SpecifyCultureInfo.cs | 23 +- .../Runtime/SpecifyIFormatProvider.cs | 84 +++-- .../Runtime/SpecifyStringComparison.cs | 46 ++- .../TestForEmptyStringsUsingStringLength.cs | 22 +- .../Runtime/TestForNaNCorrectly.cs | 24 +- .../Runtime/UseEnvironmentProcessId.cs | 11 +- .../Runtime/UseOrdinalStringComparison.cs | 23 +- .../Security/ApprovedCipherModeAnalyzer.cs | 32 +- ...ormatterSerializableObjectGraphAnalyzer.cs | 6 +- ...aTableInSerializableObjectGraphAnalyzer.cs | 6 +- ...aSetDataTableInSerializableTypeAnalyzer.cs | 14 +- ...bleInWebSerializableObjectGraphAnalyzer.cs | 6 +- ...rchiveItemPathToTheTargetFileSystemPath.cs | 11 +- .../Security/DoNotAddSchemaByURL.cs | 32 +- ...otCallDangerousMethodsInDeserialization.cs | 34 +- .../DoNotDisableCertificateValidation.cs | 34 +- .../DoNotDisableHttpClientCRLCheck.cs | 19 +- .../DoNotDisableHttpHeaderChecking.cs | 32 +- .../Security/DoNotDisableRequestValidation.cs | 32 +- .../Security/DoNotHardCodeCertificate.cs | 10 +- .../Security/DoNotHardCodeEncryptionKey.cs | 11 +- .../Security/DoNotInstallRootCert.cs | 21 +- .../DoNotSerializeTypeWithPointerFields.cs | 34 +- .../Security/DoNotSetSwitch.cs | 18 +- .../Security/DoNotUseAccountSAS.cs | 32 +- ...DoNotUseCreateEncryptorWithNonDefaultIV.cs | 19 +- .../Security/DoNotUseDSA.cs | 34 +- .../Security/DoNotUseDataSetReadXml.cs | 10 +- .../Security/DoNotUseDataTableReadXml.cs | 6 +- .../DoNotUseDeprecatedSecurityProtocols.cs | 19 +- ...DoNotUseInsecureCryptographicAlgorithms.cs | 43 +-- ...ecureDeserializerBinaryFormatterMethods.cs | 8 +- ...eserializerBinaryFormatterWithoutBinder.cs | 11 +- ...ascriptSerializerWithSimpleTypeResolver.cs | 11 +- ...nsecureDeserializerJsonNetWithoutBinder.cs | 11 +- ...oNotUseInsecureDeserializerLosFormatter.cs | 8 +- ...ializerNetDataContractSerializerMethods.cs | 8 +- ...rNetDataContractSerializerWithoutBinder.cs | 11 +- ...nsecureDeserializerObjectStateFormatter.cs | 8 +- .../Security/DoNotUseInsecureRandomness.cs | 32 +- .../DoNotUseInsecureSettingsForJsonNet.cs | 11 +- .../Security/DoNotUseObsoleteKDFAlgorithm.cs | 34 +- .../Security/DoNotUseWeakKDFAlgorithm.cs | 34 +- ...NotUseWeakKDFInsufficientIterationCount.cs | 21 +- .../Security/DoNotUseXslTransform.cs | 28 +- .../Security/Helpers/SecurityHelpers.cs | 89 +---- .../Security/JsonNetTypeNameHandling.cs | 8 +- ...ReferenceCycleInDeserializedObjectGraph.cs | 36 +- ...wCodeForCommandExecutionVulnerabilities.cs | 6 +- ...eviewCodeForDllInjectionVulnerabilities.cs | 6 +- ...CodeForFilePathInjectionVulnerabilities.cs | 6 +- ...ForInformationDisclosureVulnerabilities.cs | 6 +- ...viewCodeForLdapInjectionVulnerabilities.cs | 6 +- ...eviewCodeForOpenRedirectVulnerabilities.cs | 6 +- ...iewCodeForRegexInjectionVulnerabilities.cs | 6 +- ...eviewCodeForSqlInjectionVulnerabilities.cs | 6 +- ...iewCodeForXPathInjectionVulnerabilities.cs | 6 +- ...viewCodeForXamlInjectionVulnerabilities.cs | 6 +- ...eviewCodeForXmlInjectionVulnerabilities.cs | 6 +- .../ReviewCodeForXssVulnerabilities.cs | 6 +- .../Security/SetHttpOnlyForHttpCookie.cs | 11 +- .../Security/SetViewStateUserKey.cs | 32 +- .../Security/SslProtocolsAnalyzer.cs | 19 +- .../UseAutoValidateAntiforgeryToken.cs | 21 +- .../Security/UseContainerLevelAccessPolicy.cs | 34 +- ...UseDefaultDllImportSearchPathsAttribute.cs | 20 +- .../Security/UseRSAWithSufficientKeySize.cs | 34 +- .../Security/UseSecureCookiesASPNetCore.cs | 21 +- .../UseSharedAccessProtocolHttpsOnly.cs | 34 +- .../Security/UseXmlReaderBase.cs | 12 +- .../Security/UseXmlReaderForDataSetReadXml.cs | 24 +- .../Security/UseXmlReaderForDeserialize.cs | 24 +- .../Security/UseXmlReaderForSchemaRead.cs | 24 +- .../UseXmlReaderForValidatingReader.cs | 24 +- .../Security/UseXmlReaderForXPathDocument.cs | 24 +- ...eTaskCompletionSourceWithWrongArguments.cs | 8 +- ...CreateTasksWithoutPassingATaskScheduler.cs | 24 +- .../Tasks/UseValueTasksCorrectly.cs | 26 +- .../ProvideCorrectArgumentToEnumHasFlag.cs | 14 +- .../AvoidDuplicateAccelerators.cs | 24 +- ...allBaseClassMethodsOnISerializableTypes.cs | 24 +- .../DoNotCatchCorruptedStateExceptions.cs | 23 +- ...oNotMarkServicedComponentsWithWebMethod.cs | 24 +- .../DoNotUseInsecureDtdProcessing.cs | 70 ++-- ...oNotUseInsecureDtdProcessingInApiDesign.cs | 34 +- .../DoNotUseInsecureXSLTScriptExecution.cs | 16 +- .../Helpers/SecurityDiagnosticHelpers.cs | 10 - ...ersWithValidateAntiforgeryTokenAnalyzer.cs | 52 +-- ...arkWindowsFormsEntryPointsWithStaThread.cs | 24 +- ...MicrosoftNetFrameworkAnalyzersResources.cs | 18 + .../SetLocaleForDataTypes.cs | 24 +- .../SpecifyMessageBoxOptions.cs | 24 +- .../TypesShouldNotExtendCertainBaseTypes.cs | 22 +- 233 files changed, 3564 insertions(+), 3867 deletions(-) create mode 100644 src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/MicrosoftCodeQualityAnalyzersResources.cs create mode 100644 src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/MicrosoftNetCoreAnalyzersResources.cs create mode 100644 src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MicrosoftNetFrameworkAnalyzersResources.cs diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs index 1f815c17d0..84ca50ed6c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1012: Abstract classes should not have public constructors /// @@ -16,18 +18,16 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines public sealed class AbstractTypesShouldNotHaveConstructorsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1012"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AbstractTypesShouldNotHaveConstructorsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AbstractTypesShouldNotHaveConstructorsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AbstractTypesShouldNotHaveConstructorsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AbstractTypesShouldNotHaveConstructorsTitle)), + CreateLocalizableResourceString(nameof(AbstractTypesShouldNotHaveConstructorsMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(AbstractTypesShouldNotHaveConstructorsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs index b2632d26bb..b267e924a5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1040: Avoid empty interfaces /// @@ -17,19 +19,15 @@ public sealed class AvoidEmptyInterfacesAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1040"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidEmptyInterfacesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidEmptyInterfacesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidEmptyInterfacesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.CandidateForRemoval, - s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidEmptyInterfacesTitle)), + CreateLocalizableResourceString(nameof(AvoidEmptyInterfacesMessage)), + DiagnosticCategory.Design, + RuleLevel.CandidateForRemoval, + CreateLocalizableResourceString(nameof(AvoidEmptyInterfacesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs index 7487bdcfd4..2cd2666e90 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs @@ -8,23 +8,21 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class AvoidExcessiveParametersOnGenericTypes : DiagnosticAnalyzer { internal const string RuleId = "CA1005"; internal const int MaximumNumberOfTypeParameters = 2; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveParametersOnGenericTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveParametersOnGenericTypesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveParametersOnGenericTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(AvoidExcessiveParametersOnGenericTypesTitle)), + CreateLocalizableResourceString(nameof(AvoidExcessiveParametersOnGenericTypesMessage)), DiagnosticCategory.Design, RuleLevel.Disabled, - s_localizableDescription, + CreateLocalizableResourceString(nameof(AvoidExcessiveParametersOnGenericTypesDescription)), isPortedFxCopRule: true, isDataflowRule: false, isEnabledByDefaultInAggressiveMode: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs index 4094cb8305..90033cec50 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs @@ -10,25 +10,23 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class AvoidOutParameters : DiagnosticAnalyzer { internal const string RuleId = "CA1021"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidOutParametersTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidOutParametersMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidOutParametersDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidOutParametersTitle)), + CreateLocalizableResourceString(nameof(AvoidOutParametersMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(AvoidOutParametersDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs index e782d806d1..4768a6e7fd 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1068: CancellationToken parameters must come last. /// @@ -17,13 +19,10 @@ public sealed class CancellationTokenParametersMustComeLastAnalyzer : Diagnostic { internal const string RuleId = "CA1068"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.CancellationTokenParametersMustComeLastTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.CancellationTokenParametersMustComeLastMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(CancellationTokenParametersMustComeLastTitle)), + CreateLocalizableResourceString(nameof(CancellationTokenParametersMustComeLastMessage)), DiagnosticCategory.Design, RuleLevel.IdeSuggestion, description: null, diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs index aeb003e49d..ff51f21930 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2227: Collection properties should be read only /// @@ -34,18 +36,15 @@ public class CollectionPropertiesShouldBeReadOnlyAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2227"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.CollectionPropertiesShouldBeReadOnlyTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.CollectionPropertiesShouldBeReadOnlyMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.CollectionPropertiesShouldBeReadOnlyDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, // Guidance needs to be improved to be more clear - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(CollectionPropertiesShouldBeReadOnlyTitle)), + CreateLocalizableResourceString(nameof(CollectionPropertiesShouldBeReadOnlyMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, // Guidance needs to be improved to be more clear + description: CreateLocalizableResourceString(nameof(CollectionPropertiesShouldBeReadOnlyDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs index 915cdf9838..67b351bdb8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1010: Collections should implement generic interface /// @@ -20,32 +22,14 @@ public sealed class CollectionsShouldImplementGenericInterfaceAnalyzer : Diagnos { internal const string RuleId = "CA1010"; - private static readonly LocalizableString s_localizableTitle = - new LocalizableResourceString( - nameof(MicrosoftCodeQualityAnalyzersResources.CollectionsShouldImplementGenericInterfaceTitle), - MicrosoftCodeQualityAnalyzersResources.ResourceManager, - typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableStandardMessage = - new LocalizableResourceString( - nameof(MicrosoftCodeQualityAnalyzersResources.CollectionsShouldImplementGenericInterfaceMessage), - MicrosoftCodeQualityAnalyzersResources.ResourceManager, - typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescription = - new LocalizableResourceString( - nameof(MicrosoftCodeQualityAnalyzersResources.CollectionsShouldImplementGenericInterfaceDescription), - MicrosoftCodeQualityAnalyzersResources.ResourceManager, - typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableStandardMessage, + CreateLocalizableResourceString(nameof(CollectionsShouldImplementGenericInterfaceTitle)), + CreateLocalizableResourceString(nameof(CollectionsShouldImplementGenericInterfaceMessage)), DiagnosticCategory.Design, RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(CollectionsShouldImplementGenericInterfaceDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs index 2e7345c878..04c021aab8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1050: Declare types in namespaces /// @@ -16,19 +18,15 @@ public sealed class DeclareTypesInNamespacesAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1050"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DeclareTypesInNamespacesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DeclareTypesInNamespacesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DeclareTypesInNamespacesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DeclareTypesInNamespacesTitle)), + CreateLocalizableResourceString(nameof(DeclareTypesInNamespacesMessage)), + DiagnosticCategory.Design, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(DeclareTypesInNamespacesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs index 85b81b297e..9cba648c8b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1019: Define accessors for attribute arguments /// @@ -25,37 +27,37 @@ public sealed class DefineAccessorsForAttributeArgumentsAnalyzer : DiagnosticAna internal const string MakePublicCase = "MakePublic"; internal const string RemoveSetterCase = "RemoveSetter"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DefineAccessorsForAttributeArgumentsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_defaultRuleMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DefineAccessorsForAttributeArgumentsMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_increaseVisibilityMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DefineAccessorsForAttributeArgumentsMessageIncreaseVisibility), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_removeSetterMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DefineAccessorsForAttributeArgumentsMessageRemoveSetter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_defaultRuleMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: null, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor IncreaseVisibilityRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_increaseVisibilityMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: null, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor RemoveSetterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_removeSetterMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: null, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DefineAccessorsForAttributeArgumentsTitle)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DefineAccessorsForAttributeArgumentsMessageDefault)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: null, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor IncreaseVisibilityRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DefineAccessorsForAttributeArgumentsMessageIncreaseVisibility)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: null, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RemoveSetterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DefineAccessorsForAttributeArgumentsMessageRemoveSetter)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: null, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, IncreaseVisibilityRule, RemoveSetterRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs index ef77641dc7..5ed86408c5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1031: Do not catch general exception types /// @@ -17,18 +19,16 @@ internal sealed class DoNotCatchGeneralExceptionTypesAnalyzer : DoNotCatchGenera { internal const string RuleId = "CA1031"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotCatchGeneralExceptionTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotCatchGeneralExceptionTypesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotCatchGeneralExceptionTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotCatchGeneralExceptionTypesTitle)), + CreateLocalizableResourceString(nameof(DoNotCatchGeneralExceptionTypesMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotCatchGeneralExceptionTypesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); + public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); public DoNotCatchGeneralExceptionTypesAnalyzer() : base(shouldCheckLambdas: true, allowExcludedSymbolNames: true) diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs index 46e50bb785..567ba6df26 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// This rule is not implemented for C# as the compiler warning CS0628 already covers this part. /// @@ -18,17 +20,13 @@ public sealed class DoNotDeclareProtectedMembersInSealedTypes : DiagnosticAnalyz { internal const string RuleId = "CA1047"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareProtectedMembersInSealedTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareProtectedMembersInSealedTypesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareProtectedMembersInSealedTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotDeclareProtectedMembersInSealedTypesTitle)), + CreateLocalizableResourceString(nameof(DoNotDeclareProtectedMembersInSealedTypesMessage)), DiagnosticCategory.Design, RuleLevel.IdeSuggestion, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotDeclareProtectedMembersInSealedTypesDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs index 6030002bb5..28e56e92f0 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1000: Do not declare static members on generic types /// @@ -16,18 +18,15 @@ public sealed class DoNotDeclareStaticMembersOnGenericTypesAnalyzer : Diagnostic { internal const string RuleId = "CA1000"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareStaticMembersOnGenericTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareStaticMembersOnGenericTypesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareStaticMembersOnGenericTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.IdeHidden_BulkConfigurable, // Need to exclude members that use generic type parameter - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotDeclareStaticMembersOnGenericTypesTitle)), + CreateLocalizableResourceString(nameof(DoNotDeclareStaticMembersOnGenericTypesMessage)), + DiagnosticCategory.Design, + RuleLevel.IdeHidden_BulkConfigurable, // Need to exclude members that use generic type parameter + description: CreateLocalizableResourceString(nameof(DoNotDeclareStaticMembersOnGenericTypesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs index 207bc7e9b3..c07e158ad1 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1051: Do not declare visible instance fields /// @@ -16,20 +18,16 @@ public sealed class DoNotDeclareVisibleInstanceFieldsAnalyzer : DiagnosticAnalyz { internal const string RuleId = "CA1051"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareVisibleInstanceFieldsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareVisibleInstanceFieldsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareVisibleInstanceFieldsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - // TODO: Need to revisit the "RuleLevel" for this Rule. - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotDeclareVisibleInstanceFieldsTitle)), + CreateLocalizableResourceString(nameof(DoNotDeclareVisibleInstanceFieldsMessage)), + DiagnosticCategory.Design, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotDeclareVisibleInstanceFieldsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs index ccbfcde344..206596441b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2007: Do not directly await a Task in libraries. /// 1. Append ConfigureAwait(false) to the task. @@ -33,14 +35,14 @@ public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) context.RegisterCodeFix( new MyCodeAction(title, async ct => await GetFixAsync(context.Document, expression, argument: false, cancellationToken: ct).ConfigureAwait(false), - equivalenceKey: nameof(MicrosoftCodeQualityAnalyzersResources.AppendConfigureAwaitFalse)), + equivalenceKey: nameof(AppendConfigureAwaitFalse)), context.Diagnostics); title = MicrosoftCodeQualityAnalyzersResources.AppendConfigureAwaitTrue; context.RegisterCodeFix( new MyCodeAction(title, async ct => await GetFixAsync(context.Document, expression, argument: true, cancellationToken: ct).ConfigureAwait(false), - equivalenceKey: nameof(MicrosoftCodeQualityAnalyzersResources.AppendConfigureAwaitTrue)), + equivalenceKey: nameof(AppendConfigureAwaitTrue)), context.Diagnostics); } } @@ -88,7 +90,7 @@ private sealed class CustomFixAllProvider : DocumentBasedFixAllProvider protected override async Task FixAllInDocumentAsync(FixAllContext fixAllContext, Document document, ImmutableArray diagnostics) { - var useConfigureAwaitTrue = fixAllContext.CodeActionEquivalenceKey == nameof(MicrosoftCodeQualityAnalyzersResources.AppendConfigureAwaitTrue); + var useConfigureAwaitTrue = fixAllContext.CodeActionEquivalenceKey == nameof(AppendConfigureAwaitTrue); var editor = await DocumentEditor.CreateAsync(document, fixAllContext.CancellationToken).ConfigureAwait(false); foreach (var diagnostic in diagnostics) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs index 667edb7294..4d4e627eba 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2007: Do not directly await a Task in libraries. Append ConfigureAwait(false) to the task. /// @@ -19,17 +21,13 @@ public sealed class DoNotDirectlyAwaitATaskAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2007"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDirectlyAwaitATaskTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDirectlyAwaitATaskMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDirectlyAwaitATaskDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotDirectlyAwaitATaskTitle)), + CreateLocalizableResourceString(nameof(DoNotDirectlyAwaitATaskMessage)), DiagnosticCategory.Reliability, RuleLevel.Disabled, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotDirectlyAwaitATaskDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs index 6dc6b56989..0dd807a399 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs @@ -8,22 +8,20 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotExposeGenericLists : DiagnosticAnalyzer { internal const string RuleId = "CA1002"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotExposeGenericListsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotExposeGenericListsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotExposeGenericListsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotExposeGenericListsTitle)), + CreateLocalizableResourceString(nameof(DoNotExposeGenericListsMessage)), DiagnosticCategory.Design, RuleLevel.Disabled, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotExposeGenericListsDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs index 4d1f640c40..d330db3e63 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1061: Do not hide base class methods /// @@ -18,17 +20,13 @@ public sealed class DoNotHideBaseClassMethodsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1061"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotHideBaseClassMethodsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotHideBaseClassMethodsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotHideBaseClassMethodsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotHideBaseClassMethodsTitle)), + CreateLocalizableResourceString(nameof(DoNotHideBaseClassMethodsMessage)), DiagnosticCategory.Design, RuleLevel.IdeSuggestion, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotHideBaseClassMethodsDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs index 60a888ea06..98b8e6e2eb 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotNameEnumValuesReserved : DiagnosticAnalyzer { @@ -15,17 +17,13 @@ public sealed class DoNotNameEnumValuesReserved : DiagnosticAnalyzer private static readonly ImmutableArray reservedWords = ImmutableArray.Create("reserved"); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotNameEnumValuesReservedTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageRule = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotNameEnumValuesReservedMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotNameEnumValuesReservedDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessageRule, + CreateLocalizableResourceString(nameof(DoNotNameEnumValuesReservedTitle)), + CreateLocalizableResourceString(nameof(DoNotNameEnumValuesReservedMessage)), DiagnosticCategory.Naming, RuleLevel.Disabled, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotNameEnumValuesReservedDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs index 67c5ec6d8c..3d1fb07cd4 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs @@ -8,22 +8,20 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotOverloadOperatorEqualsOnReferenceTypes : DiagnosticAnalyzer { internal const string RuleId = "CA1046"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotOverloadOperatorEqualsOnReferenceTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotOverloadOperatorEqualsOnReferenceTypesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotOverloadOperatorEqualsOnReferenceTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotOverloadOperatorEqualsOnReferenceTypesTitle)), + CreateLocalizableResourceString(nameof(DoNotOverloadOperatorEqualsOnReferenceTypesMessage)), DiagnosticCategory.Design, RuleLevel.Disabled, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotOverloadOperatorEqualsOnReferenceTypesDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs index 735ecd3880..baef2fb1b2 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs @@ -8,22 +8,20 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotPassTypesByReference : DiagnosticAnalyzer { internal const string RuleId = "CA1045"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotPassTypesByReferenceTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotPassTypesByReferenceMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotPassTypesByReferenceDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotPassTypesByReferenceTitle)), + CreateLocalizableResourceString(nameof(DoNotPassTypesByReferenceMessage)), DiagnosticCategory.Design, RuleLevel.Disabled, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotPassTypesByReferenceDescription)), isPortedFxCopRule: true, isDataflowRule: false, isEnabledByDefaultInAggressiveMode: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs index 3c1de96fc6..2f94990d3a 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1712: Do not prefix enum values with type name /// @@ -21,18 +23,14 @@ public sealed class DoNotPrefixEnumValuesWithTypeNameAnalyzer : DiagnosticAnalyz internal const string RuleId = "CA1712"; private const int PercentValuesPrefixedThreshold = 75; // The percent of an enum's values that must appear to be prefixed in order for a diagnostic to be reported on the enum. This value comes from the original FxCop rule's implementation. - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotPrefixEnumValuesWithTypeNameTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotPrefixEnumValuesWithTypeNameMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotPrefixEnumValuesWithTypeNameDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotPrefixEnumValuesWithTypeNameTitle)), + CreateLocalizableResourceString(nameof(DoNotPrefixEnumValuesWithTypeNameMessage)), DiagnosticCategory.Naming, RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotPrefixEnumValuesWithTypeNameDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs index 36731d00d9..bc3bd2df1e 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1065: Do not raise exceptions in unexpected locations /// @@ -20,37 +22,38 @@ public sealed class DoNotRaiseExceptionsInUnexpectedLocationsAnalyzer : Diagnost { internal const string RuleId = "CA1065"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInUnexpectedLocationsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessagePropertyGetter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInUnexpectedLocationsMessagePropertyGetter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageHasAllowedExceptions = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInUnexpectedLocationsMessageHasAllowedExceptions), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNoAllowedExceptions = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInUnexpectedLocationsMessageNoAllowedExceptions), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInUnexpectedLocationsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor PropertyGetterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessagePropertyGetter, - DiagnosticCategory.Design, - RuleLevel.Disabled, // Could consider Suggestion level if we could exclude test code by default. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor HasAllowedExceptionsRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageHasAllowedExceptions, - DiagnosticCategory.Design, - RuleLevel.Disabled, // Could consider Suggestion level if we could exclude test code by default. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor NoAllowedExceptionsRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNoAllowedExceptions, - DiagnosticCategory.Design, - RuleLevel.Disabled, // Could consider Suggestion level if we could exclude test code by default. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInUnexpectedLocationsTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInUnexpectedLocationsDescription)); + + internal static readonly DiagnosticDescriptor PropertyGetterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInUnexpectedLocationsMessagePropertyGetter)), + DiagnosticCategory.Design, + RuleLevel.Disabled, // Could consider Suggestion level if we could exclude test code by default. + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor HasAllowedExceptionsRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInUnexpectedLocationsMessageHasAllowedExceptions)), + DiagnosticCategory.Design, + RuleLevel.Disabled, // Could consider Suggestion level if we could exclude test code by default. + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor NoAllowedExceptionsRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInUnexpectedLocationsMessageNoAllowedExceptions)), + DiagnosticCategory.Design, + RuleLevel.Disabled, // Could consider Suggestion level if we could exclude test code by default. + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(PropertyGetterRule, HasAllowedExceptionsRule, NoAllowedExceptionsRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs index 67dde330b1..d951a4da9c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs @@ -11,32 +11,34 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class EnumShouldNotHaveDuplicatedValues : DiagnosticAnalyzer { public const string RuleId = "CA1069"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumShouldNotHaveDuplicatedValuesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageRuleDuplicatedValue = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumShouldNotHaveDuplicatedValuesMessageDuplicatedValue), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor RuleDuplicatedValue = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageRuleDuplicatedValue, - DiagnosticCategory.Design, - RuleLevel.IdeSuggestion, - description: null, - isPortedFxCopRule: false, - isDataflowRule: false); - - private static readonly LocalizableString s_localizableMessageRuleDuplicatedBitwiseValuePart = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumShouldNotHaveDuplicatedValuesMessageDuplicatedBitwiseValuePart), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor RuleDuplicatedBitwiseValuePart = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageRuleDuplicatedBitwiseValuePart, - DiagnosticCategory.Design, - RuleLevel.IdeSuggestion, - description: null, - isPortedFxCopRule: false, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(EnumShouldNotHaveDuplicatedValuesTitle)); + + internal static readonly DiagnosticDescriptor RuleDuplicatedValue = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(EnumShouldNotHaveDuplicatedValuesMessageDuplicatedValue)), + DiagnosticCategory.Design, + RuleLevel.IdeSuggestion, + description: null, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RuleDuplicatedBitwiseValuePart = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(EnumShouldNotHaveDuplicatedValuesMessageDuplicatedBitwiseValuePart)), + DiagnosticCategory.Design, + RuleLevel.IdeSuggestion, + description: null, + isPortedFxCopRule: false, + isDataflowRule: false); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleDuplicatedValue, RuleDuplicatedBitwiseValuePart); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs index 6d36425f7b..a09c7a3b41 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1028: Enum Storage should be Int32 /// Implementation slightly modified from original FxCop after discussing with Nick Guerrera @@ -19,20 +21,15 @@ public sealed class EnumStorageShouldBeInt32Analyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1028"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumStorageShouldBeInt32Title), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageNotInt32 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumStorageShouldBeInt32Message), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumStorageShouldBeInt32Description), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNotInt32, - DiagnosticCategory.Design, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(EnumStorageShouldBeInt32Title)), + CreateLocalizableResourceString(nameof(EnumStorageShouldBeInt32Message)), + DiagnosticCategory.Design, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(EnumStorageShouldBeInt32Description)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs index ad4054c85b..abecc598d5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs @@ -13,6 +13,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// Implements CA1027 and CA2217 /// @@ -36,29 +38,25 @@ public sealed class EnumWithFlagsAttributeAnalyzer : DiagnosticAnalyzer internal const string RuleIdDoNotMarkEnumsWithFlags = "CA2217"; internal const string RuleNameForExportAttribute = "EnumWithFlagsAttributeRules"; - private static readonly LocalizableString s_localizableTitleCA1027 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkEnumsWithFlagsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1027 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkEnumsWithFlagsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1027 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkEnumsWithFlagsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor Rule1027 = DiagnosticDescriptorHelper.Create(RuleIdMarkEnumsWithFlags, - s_localizableTitleCA1027, - s_localizableMessageCA1027, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescriptionCA1027, - isPortedFxCopRule: true, - isDataflowRule: false); - - private static readonly LocalizableString s_localizableTitleCA2217 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotMarkEnumsWithFlagsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA2217 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotMarkEnumsWithFlagsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA2217 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotMarkEnumsWithFlagsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor Rule2217 = DiagnosticDescriptorHelper.Create(RuleIdDoNotMarkEnumsWithFlags, - s_localizableTitleCA2217, - s_localizableMessageCA2217, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescriptionCA2217, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule1027 = DiagnosticDescriptorHelper.Create( + RuleIdMarkEnumsWithFlags, + CreateLocalizableResourceString(nameof(MarkEnumsWithFlagsTitle)), + CreateLocalizableResourceString(nameof(MarkEnumsWithFlagsMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(MarkEnumsWithFlagsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule2217 = DiagnosticDescriptorHelper.Create( + RuleIdDoNotMarkEnumsWithFlags, + CreateLocalizableResourceString(nameof(DoNotMarkEnumsWithFlagsTitle)), + CreateLocalizableResourceString(nameof(DoNotMarkEnumsWithFlagsMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotMarkEnumsWithFlagsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule1027, Rule2217); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs index 51de8eb57e..472df45003 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1008: Enums should have zero value /// @@ -41,41 +43,41 @@ public sealed class EnumsShouldHaveZeroValueAnalyzer : DiagnosticAnalyzer public const string RuleMultipleZeroCustomTag = "RuleMultipleZero"; public const string RuleNoZeroCustomTag = "RuleNoZero"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumsShouldHaveZeroValueTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumsShouldHaveZeroValueDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageRuleRename = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumsShouldHaveZeroValueMessageFlagsRename), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor RuleRename = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageRuleRename, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - additionalCustomTags: RuleRenameCustomTag); - - private static readonly LocalizableString s_localizableMessageRuleMultipleZero = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumsShouldHaveZeroValueMessageFlagsMultipleZeros), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor RuleMultipleZero = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageRuleMultipleZero, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - additionalCustomTags: RuleMultipleZeroCustomTag); - - private static readonly LocalizableString s_localizableMessageRuleNoZero = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EnumsShouldHaveZeroValueMessageNotFlagsNoZeroValue), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor RuleNoZero = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageRuleNoZero, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - additionalCustomTags: RuleNoZeroCustomTag); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(EnumsShouldHaveZeroValueTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(EnumsShouldHaveZeroValueDescription)); + + internal static readonly DiagnosticDescriptor RuleRename = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(EnumsShouldHaveZeroValueMessageFlagsRename)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + additionalCustomTags: RuleRenameCustomTag); + + internal static readonly DiagnosticDescriptor RuleMultipleZero = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(EnumsShouldHaveZeroValueMessageFlagsMultipleZeros)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + additionalCustomTags: RuleMultipleZeroCustomTag); + + internal static readonly DiagnosticDescriptor RuleNoZero = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(EnumsShouldHaveZeroValueMessageNotFlagsNoZeroValue)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + additionalCustomTags: RuleNoZeroCustomTag); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleRename, RuleMultipleZero, RuleNoZero); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs index 14434d6edf..4c828e8ca0 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs @@ -9,37 +9,31 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class EquatableAnalyzer : DiagnosticAnalyzer { internal const string ImplementIEquatableRuleId = "CA1066"; internal const string OverrideObjectEqualsRuleId = "CA1067"; - private static readonly LocalizableString s_localizableTitleImplementIEquatable = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIEquatableWhenOverridingObjectEqualsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageImplementIEquatable = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIEquatableWhenOverridingObjectEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionImplementIEquatable = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIEquatableWhenOverridingObjectEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static readonly DiagnosticDescriptor ImplementIEquatableDescriptor = DiagnosticDescriptorHelper.Create( ImplementIEquatableRuleId, - s_localizableTitleImplementIEquatable, - s_localizableMessageImplementIEquatable, + CreateLocalizableResourceString(nameof(ImplementIEquatableWhenOverridingObjectEqualsTitle)), + CreateLocalizableResourceString(nameof(ImplementIEquatableWhenOverridingObjectEqualsMessage)), DiagnosticCategory.Design, RuleLevel.Disabled, - description: s_localizableDescriptionImplementIEquatable, + description: CreateLocalizableResourceString(nameof(ImplementIEquatableWhenOverridingObjectEqualsDescription)), isPortedFxCopRule: false, isDataflowRule: false); - private static readonly LocalizableString s_localizableTitleOverridesObjectEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideObjectEqualsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageOverridesObjectEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideObjectEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionOverridesObjectEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideObjectEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static readonly DiagnosticDescriptor OverridesObjectEqualsDescriptor = DiagnosticDescriptorHelper.Create( OverrideObjectEqualsRuleId, - s_localizableTitleOverridesObjectEquals, - s_localizableMessageOverridesObjectEquals, + CreateLocalizableResourceString(nameof(OverrideObjectEqualsTitle)), + CreateLocalizableResourceString(nameof(OverrideObjectEqualsMessage)), DiagnosticCategory.Design, RuleLevel.BuildWarningCandidate, - description: s_localizableDescriptionOverridesObjectEquals, + description: CreateLocalizableResourceString(nameof(OverrideObjectEqualsDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs index b8038b1753..0573acac48 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class EventsShouldNotHaveBeforeOrAfterPrefix : DiagnosticAnalyzer { @@ -17,17 +19,13 @@ public sealed class EventsShouldNotHaveBeforeOrAfterPrefix : DiagnosticAnalyzer private const string AfterKeyword = "After"; private const string BeforeKeyword = "Before"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EventsShouldNotHaveBeforeOrAfterPrefixTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EventsShouldNotHaveBeforeOrAfterPrefixMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.EventsShouldNotHaveBeforeOrAfterPrefixDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(EventsShouldNotHaveBeforeOrAfterPrefixTitle)), + CreateLocalizableResourceString(nameof(EventsShouldNotHaveBeforeOrAfterPrefixMessage)), DiagnosticCategory.Naming, RuleLevel.Disabled, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(EventsShouldNotHaveBeforeOrAfterPrefixDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs index 7d13805a88..ae2a0a08ad 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1064: Exceptions should be public /// @@ -18,19 +20,15 @@ public sealed class ExceptionsShouldBePublicAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1064"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ExceptionsShouldBePublicTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ExceptionsShouldBePublicMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ExceptionsShouldBePublicDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ExceptionsShouldBePublicTitle)), + CreateLocalizableResourceString(nameof(ExceptionsShouldBePublicMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(ExceptionsShouldBePublicDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs index e4c7f0f5aa..5002c10c44 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class IdentifiersShouldDifferByMoreThanCaseAnalyzer : DiagnosticAnalyzer { @@ -21,18 +23,15 @@ public sealed class IdentifiersShouldDifferByMoreThanCaseAnalyzer : DiagnosticAn public const string Member = "Members"; public const string Parameter = "Parameters of"; - private static readonly LocalizableResourceString s_localizableTitle = new(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldDifferByMoreThanCaseTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableResourceString s_localizableMessage = new(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldDifferByMoreThanCaseMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableResourceString s_localizableDescription = new(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldDifferByMoreThanCaseDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(IdentifiersShouldDifferByMoreThanCaseTitle)), + CreateLocalizableResourceString(nameof(IdentifiersShouldDifferByMoreThanCaseMessage)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(IdentifiersShouldDifferByMoreThanCaseDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs index 774e4f0d5d..9765eebbcb 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs @@ -10,33 +10,35 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class IdentifiersShouldHaveCorrectPrefixAnalyzer : DiagnosticAnalyzer { public const string RuleId = "CA1715"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectPrefixTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectPrefixDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageInterfaceRule = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectPrefixMessageInterface), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - public static readonly DiagnosticDescriptor InterfaceRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageInterfaceRule, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - private static readonly LocalizableString s_localizableMessageTypeParameterRule = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectPrefixMessageTypeParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - public static readonly DiagnosticDescriptor TypeParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTypeParameterRule, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectPrefixTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectPrefixDescription)); + + public static readonly DiagnosticDescriptor InterfaceRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectPrefixMessageInterface)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + public static readonly DiagnosticDescriptor TypeParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectPrefixMessageTypeParameter)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(InterfaceRule, TypeParameterRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs index b101de3b50..6f11ca86d1 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1710: Identifiers should have correct suffix /// @@ -20,27 +22,28 @@ public sealed class IdentifiersShouldHaveCorrectSuffixAnalyzer : DiagnosticAnaly { internal const string RuleId = "CA1710"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectSuffixTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectSuffixMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSpecialCollection = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectSuffixMessageSpecialCollection), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldHaveCorrectSuffixDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor SpecialCollectionRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSpecialCollection, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectSuffixTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectSuffixDescription)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectSuffixMessageDefault)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor SpecialCollectionRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldHaveCorrectSuffixMessageSpecialCollection)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, SpecialCollectionRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs index 822a1d135b..dab9b66605 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1720-redefined: Identifiers should not contain type names /// Cause: @@ -24,10 +26,6 @@ public class IdentifiersShouldNotContainTypeNames : DiagnosticAnalyzer { internal const string RuleId = "CA1720"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainTypeNamesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainTypeNamesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainTypeNamesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly ImmutableHashSet s_typeNames = ImmutableHashSet.CreateRange(StringComparer.OrdinalIgnoreCase, new[] { @@ -68,14 +66,15 @@ public class IdentifiersShouldNotContainTypeNames : DiagnosticAnalyzer "string" }); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainTypeNamesTitle)), + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainTypeNamesMessage)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainTypeNamesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs index 87a46ca359..24ea36b6e3 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1707: Identifiers should not contain underscores /// @@ -29,82 +31,88 @@ public sealed class IdentifiersShouldNotContainUnderscoresAnalyzer : DiagnosticA "Session_End", "Session_Start"); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageAssembly = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageAssembly), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNamespace = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageNamespace), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageType = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageType), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMember = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageMember), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeTypeParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageTypeTypeParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMethodTypeParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageMethodTypeParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageMemberParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDelegateParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresMessageDelegateParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotContainUnderscoresDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor AssemblyRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageAssembly, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor NamespaceRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNamespace, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor TypeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageType, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MemberRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMember, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor TypeTypeParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTypeTypeParameter, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MethodTypeParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMethodTypeParameter, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MemberParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMemberParameter, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor DelegateParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDelegateParameter, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresDescription)); + + internal static readonly DiagnosticDescriptor AssemblyRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageAssembly)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor NamespaceRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageNamespace)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor TypeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageType)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor MemberRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageMember)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor TypeTypeParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageTypeTypeParameter)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor MethodTypeParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageMethodTypeParameter)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor MemberParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageMemberParameter)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor DelegateParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotContainUnderscoresMessageDelegateParameter)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(AssemblyRule, NamespaceRule, TypeRule, MemberRule, TypeTypeParameterRule, MethodTypeParameterRule, MemberParameterRule, DelegateParameterRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs index 680e2f978d..c7eaa1bd0f 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1711: Identifiers should not have incorrect suffix /// @@ -18,46 +20,48 @@ public sealed class IdentifiersShouldNotHaveIncorrectSuffixAnalyzer : Diagnostic { internal const string RuleId = "CA1711"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotHaveIncorrectSuffixTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageTypeNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotHaveIncorrectSuffixMessageTypeNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberNewerVersion = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotHaveIncorrectSuffixMessageMemberNewerVersion), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeNewerVersion = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotHaveIncorrectSuffixMessageTypeNewerVersion), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberWithAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotHaveIncorrectSuffixMessageMemberWithAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotHaveIncorrectSuffixDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor TypeNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTypeNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MemberNewerVersionRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMemberNewerVersion, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor TypeNewerVersionRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTypeNewerVersion, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MemberWithAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMemberWithAlternate, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(IdentifiersShouldNotHaveIncorrectSuffixTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(IdentifiersShouldNotHaveIncorrectSuffixDescription)); + + internal static readonly DiagnosticDescriptor TypeNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotHaveIncorrectSuffixMessageTypeNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor MemberNewerVersionRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotHaveIncorrectSuffixMessageMemberNewerVersion)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor TypeNewerVersionRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotHaveIncorrectSuffixMessageTypeNewerVersion)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor MemberWithAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotHaveIncorrectSuffixMessageMemberWithAlternate)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( TypeNoAlternateRule, diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs index a8982f9196..058d03a794 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1716: Identifiers should not match keywords /// @@ -19,46 +21,48 @@ public sealed class IdentifiersShouldNotMatchKeywordsAnalyzer : DiagnosticAnalyz { internal const string RuleId = "CA1716"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotMatchKeywordsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageMemberParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotMatchKeywordsMessageMemberParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMember = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotMatchKeywordsMessageMember), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageType = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotMatchKeywordsMessageType), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNamespace = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotMatchKeywordsMessageNamespace), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.IdentifiersShouldNotMatchKeywordsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor MemberParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMemberParameter, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MemberRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMember, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor TypeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageType, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor NamespaceRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNamespace, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(IdentifiersShouldNotMatchKeywordsTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(IdentifiersShouldNotMatchKeywordsDescription)); + + internal static readonly DiagnosticDescriptor MemberParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotMatchKeywordsMessageMemberParameter)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor MemberRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotMatchKeywordsMessageMember)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor TypeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotMatchKeywordsMessageType)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor NamespaceRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(IdentifiersShouldNotMatchKeywordsMessageNamespace)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); // Define the format in which this rule displays namespace names. The format is chosen to be // consistent with FxCop's display format for this rule. diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs index 8770f96f99..17f27a44f6 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1063: Implement IDisposable Correctly /// @@ -22,93 +24,100 @@ public sealed class ImplementIDisposableCorrectlyAnalyzer : DiagnosticAnalyzer private const string GarbageCollectorTypeName = "System.GC"; private const string SuppressFinalizeMethodName = "SuppressFinalize"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageIDisposableReimplementation = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageIDisposableReimplementation), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageFinalizeOverride = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageFinalizeOverride), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDisposeOverride = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageDisposeOverride), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDisposeSignature = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageDisposeSignature), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageRenameDispose = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageRenameDispose), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDisposeBoolSignature = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageDisposeBoolSignature), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDisposeImplementation = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageDisposeImplementation), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageFinalizeImplementation = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageFinalizeImplementation), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageProvideDisposeBool = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyMessageProvideDisposeBool), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIDisposableCorrectlyDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyDescription)); // Rules disabled by default until https://github.com/dotnet/docs/issues/8463 is resolved. - internal static DiagnosticDescriptor IDisposableReimplementationRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageIDisposableReimplementation, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor FinalizeOverrideRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageFinalizeOverride, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor DisposeOverrideRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDisposeOverride, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor DisposeSignatureRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDisposeSignature, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor RenameDisposeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageRenameDispose, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor DisposeBoolSignatureRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDisposeBoolSignature, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor DisposeImplementationRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDisposeImplementation, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor FinalizeImplementationRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageFinalizeImplementation, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor ProvideDisposeBoolRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageProvideDisposeBool, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor IDisposableReimplementationRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageIDisposableReimplementation)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor FinalizeOverrideRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageFinalizeOverride)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor DisposeOverrideRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageDisposeOverride)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor DisposeSignatureRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageDisposeSignature)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RenameDisposeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageRenameDispose)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor DisposeBoolSignatureRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageDisposeBoolSignature)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor DisposeImplementationRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageDisposeImplementation)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor FinalizeImplementationRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageFinalizeImplementation)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor ProvideDisposeBoolRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementIDisposableCorrectlyMessageProvideDisposeBool)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(IDisposableReimplementationRule, FinalizeOverrideRule, DisposeOverrideRule, DisposeSignatureRule, RenameDisposeRule, DisposeBoolSignatureRule, DisposeImplementationRule, FinalizeImplementationRule, ProvideDisposeBoolRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs index c46943ce78..fd4f6a510f 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1032 - redefined: Implement standard exception constructors /// Cause: A type extends System.Exception and does not declare all the required constructors. @@ -30,18 +32,15 @@ internal enum MissingCtorSignature { CtorWithNoParameter, CtorWithStringParamete internal const string RuleId = "CA1032"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementStandardExceptionConstructorsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMissingConstructor = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementStandardExceptionConstructorsMessageMissingConstructor), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementStandardExceptionConstructorsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor MissingConstructorRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMissingConstructor, - DiagnosticCategory.Design, - RuleLevel.Disabled, // Need to validate with other parameter requirements and consider code coverage scenarios. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor MissingConstructorRule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ImplementStandardExceptionConstructorsTitle)), + CreateLocalizableResourceString(nameof(ImplementStandardExceptionConstructorsMessageMissingConstructor)), + DiagnosticCategory.Design, + RuleLevel.Disabled, // Need to validate with other parameter requirements and consider code coverage scenarios. + description: CreateLocalizableResourceString(nameof(ImplementStandardExceptionConstructorsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(MissingConstructorRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs index 13dfecaea9..3673727f12 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1033: Interface methods should be callable by child types /// @@ -27,18 +29,15 @@ public sealed class InterfaceMethodsShouldBeCallableByChildTypesAnalyzer : Diagn { internal const string RuleId = "CA1033"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.InterfaceMethodsShouldBeCallableByChildTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.InterfaceMethodsShouldBeCallableByChildTypesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.InterfaceMethodsShouldBeCallableByChildTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(InterfaceMethodsShouldBeCallableByChildTypesTitle)), + CreateLocalizableResourceString(nameof(InterfaceMethodsShouldBeCallableByChildTypesMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(InterfaceMethodsShouldBeCallableByChildTypesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs index e1b13b5e9f..a37aa893cc 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs @@ -8,38 +8,35 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class MarkAssembliesWithAttributesDiagnosticAnalyzer : DiagnosticAnalyzer { internal const string CA1016RuleId = "CA1016"; internal const string CA1014RuleId = "CA1014"; - private static readonly LocalizableString s_localizableTitleCA1016 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithAssemblyVersionTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1016 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithAssemblyVersionMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1016 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithAssemblyVersionDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor CA1016Rule = DiagnosticDescriptorHelper.Create(CA1016RuleId, - s_localizableTitleCA1016, - s_localizableMessageCA1016, - DiagnosticCategory.Design, - RuleLevel.IdeSuggestion, - description: s_localizableDescriptionCA1016, - isPortedFxCopRule: true, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor CA1016Rule = DiagnosticDescriptorHelper.Create( + CA1016RuleId, + CreateLocalizableResourceString(nameof(MarkAssembliesWithAssemblyVersionTitle)), + CreateLocalizableResourceString(nameof(MarkAssembliesWithAssemblyVersionMessage)), + DiagnosticCategory.Design, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(MarkAssembliesWithAssemblyVersionDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isReportedAtCompilationEnd: true); - private static readonly LocalizableString s_localizabletitleCA1014 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithClsCompliantTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1014 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithClsCompliantMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1014 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithClsCompliantDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor CA1014Rule = DiagnosticDescriptorHelper.Create(CA1014RuleId, - s_localizabletitleCA1014, - s_localizableMessageCA1014, - DiagnosticCategory.Design, - RuleLevel.Disabled, // We can make this an IdeSuggestion once we update templates to add CLSCompliant(false) - description: s_localizableDescriptionCA1014, - isPortedFxCopRule: true, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor CA1014Rule = DiagnosticDescriptorHelper.Create( + CA1014RuleId, + CreateLocalizableResourceString(nameof(MarkAssembliesWithClsCompliantTitle)), + CreateLocalizableResourceString(nameof(MarkAssembliesWithClsCompliantMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, // We can make this an IdeSuggestion once we update templates to add CLSCompliant(false) + description: CreateLocalizableResourceString(nameof(MarkAssembliesWithClsCompliantDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isReportedAtCompilationEnd: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(CA1016Rule, CA1014Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs index c2cd2504ab..52517ade50 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs @@ -9,37 +9,38 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class MarkAssembliesWithComVisibleAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1017"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithComVisibleTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAssembliesWithComVisibleDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageChangeComVisible = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ChangeAssemblyLevelComVisibleToFalse), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageAddComVisible = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AddAssemblyLevelComVisibleFalse), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(MarkAssembliesWithComVisibleTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(MarkAssembliesWithComVisibleDescription)); - internal static readonly DiagnosticDescriptor RuleChangeComVisible = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageChangeComVisible, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor RuleChangeComVisible = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ChangeAssemblyLevelComVisibleToFalse)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false, + isReportedAtCompilationEnd: true); - internal static readonly DiagnosticDescriptor RuleAddComVisible = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageAddComVisible, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor RuleAddComVisible = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AddAssemblyLevelComVisibleFalse)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false, + isReportedAtCompilationEnd: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleChangeComVisible, RuleAddComVisible); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs index 302ff932e0..370c3d4ba5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1018: Custom attributes should have AttributeUsage attribute defined. /// @@ -16,17 +18,16 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines public sealed class MarkAttributesWithAttributeUsageAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1018"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAttributesWithAttributeUsageTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkAttributesWithAttributeUsageMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.IdeSuggestion, - description: null, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(MarkAttributesWithAttributeUsageTitle)), + CreateLocalizableResourceString(nameof(MarkAttributesWithAttributeUsageMessageDefault)), + DiagnosticCategory.Design, + RuleLevel.IdeSuggestion, + description: null, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs index e225fa3062..1618a15a05 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1060 - Move P/Invokes to native methods class /// @@ -17,19 +19,16 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines public sealed class MovePInvokesToNativeMethodsClassAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1060"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MovePInvokesToNativeMethodsClassTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MovePInvokesToNativeMethodsClassMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MovePInvokesToNativeMethodsClassDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(MovePInvokesToNativeMethodsClassTitle)), + CreateLocalizableResourceString(nameof(MovePInvokesToNativeMethodsClassMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(MovePInvokesToNativeMethodsClassDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false); private const string NativeMethodsText = "NativeMethods"; private const string SafeNativeMethodsText = "SafeNativeMethods"; diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs index 118906f734..c514f46fda 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1034: Nested types should not be visible /// @@ -18,28 +20,28 @@ public sealed class NestedTypesShouldNotBeVisibleAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1034"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.NestedTypesShouldNotBeVisibleTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.NestedTypesShouldNotBeVisibleMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageVisualBasicModule = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.NestedTypesShouldNotBeVisibleMessageVisualBasicModule), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.NestedTypesShouldNotBeVisibleDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Design, - RuleLevel.CandidateForRemoval, // Need to validate cases where people want it. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor VisualBasicModuleRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageVisualBasicModule, - DiagnosticCategory.Design, - RuleLevel.CandidateForRemoval, // Need to validate cases where people want it. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(NestedTypesShouldNotBeVisibleTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(NestedTypesShouldNotBeVisibleDescription)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(NestedTypesShouldNotBeVisibleMessageDefault)), + DiagnosticCategory.Design, + RuleLevel.CandidateForRemoval, // Need to validate cases where people want it. + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor VisualBasicModuleRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(NestedTypesShouldNotBeVisibleMessageVisualBasicModule)), + DiagnosticCategory.Design, + RuleLevel.CandidateForRemoval, // Need to validate cases where people want it. + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, VisualBasicModuleRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs index 32006e17d8..532b0a46b5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2211: Non-constant fields should not be visible /// @@ -16,19 +18,15 @@ public sealed class NonConstantFieldsShouldNotBeVisibleAnalyzer : DiagnosticAnal { internal const string RuleId = "CA2211"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.NonConstantFieldsShouldNotBeVisibleTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.NonConstantFieldsShouldNotBeVisibleMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.NonConstantFieldsShouldNotBeVisibleDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(NonConstantFieldsShouldNotBeVisibleTitle)), + CreateLocalizableResourceString(nameof(NonConstantFieldsShouldNotBeVisibleMessage)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(NonConstantFieldsShouldNotBeVisibleDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs index 2de87d8baa..b33a47ba58 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2225: Operator overloads have named alternates /// @@ -24,46 +26,48 @@ public sealed class OperatorOverloadsHaveNamedAlternatesAnalyzer : DiagnosticAna private const string OpTrueText = "op_True"; private const string OpFalseText = "op_False"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorOverloadsHaveNamedAlternatesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(OperatorOverloadsHaveNamedAlternatesTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(OperatorOverloadsHaveNamedAlternatesDescription)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OperatorOverloadsHaveNamedAlternatesMessageDefault)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor PropertyRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OperatorOverloadsHaveNamedAlternatesMessageProperty)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorOverloadsHaveNamedAlternatesMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageProperty = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorOverloadsHaveNamedAlternatesMessageProperty), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMultiple = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorOverloadsHaveNamedAlternatesMessageMultiple), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageVisibility = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorOverloadsHaveNamedAlternatesMessageVisibility), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorOverloadsHaveNamedAlternatesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + internal static readonly DiagnosticDescriptor MultipleRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OperatorOverloadsHaveNamedAlternatesMessageMultiple)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor PropertyRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageProperty, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MultipleRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMultiple, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor VisibilityRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageVisibility, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor VisibilityRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OperatorOverloadsHaveNamedAlternatesMessageVisibility)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, PropertyRule, MultipleRule, VisibilityRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs index 2bc0622f08..65025090fa 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs @@ -17,6 +17,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2226: Operators should have symmetrical overloads /// @@ -36,7 +38,7 @@ public sealed override Task RegisterCodeFixesAsync(CodeFixContext context) CodeAction.Create( MicrosoftCodeQualityAnalyzersResources.Generate_missing_operators, c => CreateChangedDocumentAsync(context, c), - nameof(MicrosoftCodeQualityAnalyzersResources.Generate_missing_operators)), + nameof(Generate_missing_operators)), context.Diagnostics); return Task.FromResult(true); } diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs index 575dd5d48f..3ab418e565 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2226: Operators should have symmetrical overloads /// @@ -16,22 +18,15 @@ public sealed class OperatorsShouldHaveSymmetricalOverloadsAnalyzer : Diagnostic { internal const string RuleId = "CA2226"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorsShouldHaveSymmetricalOverloadsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString( - nameof(MicrosoftCodeQualityAnalyzersResources.Since_0_redefines_operator_1_it_should_also_redefine_operator_2), - MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OperatorsShouldHaveSymmetricalOverloadsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.CandidateForRemoval, // C# compiler reports an error - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(OperatorsShouldHaveSymmetricalOverloadsTitle)), + CreateLocalizableResourceString(nameof(Since_0_redefines_operator_1_it_should_also_redefine_operator_2)), + DiagnosticCategory.Usage, + RuleLevel.CandidateForRemoval, // C# compiler reports an error + description: CreateLocalizableResourceString(nameof(OperatorsShouldHaveSymmetricalOverloadsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs index 5d0ba0cb35..45b5b0e121 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2231: A value type overrides Equals but does not implement the equality operator. /// @@ -16,18 +18,15 @@ public sealed class OverloadOperatorEqualsOnOverridingValueTypeEqualsAnalyzer : { internal const string RuleId = "CA2231"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverloadOperatorEqualsOnOverridingValueTypeEqualsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverloadOperatorEqualsOnOverridingValueTypeEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverloadOperatorEqualsOnOverridingValueTypeEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(OverloadOperatorEqualsOnOverridingValueTypeEqualsTitle)), + CreateLocalizableResourceString(nameof(OverloadOperatorEqualsOnOverridingValueTypeEqualsMessage)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(OverloadOperatorEqualsOnOverridingValueTypeEqualsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs index 69ebd23f09..e1c733c265 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1815: Override equals and operator equals on value types /// @@ -17,29 +19,28 @@ public class OverrideEqualsAndOperatorEqualsOnValueTypesAnalyzer : DiagnosticAna { internal const string RuleId = "CA1815"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideEqualsAndOperatorEqualsOnValueTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideEqualsAndOperatorEqualsOnValueTypesMessageEquals), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageOpEquality = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideEqualsAndOperatorEqualsOnValueTypesMessageOpEquality), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideEqualsAndOperatorEqualsOnValueTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(OverrideEqualsAndOperatorEqualsOnValueTypesTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(OverrideEqualsAndOperatorEqualsOnValueTypesDescription)); - internal static DiagnosticDescriptor EqualsRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageEquals, - DiagnosticCategory.Performance, - RuleLevel.Disabled, // Records may make this rule less painful - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor EqualsRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OverrideEqualsAndOperatorEqualsOnValueTypesMessageEquals)), + DiagnosticCategory.Performance, + RuleLevel.Disabled, // Records may make this rule less painful + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); - internal static DiagnosticDescriptor OpEqualityRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageOpEquality, - DiagnosticCategory.Performance, - RuleLevel.Disabled, // Records may make this rule less painful - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor OpEqualityRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OverrideEqualsAndOperatorEqualsOnValueTypesMessageOpEquality)), + DiagnosticCategory.Performance, + RuleLevel.Disabled, // Records may make this rule less painful + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(EqualsRule, OpEqualityRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs index 80bf2aeaef..b4f4577efd 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1036: A public or protected type implements the System.IComparable interface and /// does not override Object.Equals or does not overload the language-specific operator @@ -21,38 +23,38 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines public sealed class OverrideMethodsOnComparableTypesAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1036"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideMethodsOnComparableTypesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideMethodsOnComparableTypesMessageEquals), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageOperators = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideMethodsOnComparableTypesMessageOperator), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageBoth = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideMethodsOnComparableTypesMessageBoth), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideMethodsOnComparableTypesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static readonly DiagnosticDescriptor RuleEquals = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageEquals, - DiagnosticCategory.Design, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static readonly DiagnosticDescriptor RuleOperator = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageOperators, - DiagnosticCategory.Design, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static readonly DiagnosticDescriptor RuleBoth = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageBoth, - DiagnosticCategory.Design, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(OverrideMethodsOnComparableTypesTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(OverrideMethodsOnComparableTypesDescription)); + + internal static readonly DiagnosticDescriptor RuleEquals = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OverrideMethodsOnComparableTypesMessageEquals)), + DiagnosticCategory.Design, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RuleOperator = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OverrideMethodsOnComparableTypesMessageOperator)), + DiagnosticCategory.Design, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RuleBoth = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(OverrideMethodsOnComparableTypesMessageBoth)), + DiagnosticCategory.Design, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleBoth, RuleEquals, RuleOperator); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs index 95c492d0f3..490de11601 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1725: Parameter names should match base declaration /// @@ -18,19 +20,15 @@ public sealed class ParameterNamesShouldMatchBaseDeclarationAnalyzer : Diagnosti internal const string RuleId = "CA1725"; internal const string NewNamePropertyName = "NewName"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ParameterNamesShouldMatchBaseDeclarationTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ParameterNamesShouldMatchBaseDeclarationMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ParameterNamesShouldMatchBaseDeclarationDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Naming, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ParameterNamesShouldMatchBaseDeclarationTitle)), + CreateLocalizableResourceString(nameof(ParameterNamesShouldMatchBaseDeclarationMessage)), + DiagnosticCategory.Naming, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(ParameterNamesShouldMatchBaseDeclarationDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); /// public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs index e56b60fb1a..11342bbb23 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2234: Pass system uri objects instead of strings /// @@ -19,19 +21,15 @@ public abstract class PassSystemUriObjectsInsteadOfStringsAnalyzer : DiagnosticA { internal const string RuleId = "CA2234"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PassSystemUriObjectsInsteadOfStringsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PassSystemUriObjectsInsteadOfStringsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PassSystemUriObjectsInsteadOfStringsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, // Heuristics based rules are prone to false positives - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(PassSystemUriObjectsInsteadOfStringsTitle)), + CreateLocalizableResourceString(nameof(PassSystemUriObjectsInsteadOfStringsMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, // Heuristics based rules are prone to false positives + description: CreateLocalizableResourceString(nameof(PassSystemUriObjectsInsteadOfStringsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs index 2bcc1b9ffc..9e111c112a 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1044: Properties should not be write only /// @@ -17,27 +19,28 @@ public sealed class PropertiesShouldNotBeWriteOnlyAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1044"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertiesShouldNotBeWriteOnlyTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageAddGetter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertiesShouldNotBeWriteOnlyMessageAddGetter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMakeMoreAccessible = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertiesShouldNotBeWriteOnlyMessageMakeMoreAccessible), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertiesShouldNotBeWriteOnlyDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(PropertiesShouldNotBeWriteOnlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(PropertiesShouldNotBeWriteOnlyDescription)); + + internal static readonly DiagnosticDescriptor AddGetterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PropertiesShouldNotBeWriteOnlyMessageAddGetter)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); - internal static DiagnosticDescriptor AddGetterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageAddGetter, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor MakeMoreAccessibleRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMakeMoreAccessible, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor MakeMoreAccessibleRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PropertiesShouldNotBeWriteOnlyMessageMakeMoreAccessible)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(AddGetterRule, MakeMoreAccessibleRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs index 93d004a9a0..02aee5fea8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1819: Properties should not return arrays /// @@ -16,19 +18,15 @@ public sealed class PropertiesShouldNotReturnArraysAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1819"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertiesShouldNotReturnArraysTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertiesShouldNotReturnArraysMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertiesShouldNotReturnArraysDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(PropertiesShouldNotReturnArraysTitle)), + CreateLocalizableResourceString(nameof(PropertiesShouldNotReturnArraysMessage)), + DiagnosticCategory.Performance, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(PropertiesShouldNotReturnArraysDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs index 18dc5fecd4..a02534507b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1721: Property names should not match get methods /// @@ -20,18 +22,15 @@ public sealed class PropertyNamesShouldNotMatchGetMethodsAnalyzer : DiagnosticAn private const string Get = "Get"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertyNamesShouldNotMatchGetMethodsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertyNamesShouldNotMatchGetMethodsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PropertyNamesShouldNotMatchGetMethodsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Naming, - RuleLevel.Disabled, // Heuristic based naming rule. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(PropertyNamesShouldNotMatchGetMethodsTitle)), + CreateLocalizableResourceString(nameof(PropertyNamesShouldNotMatchGetMethodsMessage)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, // Heuristic based naming rule. + description: CreateLocalizableResourceString(nameof(PropertyNamesShouldNotMatchGetMethodsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs index e911cdb916..18ed5d8822 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1041: Provide ObsoleteAttribute message /// @@ -17,19 +19,15 @@ public sealed class ProvideObsoleteAttributeMessageAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1041"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ProvideObsoleteAttributeMessageTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ProvideObsoleteAttributeMessageMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ProvideObsoleteAttributeMessageDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ProvideObsoleteAttributeMessageTitle)), + CreateLocalizableResourceString(nameof(ProvideObsoleteAttributeMessageMessage)), + DiagnosticCategory.Design, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(ProvideObsoleteAttributeMessageDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs index 1378264e47..16a398d51c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1052: Static holder classes should be marked static, and should not have default /// constructors. @@ -40,20 +42,10 @@ public sealed class StaticHolderTypesAnalyzer : DiagnosticAnalyzer { public const string RuleId = "CA1052"; - private static readonly LocalizableString s_title = new LocalizableResourceString( - nameof(MicrosoftCodeQualityAnalyzersResources.StaticHolderTypesShouldBeStaticOrNotInheritable), - MicrosoftCodeQualityAnalyzersResources.ResourceManager, - typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_messageFormat = new LocalizableResourceString( - nameof(MicrosoftCodeQualityAnalyzersResources.StaticHolderTypeIsNotStatic), - MicrosoftCodeQualityAnalyzersResources.ResourceManager, - typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_title, - s_messageFormat, + CreateLocalizableResourceString(nameof(StaticHolderTypesShouldBeStaticOrNotInheritable)), + CreateLocalizableResourceString(nameof(StaticHolderTypeIsNotStatic)), DiagnosticCategory.Design, RuleLevel.Disabled, description: null, diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs index 318c21f754..40c579a800 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1724: Type names should not match namespaces /// @@ -19,30 +21,30 @@ public sealed class TypeNamesShouldNotMatchNamespacesAnalyzer : DiagnosticAnalyz { internal const string RuleId = "CA1724"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.TypeNamesShouldNotMatchNamespacesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(TypeNamesShouldNotMatchNamespacesTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(TypeNamesShouldNotMatchNamespacesDescription)); - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.TypeNamesShouldNotMatchNamespacesMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystem = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.TypeNamesShouldNotMatchNamespacesMessageSystem), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.TypeNamesShouldNotMatchNamespacesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(TypeNamesShouldNotMatchNamespacesMessageDefault)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isReportedAtCompilationEnd: true); - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isReportedAtCompilationEnd: true); - internal static DiagnosticDescriptor SystemRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystem, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor SystemRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(TypeNamesShouldNotMatchNamespacesMessageSystem)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isReportedAtCompilationEnd: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, SystemRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs index 0ad98b396d..ca433febd3 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1001: Types that own disposable fields should be disposable /// @@ -20,18 +22,15 @@ public abstract class TypesThatOwnDisposableFieldsShouldBeDisposableAnalyzer SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs index cb0cdea87e..0b907ed4c9 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1054: Uri parameters should not be strings /// @@ -17,19 +19,15 @@ public class UriParametersShouldNotBeStringsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1054"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriParametersShouldNotBeStringsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriParametersShouldNotBeStringsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriParametersShouldNotBeStringsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UriParametersShouldNotBeStringsTitle)), + CreateLocalizableResourceString(nameof(UriParametersShouldNotBeStringsMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(UriParametersShouldNotBeStringsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs index 5e906ce944..d1032c6934 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1056: Uri properties should not be strings /// @@ -16,19 +18,15 @@ public class UriPropertiesShouldNotBeStringsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1056"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriPropertiesShouldNotBeStringsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriPropertiesShouldNotBeStringsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriPropertiesShouldNotBeStringsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UriPropertiesShouldNotBeStringsTitle)), + CreateLocalizableResourceString(nameof(UriPropertiesShouldNotBeStringsMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(UriPropertiesShouldNotBeStringsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs index 5ec60ff120..0e3ef9f93b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1055: Uri return values should not be strings /// @@ -16,19 +18,15 @@ public class UriReturnValuesShouldNotBeStringsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1055"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriReturnValuesShouldNotBeStringsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriReturnValuesShouldNotBeStringsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UriReturnValuesShouldNotBeStringsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UriReturnValuesShouldNotBeStringsTitle)), + CreateLocalizableResourceString(nameof(UriReturnValuesShouldNotBeStringsMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(UriReturnValuesShouldNotBeStringsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs index 873c9e133c..519371debf 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1030: Use events where appropriate /// @@ -24,19 +26,15 @@ public sealed class UseEventsWhereAppropriateAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1030"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseEventsWhereAppropriateTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseEventsWhereAppropriateMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseEventsWhereAppropriateDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UseEventsWhereAppropriateTitle)), + CreateLocalizableResourceString(nameof(UseEventsWhereAppropriateMessage)), + DiagnosticCategory.Design, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(UseEventsWhereAppropriateDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs index 5feb9f5a9b..b3e9ae3b43 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1003: Use generic event handler instances /// CA1009: A delegate that handles a public or protected event does not have the correct signature, return type, or parameter names. @@ -23,41 +25,36 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines public sealed class UseGenericEventHandlerInstancesAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1003"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseGenericEventHandlerInstancesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageForDelegate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseGenericEventHandlerInstancesForDelegateMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionForDelegate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseGenericEventHandlerInstancesForDelegateDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageForEvent = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseGenericEventHandlerInstancesForEventMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionForEvent = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseGenericEventHandlerInstancesForEventDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageForEvent2 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseGenericEventHandlerInstancesForEvent2Message), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionForEvent2 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseGenericEventHandlerInstancesForEvent2Description), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor RuleForDelegates = DiagnosticDescriptorHelper.Create( + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(UseGenericEventHandlerInstancesTitle)); + + internal static readonly DiagnosticDescriptor RuleForDelegates = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageForDelegate, + CreateLocalizableResourceString(nameof(UseGenericEventHandlerInstancesForDelegateMessage)), DiagnosticCategory.Design, RuleLevel.Disabled, - description: s_localizableDescriptionForDelegate, + description: CreateLocalizableResourceString(nameof(UseGenericEventHandlerInstancesForDelegateDescription)), isPortedFxCopRule: true, isDataflowRule: false); - internal static DiagnosticDescriptor RuleForEvents = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor RuleForEvents = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageForEvent, + CreateLocalizableResourceString(nameof(UseGenericEventHandlerInstancesForEventMessage)), DiagnosticCategory.Design, RuleLevel.Disabled, - description: s_localizableDescriptionForEvent, + description: CreateLocalizableResourceString(nameof(UseGenericEventHandlerInstancesForEventDescription)), isPortedFxCopRule: true, isDataflowRule: false); - internal static DiagnosticDescriptor RuleForEvents2 = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor RuleForEvents2 = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageForEvent2, + CreateLocalizableResourceString(nameof(UseGenericEventHandlerInstancesForEvent2Message)), DiagnosticCategory.Design, RuleLevel.Disabled, - description: s_localizableDescriptionForEvent2, + description: CreateLocalizableResourceString(nameof(UseGenericEventHandlerInstancesForEvent2Description)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs index 3dd7031432..aea446feea 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1043: Use Integral Or String Argument For Indexers /// @@ -17,19 +19,15 @@ public sealed class UseIntegralOrStringArgumentForIndexersAnalyzer : DiagnosticA { internal const string RuleId = "CA1043"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseIntegralOrStringArgumentForIndexersTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseIntegralOrStringArgumentForIndexersMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseIntegralOrStringArgumentForIndexersDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UseIntegralOrStringArgumentForIndexersTitle)), + CreateLocalizableResourceString(nameof(UseIntegralOrStringArgumentForIndexersMessage)), + DiagnosticCategory.Design, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(UseIntegralOrStringArgumentForIndexersDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); /// /// PERF: ImmutableArray contains performs better than ImmutableHashSet for small arrays of primitive types. diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs index fcf58be2d2..04311aac8b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs @@ -13,170 +13,184 @@ public abstract class UsePreferredTermsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1726"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageAssembly = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageAssembly), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNamespace = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageNamespace), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageMemberParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDelegateParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageDelegateParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeTypeParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageTypeTypeParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMethodTypeParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageMethodTypeParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageType = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageType), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMember = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageMember), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageAssemblyNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageAssemblyNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNamespaceNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageNamespaceNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberParameterNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageMemberParameterNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDelegateParameterNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageDelegateParameterNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeTypeParameterNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageTypeTypeParameterNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMethodTypeParameterNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageMethodTypeParameterNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageTypeNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberNoAlternate = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsMessageMemberNoAlternate), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePreferredTermsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor AssemblyRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageAssembly, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor NamespaceRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNamespace, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MemberParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMemberParameter, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor DelegateParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDelegateParameter, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor TypeTypeParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTypeTypeParameter, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MethodTypeParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMethodTypeParameter, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor TypeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageType, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MemberRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMember, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor AssemblyNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageAssemblyNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor NamespaceNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNamespaceNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MemberParameterNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMemberParameterNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor DelegateParameterNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDelegateParameterNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor TypeTypeParameterNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTypeTypeParameterNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MethodTypeParameterNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMethodTypeParameterNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor TypeNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTypeNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MemberNoAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMemberNoAlternate, - DiagnosticCategory.Naming, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(UsePreferredTermsTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(UsePreferredTermsDescription)); + + internal static readonly DiagnosticDescriptor AssemblyRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageAssembly)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor NamespaceRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageNamespace)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor MemberParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageMemberParameter)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor DelegateParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageDelegateParameter)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor TypeTypeParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageTypeTypeParameter)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor MethodTypeParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageMethodTypeParameter)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor TypeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageType)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor MemberRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageMember)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor AssemblyNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageAssemblyNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor NamespaceNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageNamespaceNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor MemberParameterNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageMemberParameterNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor DelegateParameterNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageDelegateParameterNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor TypeTypeParameterNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageTypeTypeParameterNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor MethodTypeParameterNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageMethodTypeParameterNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor TypeNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageTypeNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor MemberNoAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UsePreferredTermsMessageMemberNoAlternate)), + DiagnosticCategory.Naming, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(AssemblyRule, NamespaceRule, MemberParameterRule, DelegateParameterRule, TypeTypeParameterRule, MethodTypeParameterRule, TypeRule, MemberRule, AssemblyNoAlternateRule, NamespaceNoAlternateRule, MemberParameterNoAlternateRule, DelegateParameterNoAlternateRule, TypeTypeParameterNoAlternateRule, MethodTypeParameterNoAlternateRule, TypeNoAlternateRule, MemberNoAlternateRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs index 5a76d5cc7f..219e3b9fd9 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1024: Use properties where appropriate /// @@ -19,18 +21,17 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines public sealed class UsePropertiesWhereAppropriateAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1024"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePropertiesWhereAppropriateTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePropertiesWhereAppropriateMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UsePropertiesWhereAppropriateDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, // Heuristic based rule. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UsePropertiesWhereAppropriateTitle)), + CreateLocalizableResourceString(nameof(UsePropertiesWhereAppropriateMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, // Heuristic based rule. + description: CreateLocalizableResourceString(nameof(UsePropertiesWhereAppropriateDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); + private const string GetHashCodeName = "GetHashCode"; private const string GetEnumeratorName = "GetEnumerator"; private const string GetPinnableReferenceName = "GetPinnableReference"; diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs index f7c8fe7495..0cac944764 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs @@ -13,110 +13,118 @@ public abstract class AvoidCallingProblematicMethodsAnalyzer : DiagnosticAnalyze { internal const string RuleId = "CA2001"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageSystemGCCollect = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemGCCollect), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystemThreadingThreadResume = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemThreadingThreadResume), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystemThreadingThreadSuspend = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemThreadingThreadSuspend), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystemTypeInvokeMember = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemTypeInvokeMember), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCoInitializeSecurity = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageCoInitializeSecurity), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCoSetProxyBlanket = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageCoSetProxyBlanket), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystemRuntimeInteropServicesSafeHandleDangerousGetHandle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemRuntimeInteropServicesSafeHandleDangerousGetHandle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystemReflectionAssemblyLoadFrom = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemReflectionAssemblyLoadFrom), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystemReflectionAssemblyLoadFile = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemReflectionAssemblyLoadFile), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageSystemReflectionAssemblyLoadWithPartialName = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsMessageSystemReflectionAssemblyLoadWithPartialName), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidCallingProblematicMethodsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor SystemGCCollectRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemGCCollect, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor SystemThreadingThreadResumeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemThreadingThreadResume, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor SystemThreadingThreadSuspendRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemThreadingThreadSuspend, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor SystemTypeInvokeMemberRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemTypeInvokeMember, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor CoInitializeSecurityRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageCoInitializeSecurity, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor CoSetProxyBlanketRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageCoSetProxyBlanket, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor SystemRuntimeInteropServicesSafeHandleDangerousGetHandleRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemRuntimeInteropServicesSafeHandleDangerousGetHandle, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor SystemReflectionAssemblyLoadFromRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemReflectionAssemblyLoadFrom, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor SystemReflectionAssemblyLoadFileRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemReflectionAssemblyLoadFile, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor SystemReflectionAssemblyLoadWithPartialNameRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageSystemReflectionAssemblyLoadWithPartialName, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsDescription)); + + internal static readonly DiagnosticDescriptor SystemGCCollectRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemGCCollect)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor SystemThreadingThreadResumeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemThreadingThreadResume)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor SystemThreadingThreadSuspendRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemThreadingThreadSuspend)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor SystemTypeInvokeMemberRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemTypeInvokeMember)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor CoInitializeSecurityRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageCoInitializeSecurity)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor CoSetProxyBlanketRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageCoSetProxyBlanket)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor SystemRuntimeInteropServicesSafeHandleDangerousGetHandleRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemRuntimeInteropServicesSafeHandleDangerousGetHandle)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor SystemReflectionAssemblyLoadFromRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemReflectionAssemblyLoadFrom)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor SystemReflectionAssemblyLoadFileRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemReflectionAssemblyLoadFile)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor SystemReflectionAssemblyLoadWithPartialNameRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidCallingProblematicMethodsMessageSystemReflectionAssemblyLoadWithPartialName)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; // ImmutableArray.Create(SystemGCCollectRule, SystemThreadingThreadResumeRule, SystemThreadingThreadSuspendRule, SystemTypeInvokeMemberRule, CoInitializeSecurityRule, CoSetProxyBlanketRule, SystemRuntimeInteropServicesSafeHandleDangerousGetHandleRule, SystemReflectionAssemblyLoadFromRule, SystemReflectionAssemblyLoadFileRule, SystemReflectionAssemblyLoadWithPartialNameRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs index ae8b2ba72e..5807088641 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs @@ -7,6 +7,8 @@ namespace Microsoft.CodeQuality.Analyzers.Documentation { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1200: Avoid using cref tags with a prefix /// @@ -14,19 +16,15 @@ public abstract class AvoidUsingCrefTagsWithAPrefixAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1200"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUsingCrefTagsWithAPrefixTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUsingCrefTagsWithAPrefixMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUsingCrefTagsWithAPrefixDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Documentation, - RuleLevel.IdeHidden_BulkConfigurable, // False positives would occur in multitargeting scenarios. - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidUsingCrefTagsWithAPrefixTitle)), + CreateLocalizableResourceString(nameof(AvoidUsingCrefTagsWithAPrefixMessage)), + DiagnosticCategory.Documentation, + RuleLevel.IdeHidden_BulkConfigurable, // False positives would occur in multitargeting scenarios. + description: CreateLocalizableResourceString(nameof(AvoidUsingCrefTagsWithAPrefixDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs index ac10afe20c..8651ce448b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs @@ -15,6 +15,8 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1508: Flags conditional expressions which are always true/false and null checks for operations that are always null/non-null based on predicate analysis. /// @@ -23,29 +25,29 @@ public sealed class AvoidDeadConditionalCode : DiagnosticAnalyzer { internal const string RuleId = "CA1508"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidDeadConditionalCodeTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableAlwaysTrueFalseOrNullMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidDeadConditionalCodeAlwaysTruFalseOrNullMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableNeverNullMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidDeadConditionalCodeNeverNullMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(AvoidDeadConditionalCodeTitle)); // https://github.com/dotnet/roslyn-analyzers/issues/2180 tracks enabling the rule by default - internal static DiagnosticDescriptor AlwaysTrueFalseOrNullRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableAlwaysTrueFalseOrNullMessage, - DiagnosticCategory.Maintainability, - RuleLevel.Disabled, - description: null, - isPortedFxCopRule: false, - isDataflowRule: true); - - internal static DiagnosticDescriptor NeverNullRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableNeverNullMessage, - DiagnosticCategory.Maintainability, - RuleLevel.Disabled, - description: null, - isPortedFxCopRule: false, - isDataflowRule: true); + internal static readonly DiagnosticDescriptor AlwaysTrueFalseOrNullRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidDeadConditionalCodeAlwaysTruFalseOrNullMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.Disabled, + description: null, + isPortedFxCopRule: false, + isDataflowRule: true); + + internal static readonly DiagnosticDescriptor NeverNullRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidDeadConditionalCodeNeverNullMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.Disabled, + description: null, + isPortedFxCopRule: false, + isDataflowRule: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(AlwaysTrueFalseOrNullRule, NeverNullRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs index fb31fbc8a5..702feed831 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs @@ -13,6 +13,8 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1812: Avoid uninstantiated internal classes /// @@ -20,20 +22,16 @@ public abstract class AvoidUninstantiatedInternalClassesAnalyzer : DiagnosticAna { internal const string RuleId = "CA1812"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUninstantiatedInternalClassesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUninstantiatedInternalClassesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUninstantiatedInternalClassesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.Disabled, // Code coverage tools provide superior results when done correctly. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidUninstantiatedInternalClassesTitle)), + CreateLocalizableResourceString(nameof(AvoidUninstantiatedInternalClassesMessage)), + DiagnosticCategory.Performance, + RuleLevel.Disabled, // Code coverage tools provide superior results when done correctly. + description: CreateLocalizableResourceString(nameof(AvoidUninstantiatedInternalClassesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isReportedAtCompilationEnd: true); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs index e0c8869e66..5c6980c7d1 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1823: Avoid unused private fields /// @@ -19,19 +21,15 @@ public sealed class AvoidUnusedPrivateFieldsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1823"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUnusedPrivateFieldsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUnusedPrivateFieldsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUnusedPrivateFieldsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.Disabled, // Need to figure out how to handle runtime only references. We also have an implementation in the IDE. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidUnusedPrivateFieldsTitle)), + CreateLocalizableResourceString(nameof(AvoidUnusedPrivateFieldsMessage)), + DiagnosticCategory.Performance, + RuleLevel.Disabled, // Need to figure out how to handle runtime only references. We also have an implementation in the IDE. + description: CreateLocalizableResourceString(nameof(AvoidUnusedPrivateFieldsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs index 4b2b9737f7..e0be1eb5f6 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs @@ -16,6 +16,8 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability.CodeMetrics { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1501: Avoid excessive inheritance /// CA1502: Avoid excessive complexity @@ -46,80 +48,65 @@ public sealed class CodeMetricsAnalyzer : DiagnosticAnalyzer // New rule for invalid entries in CodeMetricsConfigurationFile. internal const string CA1509RuleId = "CA1509"; - private static readonly LocalizableString s_localizableTitleCA1501 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveInheritanceTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1501 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveInheritanceMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1501 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveInheritanceDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableTitleCA1502 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveComplexityTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1502 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveComplexityMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1502 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveComplexityDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableTitleCA1505 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUnmantainableCodeTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1505 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUnmantainableCodeMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1505 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidUnmantainableCodeDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableTitleCA1506 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveClassCouplingTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1506 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveClassCouplingMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1506 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidExcessiveClassCouplingDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableTitleCA1509 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.InvalidEntryInCodeMetricsConfigFileTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1509 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.InvalidEntryInCodeMetricsConfigFileMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1509 = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.InvalidEntryInCodeMetricsConfigFileDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor CA1501Rule = DiagnosticDescriptorHelper.Create(CA1501RuleId, - s_localizableTitleCA1501, - s_localizableMessageCA1501, - DiagnosticCategory.Maintainability, - RuleLevel.CandidateForRemoval, - description: s_localizableDescriptionCA1501, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false, - isReportedAtCompilationEnd: true); - - internal static DiagnosticDescriptor CA1502Rule = DiagnosticDescriptorHelper.Create(CA1502RuleId, - s_localizableTitleCA1502, - s_localizableMessageCA1502, - DiagnosticCategory.Maintainability, - RuleLevel.CandidateForRemoval, - description: s_localizableDescriptionCA1502, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false, - isReportedAtCompilationEnd: true); - - internal static DiagnosticDescriptor CA1505Rule = DiagnosticDescriptorHelper.Create(CA1505RuleId, - s_localizableTitleCA1505, - s_localizableMessageCA1505, - DiagnosticCategory.Maintainability, - RuleLevel.CandidateForRemoval, - description: s_localizableDescriptionCA1505, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false, - isReportedAtCompilationEnd: true); - - internal static DiagnosticDescriptor CA1506Rule = DiagnosticDescriptorHelper.Create(CA1506RuleId, - s_localizableTitleCA1506, - s_localizableMessageCA1506, - DiagnosticCategory.Maintainability, - RuleLevel.CandidateForRemoval, - description: s_localizableDescriptionCA1506, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false, - isReportedAtCompilationEnd: true); - - internal static DiagnosticDescriptor InvalidEntryInCodeMetricsConfigFileRule = DiagnosticDescriptorHelper.Create(CA1509RuleId, - s_localizableTitleCA1509, - s_localizableMessageCA1509, - DiagnosticCategory.Maintainability, - RuleLevel.CandidateForRemoval, - description: s_localizableDescriptionCA1509, - isPortedFxCopRule: false, - isDataflowRule: false, - isEnabledByDefaultInAggressiveMode: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor CA1501Rule = DiagnosticDescriptorHelper.Create( + CA1501RuleId, + CreateLocalizableResourceString(nameof(AvoidExcessiveInheritanceTitle)), + CreateLocalizableResourceString(nameof(AvoidExcessiveInheritanceMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(AvoidExcessiveInheritanceDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false, + isReportedAtCompilationEnd: true); + + internal static readonly DiagnosticDescriptor CA1502Rule = DiagnosticDescriptorHelper.Create( + CA1502RuleId, + CreateLocalizableResourceString(nameof(AvoidExcessiveComplexityTitle)), + CreateLocalizableResourceString(nameof(AvoidExcessiveComplexityMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(AvoidExcessiveComplexityDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false, + isReportedAtCompilationEnd: true); + + internal static readonly DiagnosticDescriptor CA1505Rule = DiagnosticDescriptorHelper.Create( + CA1505RuleId, + CreateLocalizableResourceString(nameof(AvoidUnmantainableCodeTitle)), + CreateLocalizableResourceString(nameof(AvoidUnmantainableCodeMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(AvoidUnmantainableCodeDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false, + isReportedAtCompilationEnd: true); + + internal static readonly DiagnosticDescriptor CA1506Rule = DiagnosticDescriptorHelper.Create( + CA1506RuleId, + CreateLocalizableResourceString(nameof(AvoidExcessiveClassCouplingTitle)), + CreateLocalizableResourceString(nameof(AvoidExcessiveClassCouplingMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(AvoidExcessiveClassCouplingDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false, + isReportedAtCompilationEnd: true); + + internal static readonly DiagnosticDescriptor InvalidEntryInCodeMetricsConfigFileRule = DiagnosticDescriptorHelper.Create( + CA1509RuleId, + CreateLocalizableResourceString(nameof(InvalidEntryInCodeMetricsConfigFileTitle)), + CreateLocalizableResourceString(nameof(InvalidEntryInCodeMetricsConfigFileMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(InvalidEntryInCodeMetricsConfigFileDescription)), + isPortedFxCopRule: false, + isDataflowRule: false, + isEnabledByDefaultInAggressiveMode: false, + isReportedAtCompilationEnd: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(CA1501Rule, CA1502Rule, CA1505Rule, CA1506Rule, InvalidEntryInCodeMetricsConfigFileRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs index 08c019925f..3b07afe1cd 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1806: Do not ignore method results /// @@ -60,79 +62,78 @@ public sealed class DoNotIgnoreMethodResultsAnalyzer : DiagnosticAnalyzer "ThrowsAnyAsync", }); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageObjectCreation = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsMessageObjectCreation), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageStringCreation = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsMessageStringCreation), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageHResultOrErrorCode = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsMessageHResultOrErrorCode), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessagePureMethod = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsMessagePureMethod), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTryParse = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsMessageTryParse), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageLinqMethod = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsMessageLinqMethod), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageUserDefinedMethod = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsMessageUserDefinedMethod), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotIgnoreMethodResultsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor ObjectCreationRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageObjectCreation, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor StringCreationRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageStringCreation, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor HResultOrErrorCodeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageHResultOrErrorCode, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor PureMethodRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessagePureMethod, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor TryParseRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTryParse, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor LinqMethodRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageLinqMethod, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor UserDefinedMethodRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageUserDefinedMethod, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsDescription)); + + internal static readonly DiagnosticDescriptor ObjectCreationRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsMessageObjectCreation)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor StringCreationRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsMessageStringCreation)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor HResultOrErrorCodeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsMessageHResultOrErrorCode)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor PureMethodRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsMessagePureMethod)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor TryParseRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsMessageTryParse)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor LinqMethodRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsMessageLinqMethod)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor UserDefinedMethodRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotIgnoreMethodResultsMessageUserDefinedMethod)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ObjectCreationRule, StringCreationRule, HResultOrErrorCodeRule, TryParseRule, PureMethodRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs index 37b7212735..075e4207a9 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1801: Review unused parameters /// @@ -19,19 +21,15 @@ public abstract class ReviewUnusedParametersAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1801"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ReviewUnusedParametersTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ReviewUnusedParametersMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ReviewUnusedParametersDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, // We have an implementation in IDE. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ReviewUnusedParametersTitle)), + CreateLocalizableResourceString(nameof(ReviewUnusedParametersMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, // We have an implementation in IDE. + description: CreateLocalizableResourceString(nameof(ReviewUnusedParametersDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs index 41514ae9ec..23b726de08 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1507 Use nameof to express symbol names /// @@ -20,18 +22,15 @@ public abstract class UseNameofInPlaceOfStringAnalyzer : DiagnosticAnalyzer private const string PropertyName = "propertyName"; internal const string StringText = "StringText"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseNameOfInPlaceOfStringTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseNameOfInPlaceOfStringMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseNameOfInPlaceOfStringDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor RuleWithSuggestion = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Maintainability, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RuleWithSuggestion = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UseNameOfInPlaceOfStringTitle)), + CreateLocalizableResourceString(nameof(UseNameOfInPlaceOfStringMessage)), + DiagnosticCategory.Maintainability, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(UseNameOfInPlaceOfStringDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleWithSuggestion); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs index d321c8cf87..cd9c7f31f5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs @@ -13,30 +13,30 @@ public abstract class VariableNamesShouldNotMatchFieldNamesAnalyzer : Diagnostic { internal const string RuleId = "CA1500"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.VariableNamesShouldNotMatchFieldNamesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageLocal = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.VariableNamesShouldNotMatchFieldNamesMessageLocal), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageParameter = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.VariableNamesShouldNotMatchFieldNamesMessageParameter), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.VariableNamesShouldNotMatchFieldNamesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor LocalRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageLocal, - DiagnosticCategory.Maintainability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor ParameterRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageParameter, - DiagnosticCategory.Maintainability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(VariableNamesShouldNotMatchFieldNamesTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(VariableNamesShouldNotMatchFieldNamesDescription)); + + internal static readonly DiagnosticDescriptor LocalRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(VariableNamesShouldNotMatchFieldNamesMessageLocal)), + DiagnosticCategory.Maintainability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor ParameterRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(VariableNamesShouldNotMatchFieldNamesMessageParameter)), + DiagnosticCategory.Maintainability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(LocalRule, ParameterRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/MicrosoftCodeQualityAnalyzersResources.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/MicrosoftCodeQualityAnalyzersResources.cs new file mode 100644 index 0000000000..27f7a2cd2a --- /dev/null +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/MicrosoftCodeQualityAnalyzersResources.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. + +using System; +using Microsoft.CodeAnalysis; + +namespace Microsoft.CodeQuality.Analyzers +{ + internal partial class MicrosoftCodeQualityAnalyzersResources + { + private static readonly Type s_resourcesType = typeof(MicrosoftCodeQualityAnalyzersResources); + + 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); + } +} diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs index 8c1638e598..e3ed29f9e0 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2246: Prevent objects from being referenced in statements where they are reassigned /// @@ -20,16 +22,13 @@ public sealed class AssigningSymbolAndItsMemberInSameStatement : DiagnosticAnaly { internal const string RuleId = "CA2246"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AssigningSymbolAndItsMemberInSameStatementTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AssigningSymbolAndItsMemberInSameStatementMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AssigningSymbolAndItsMemberInSameStatementDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AssigningSymbolAndItsMemberInSameStatementTitle)), + CreateLocalizableResourceString(nameof(AssigningSymbolAndItsMemberInSameStatementMessage)), DiagnosticCategory.Usage, RuleLevel.IdeSuggestion, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(AssigningSymbolAndItsMemberInSameStatementDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs index 4c1661e2ad..ede177f23a 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2244: Do not duplicate indexed element initializations /// @@ -20,18 +22,15 @@ public sealed class AvoidDuplicateElementInitialization : DiagnosticAnalyzer { internal const string RuleId = "CA2244"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidDuplicateElementInitializationTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidDuplicateElementInitializationMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidDuplicateElementInitializationDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidDuplicateElementInitializationTitle)), + CreateLocalizableResourceString(nameof(AvoidDuplicateElementInitializationMessage)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(AvoidDuplicateElementInitializationDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs index 1c00a083d3..4fbb12a7f8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs @@ -9,23 +9,25 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class AvoidInfiniteRecursion : DiagnosticAnalyzer { internal const string RuleId = "CA2011"; - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidInfiniteRecursionTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidInfiniteRecursionMessageSure), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)), + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, + CreateLocalizableResourceString(nameof(AvoidInfiniteRecursionTitle)), + CreateLocalizableResourceString(nameof(AvoidInfiniteRecursionMessageSure)), DiagnosticCategory.Reliability, RuleLevel.IdeSuggestion, description: null, isPortedFxCopRule: false, isDataflowRule: false); - internal static DiagnosticDescriptor MaybeRule = DiagnosticDescriptorHelper.Create(RuleId, - new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidInfiniteRecursionTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidInfiniteRecursionMessageMaybe), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)), + internal static readonly DiagnosticDescriptor MaybeRule = DiagnosticDescriptorHelper.Create(RuleId, + CreateLocalizableResourceString(nameof(AvoidInfiniteRecursionTitle)), + CreateLocalizableResourceString(nameof(AvoidInfiniteRecursionMessageMaybe)), DiagnosticCategory.Reliability, RuleLevel.IdeSuggestion, description: null, diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs index e9f2cbfbaf..914d3b4349 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2245: Prevent properties from being assigned to themselves /// @@ -18,12 +20,9 @@ public sealed class AvoidPropertySelfAssignment : DiagnosticAnalyzer { internal const string RuleId = "CA2245"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidPropertySelfAssignmentTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.AvoidPropertySelfAssignmentMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, + CreateLocalizableResourceString(nameof(AvoidPropertySelfAssignmentTitle)), + CreateLocalizableResourceString(nameof(AvoidPropertySelfAssignmentMessage)), DiagnosticCategory.Usage, RuleLevel.BuildWarningCandidate, description: null, diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs index 5ccd0ec62f..94d7caafd5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2214: Do not call overridable methods in constructors /// @@ -22,17 +24,17 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines public sealed class DoNotCallOverridableMethodsInConstructorsAnalyzer : DiagnosticAnalyzer { public const string RuleId = "CA2214"; - private static readonly LocalizableString s_localizableMessageAndTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotCallOverridableMethodsInConstructors), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotCallOverridableMethodsInConstructorsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); + private static readonly LocalizableString s_localizableMessageAndTitle = CreateLocalizableResourceString(nameof(DoNotCallOverridableMethodsInConstructors)); - public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableMessageAndTitle, - s_localizableMessageAndTitle, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + public static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableMessageAndTitle, + s_localizableMessageAndTitle, + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotCallOverridableMethodsInConstructorsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs index cae5f38c10..33030f2c6b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + #pragma warning disable RS1004 // Recommend adding language support to diagnostic analyzer - Construct is invalid in VB.NET [DiagnosticAnalyzer(LanguageNames.CSharp)] #pragma warning restore RS1004 // Recommend adding language support to diagnostic analyzer @@ -15,17 +17,13 @@ public sealed class DoNotDeclareEventFieldsAsVirtual : DiagnosticAnalyzer { internal const string RuleId = "CA1070"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareEventFieldsAsVirtualTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareEventFieldsAsVirtualMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotDeclareEventFieldsAsVirtualDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotDeclareEventFieldsAsVirtualTitle)), + CreateLocalizableResourceString(nameof(DoNotDeclareEventFieldsAsVirtualMessage)), DiagnosticCategory.Design, RuleLevel.IdeSuggestion, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotDeclareEventFieldsAsVirtualDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs index dcea37375f..dc0efb5910 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs @@ -10,17 +10,19 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// CA1805: Do not initialize unnecessarily. public abstract class DoNotInitializeUnnecessarilyAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1805"; - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotInitializeUnnecessarilyTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotInitializeUnnecessarilyMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)), + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, + CreateLocalizableResourceString(nameof(DoNotInitializeUnnecessarilyTitle)), + CreateLocalizableResourceString(nameof(DoNotInitializeUnnecessarilyMessage)), DiagnosticCategory.Performance, RuleLevel.IdeHidden_BulkConfigurable, - new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotInitializeUnnecessarilyDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)), + CreateLocalizableResourceString(nameof(DoNotInitializeUnnecessarilyDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs index 72e977ab73..17a73dca15 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2219: Do not raise exceptions in exception clauses /// @@ -24,18 +26,15 @@ public sealed class DoNotRaiseExceptionsInExceptionClausesAnalyzer : DiagnosticA { internal const string RuleId = "CA2219"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInExceptionClausesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInExceptionClausesMessageFinally), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.DoNotRaiseExceptionsInExceptionClausesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInExceptionClausesTitle)), + CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInExceptionClausesMessageFinally)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(DoNotRaiseExceptionsInExceptionClausesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs index afa9066eb6..499e451e7b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs @@ -12,6 +12,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1822: Mark members as static /// @@ -20,19 +22,15 @@ public sealed class MarkMembersAsStaticAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1822"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkMembersAsStaticTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkMembersAsStaticMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.MarkMembersAsStaticDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(MarkMembersAsStaticTitle)), + CreateLocalizableResourceString(nameof(MarkMembersAsStaticMessage)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(MarkMembersAsStaticDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs index 5eeda9540f..502bdae0fe 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1814: Prefer jagged arrays over multidimensional /// @@ -17,37 +19,38 @@ public sealed class PreferJaggedArraysOverMultidimensionalAnalyzer : DiagnosticA { internal const string RuleId = "CA1814"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PreferJaggedArraysOverMultidimensionalTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PreferJaggedArraysOverMultidimensionalMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageReturn = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PreferJaggedArraysOverMultidimensionalMessageReturn), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageBody = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PreferJaggedArraysOverMultidimensionalMessageBody), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.PreferJaggedArraysOverMultidimensionalDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Performance, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor ReturnRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageReturn, - DiagnosticCategory.Performance, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor BodyRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageBody, - DiagnosticCategory.Performance, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(PreferJaggedArraysOverMultidimensionalTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(PreferJaggedArraysOverMultidimensionalDescription)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PreferJaggedArraysOverMultidimensionalMessageDefault)), + DiagnosticCategory.Performance, + RuleLevel.CandidateForRemoval, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor ReturnRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PreferJaggedArraysOverMultidimensionalMessageReturn)), + DiagnosticCategory.Performance, + RuleLevel.CandidateForRemoval, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor BodyRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PreferJaggedArraysOverMultidimensionalMessageBody)), + DiagnosticCategory.Performance, + RuleLevel.CandidateForRemoval, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, ReturnRule, BodyRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs index 28b8f81377..b8031a7490 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs @@ -9,22 +9,22 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class RemoveEmptyFinalizersAnalyzer : DiagnosticAnalyzer { public const string RuleId = "CA1821"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.RemoveEmptyFinalizers), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.RemoveEmptyFinalizers), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.RemoveEmptyFinalizersDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(RemoveEmptyFinalizers)), + CreateLocalizableResourceString(nameof(RemoveEmptyFinalizers)), + DiagnosticCategory.Performance, + RuleLevel.BuildWarningCandidate, + description: CreateLocalizableResourceString(nameof(RemoveEmptyFinalizersDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs index 181b6ce293..3ef1510749 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs @@ -9,21 +9,22 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class RethrowToPreserveStackDetailsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2200"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.RethrowToPreserveStackDetailsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.RethrowToPreserveStackDetailsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.BuildWarning, - description: null, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(RethrowToPreserveStackDetailsTitle)), + CreateLocalizableResourceString(nameof(RethrowToPreserveStackDetailsMessage)), + DiagnosticCategory.Usage, + RuleLevel.BuildWarning, + description: null, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs index 3a63866252..417d0eb0e7 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs @@ -8,6 +8,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2109: Review visible event handlers /// @@ -16,17 +18,13 @@ public sealed class ReviewVisibleEventHandlersAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2109"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ReviewVisibleEventHandlersTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ReviewVisibleEventHandlersMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ReviewVisibleEventHandlersDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessageDefault, + CreateLocalizableResourceString(nameof(ReviewVisibleEventHandlersTitle)), + CreateLocalizableResourceString(nameof(ReviewVisibleEventHandlersMessageDefault)), DiagnosticCategory.Security, RuleLevel.Disabled, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(ReviewVisibleEventHandlersDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs index 78093825a8..c69dfd9030 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs @@ -9,6 +9,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA2119: Seal methods that satisfy private interfaces /// @@ -17,19 +19,15 @@ public sealed class SealMethodsThatSatisfyPrivateInterfacesAnalyzer : Diagnostic { internal const string RuleId = "CA2119"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.SealMethodsThatSatisfyPrivateInterfacesTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.SealMethodsThatSatisfyPrivateInterfacesMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.SealMethodsThatSatisfyPrivateInterfacesDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Security, - RuleLevel.CandidateForRemoval, // Need confirmation from security team if this is no longer a security concern. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(SealMethodsThatSatisfyPrivateInterfacesTitle)), + CreateLocalizableResourceString(nameof(SealMethodsThatSatisfyPrivateInterfacesMessage)), + DiagnosticCategory.Security, + RuleLevel.CandidateForRemoval, // Need confirmation from security team if this is no longer a security concern. + description: CreateLocalizableResourceString(nameof(SealMethodsThatSatisfyPrivateInterfacesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs index e44e9bb82c..dd83be4200 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs @@ -10,6 +10,8 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + /// /// CA1802: Use literals where appropriate /// @@ -17,28 +19,28 @@ public abstract class UseLiteralsWhereAppropriateAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1802"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseLiteralsWhereAppropriateTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseLiteralsWhereAppropriateMessageDefault), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageEmptyString = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseLiteralsWhereAppropriateMessageEmptyString), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.UseLiteralsWhereAppropriateDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Performance, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor EmptyStringRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageEmptyString, - DiagnosticCategory.Performance, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(UseLiteralsWhereAppropriateTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(UseLiteralsWhereAppropriateDescription)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UseLiteralsWhereAppropriateMessageDefault)), + DiagnosticCategory.Performance, + RuleLevel.CandidateForRemoval, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor EmptyStringRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(UseLiteralsWhereAppropriateMessageEmptyString)), + DiagnosticCategory.Performance, + RuleLevel.CandidateForRemoval, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, EmptyStringRule); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs index 52b70df4d1..438ca082fa 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs @@ -11,23 +11,22 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines { + using static MicrosoftCodeQualityAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class ValidateArgumentsOfPublicMethods : DiagnosticAnalyzer { internal const string RuleId = "CA1062"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ValidateArgumentsOfPublicMethodsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ValidateArgumentsOfPublicMethodsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ValidateArgumentsOfPublicMethodsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Design, - RuleLevel.Disabled, // After C# 9, the only recommended way to do this would be using the ! Operator and we can switch this to IDE Suggestion. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ValidateArgumentsOfPublicMethodsTitle)), + CreateLocalizableResourceString(nameof(ValidateArgumentsOfPublicMethodsMessage)), + DiagnosticCategory.Design, + RuleLevel.Disabled, // After C# 9, the only recommended way to do this would be using the ! Operator and we can switch this to IDE Suggestion. + description: CreateLocalizableResourceString(nameof(ValidateArgumentsOfPublicMethodsDescription)), + isPortedFxCopRule: true, + isDataflowRule: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs index ec1f0d91a0..45b1038801 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs @@ -13,25 +13,22 @@ namespace Microsoft.NetCore.Analyzers.Data { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class ReviewSqlQueriesForSecurityVulnerabilities : DiagnosticAnalyzer { internal const string RuleId = "CA2100"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ReviewSQLQueriesForSecurityVulnerabilitiesTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageNoNonLiterals = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ReviewSQLQueriesForSecurityVulnerabilitiesMessageNoNonLiterals), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ReviewSQLQueriesForSecurityVulnerabilitiesDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNoNonLiterals, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ReviewSQLQueriesForSecurityVulnerabilitiesTitle)), + CreateLocalizableResourceString(nameof(ReviewSQLQueriesForSecurityVulnerabilitiesMessageNoNonLiterals)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(ReviewSQLQueriesForSecurityVulnerabilitiesDescription)), + isPortedFxCopRule: true, + isDataflowRule: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs index 6b65a65725..f9ceb89eef 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.ImmutableCollections { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2009: Do not call ToImmutableCollection on an ImmutableCollection value /// @@ -21,17 +23,15 @@ public sealed class DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAn private const string ImmutableArrayMetadataName = "System.Collections.Immutable.ImmutableArray`1"; internal const string RuleId = "CA2009"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCallToImmutableCollectionOnAnImmutableCollectionValueTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCallToImmutableCollectionOnAnImmutableCollectionValueMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Reliability, - RuleLevel.IdeSuggestion, - description: null, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotCallToImmutableCollectionOnAnImmutableCollectionValueTitle)), + CreateLocalizableResourceString(nameof(DoNotCallToImmutableCollectionOnAnImmutableCollectionValueMessage)), + DiagnosticCategory.Reliability, + RuleLevel.IdeSuggestion, + description: null, + isPortedFxCopRule: false, + isDataflowRule: false); private static readonly ImmutableDictionary ImmutableCollectionMetadataNames = new Dictionary { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs index ac081c22c8..8b1da33e42 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs @@ -8,6 +8,8 @@ namespace Microsoft.NetCore.Analyzers.InteropServices { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1838: Avoid StringBuilder parameters for P/Invokes /// @@ -16,18 +18,15 @@ public sealed class AvoidStringBuilderPInvokeParametersAnalyzer : DiagnosticAnal { internal const string RuleId = "CA1838"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidStringBuilderPInvokeParametersTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidStringBuilderPInvokeParametersMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidStringBuilderPInvokeParametersDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.IdeHidden_BulkConfigurable, // Only for users explicitly targeting performance - addressing violation is non-trivial - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidStringBuilderPInvokeParametersTitle)), + CreateLocalizableResourceString(nameof(AvoidStringBuilderPInvokeParametersMessage)), + DiagnosticCategory.Performance, + RuleLevel.IdeHidden_BulkConfigurable, // Only for users explicitly targeting performance - addressing violation is non-trivial + description: CreateLocalizableResourceString(nameof(AvoidStringBuilderPInvokeParametersDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs index 8ba7521c83..0ba855db51 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs @@ -8,6 +8,8 @@ namespace Microsoft.NetCore.Analyzers.InteropServices { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1417: Do not use [Out] string parameters for P/Invokes /// @@ -16,18 +18,15 @@ public sealed class DoNotUseOutAttributeStringPInvokeParametersAnalyzer : Diagno { internal const string RuleId = "CA1417"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseOutAttributeStringPInvokeParametersTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseOutAttributeStringPInvokeParametersMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseOutAttributeStringPInvokeParametersDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotUseOutAttributeStringPInvokeParametersTitle)), + CreateLocalizableResourceString(nameof(DoNotUseOutAttributeStringPInvokeParametersMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: CreateLocalizableResourceString(nameof(DoNotUseOutAttributeStringPInvokeParametersDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs index f61aa6f25e..63e5515f1d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs @@ -23,7 +23,6 @@ public sealed override Task RegisterCodeFixesAsync(CodeFixContext context) { // Fixer not yet implemented. return Task.CompletedTask; - } } } \ No newline at end of file diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs index 19c40da7ce..fd18b2e996 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs @@ -13,30 +13,27 @@ public abstract class MarkBooleanPInvokeArgumentsWithMarshalAsAnalyzer : Diagnos { internal const string RuleId = "CA1414"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkBooleanPInvokeArgumentsWithMarshalAsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkBooleanPInvokeArgumentsWithMarshalAsMessageDefault), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageReturn = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkBooleanPInvokeArgumentsWithMarshalAsMessageReturn), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkBooleanPInvokeArgumentsWithMarshalAsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Interoperability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor ReturnRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageReturn, - DiagnosticCategory.Interoperability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(MarkBooleanPInvokeArgumentsWithMarshalAsTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(MarkBooleanPInvokeArgumentsWithMarshalAsDescription)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(MarkBooleanPInvokeArgumentsWithMarshalAsMessageDefault)), + DiagnosticCategory.Interoperability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + internal static readonly DiagnosticDescriptor ReturnRule = DiagnosticDescriptorHelper.Create(RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(MarkBooleanPInvokeArgumentsWithMarshalAsMessageReturn)), + DiagnosticCategory.Interoperability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(DefaultRule, ReturnRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs index 8ca98e5bbd..ca3f7fdd84 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs @@ -10,35 +10,35 @@ namespace Microsoft.NetCore.Analyzers.InteropServices { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class PInvokeDiagnosticAnalyzer : DiagnosticAnalyzer { public const string RuleCA1401Id = "CA1401"; public const string RuleCA2101Id = "CA2101"; - private static readonly LocalizableString s_localizableTitleCA1401 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PInvokesShouldNotBeVisibleTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageCA1401 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PInvokesShouldNotBeVisibleMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA1401 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PInvokesShouldNotBeVisibleDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor RuleCA1401 = DiagnosticDescriptorHelper.Create(RuleCA1401Id, - s_localizableTitleCA1401, - s_localizableMessageCA1401, - DiagnosticCategory.Interoperability, - RuleLevel.IdeSuggestion, - description: s_localizableDescriptionCA1401, - isPortedFxCopRule: true, - isDataflowRule: false); - - private static readonly LocalizableString s_localizableMessageAndTitleCA2101 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyMarshalingForPInvokeStringArgumentsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescriptionCA2101 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyMarshalingForPInvokeStringArgumentsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor RuleCA2101 = DiagnosticDescriptorHelper.Create(RuleCA2101Id, - s_localizableMessageAndTitleCA2101, - s_localizableMessageAndTitleCA2101, - DiagnosticCategory.Globalization, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescriptionCA2101, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RuleCA1401 = DiagnosticDescriptorHelper.Create( + RuleCA1401Id, + CreateLocalizableResourceString(nameof(PInvokesShouldNotBeVisibleTitle)), + CreateLocalizableResourceString(nameof(PInvokesShouldNotBeVisibleMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(PInvokesShouldNotBeVisibleDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); + + private static readonly LocalizableString s_localizableMessageAndTitleCA2101 = CreateLocalizableResourceString(nameof(SpecifyMarshalingForPInvokeStringArgumentsTitle)); + + internal static readonly DiagnosticDescriptor RuleCA2101 = DiagnosticDescriptorHelper.Create( + RuleCA2101Id, + s_localizableMessageAndTitleCA2101, + s_localizableMessageAndTitleCA2101, + DiagnosticCategory.Globalization, + RuleLevel.BuildWarningCandidate, + description: CreateLocalizableResourceString(nameof(SpecifyMarshalingForPInvokeStringArgumentsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleCA1401, RuleCA2101); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs index f1beaa4913..399355920d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs @@ -20,6 +20,8 @@ namespace Microsoft.NetCore.Analyzers.InteropServices { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1416: Analyzer that informs developers when they use platform-specific APIs from call sites where the API might not be available /// @@ -34,15 +36,8 @@ public sealed partial class PlatformCompatibilityAnalyzer : DiagnosticAnalyzer internal const string RuleId = "CA1416"; private static readonly ImmutableArray s_osPlatformAttributes = ImmutableArray.Create(SupportedOSPlatformAttribute, UnsupportedOSPlatformAttribute); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableOnlySupportedCsAllPlatform = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityOnlySupportedCsAllPlatformMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableOnlySupporteCsReachable = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityOnlySupportedCsReachableMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableOnlySupporteCsUnreachable = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityOnlySupportedCsUnreachableMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizablSupporteCsAllPlatform = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilitySupportedCsAllPlatformMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizablSupporteCsReachable = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilitySupportedCsReachableMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableUnsupportedCsAllPlatform = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityUnsupportedCsAllPlatformMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableUnsupportedCsReachable = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityUnsupportedCsReachableMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(PlatformCompatibilityTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(PlatformCompatibilityDescription)); // We are adding the new attributes into older versions of .Net 5.0, so there could be multiple referenced assemblies each with their own // version of internal attribute type which will cause ambiguity, to avoid that we are comparing the attributes by their name @@ -55,68 +50,75 @@ public sealed partial class PlatformCompatibilityAnalyzer : DiagnosticAnalyzer private const string OptionalSuffix = "VersionAtLeast"; private const string Net = "net"; - internal static DiagnosticDescriptor OnlySupportedCsReachable = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableOnlySupporteCsReachable, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); - - internal static DiagnosticDescriptor OnlySupportedCsUnreachable = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableOnlySupporteCsUnreachable, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); - - internal static DiagnosticDescriptor OnlySupportedCsAllPlatforms = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableOnlySupportedCsAllPlatform, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); - - internal static DiagnosticDescriptor SupportedCsAllPlatforms = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizablSupporteCsAllPlatform, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); - - internal static DiagnosticDescriptor SupportedCsReachable = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizablSupporteCsReachable, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); - - internal static DiagnosticDescriptor UnsupportedCsAllPlatforms = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableUnsupportedCsAllPlatform, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); - - internal static DiagnosticDescriptor UnsupportedCsReachable = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableUnsupportedCsReachable, - DiagnosticCategory.Interoperability, - RuleLevel.BuildWarning, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor OnlySupportedCsReachable = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PlatformCompatibilityOnlySupportedCsReachableMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor OnlySupportedCsUnreachable = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PlatformCompatibilityOnlySupportedCsUnreachableMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor OnlySupportedCsAllPlatforms = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PlatformCompatibilityOnlySupportedCsAllPlatformMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor SupportedCsAllPlatforms = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PlatformCompatibilitySupportedCsAllPlatformMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor SupportedCsReachable = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PlatformCompatibilitySupportedCsReachableMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor UnsupportedCsAllPlatforms = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PlatformCompatibilityUnsupportedCsAllPlatformMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor UnsupportedCsReachable = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(PlatformCompatibilityUnsupportedCsReachableMessage)), + DiagnosticCategory.Interoperability, + RuleLevel.BuildWarning, + description: s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(OnlySupportedCsReachable, OnlySupportedCsUnreachable, OnlySupportedCsAllPlatforms, SupportedCsAllPlatforms, SupportedCsReachable, UnsupportedCsAllPlatforms, UnsupportedCsReachable); @@ -598,7 +600,7 @@ static void ReportSupportedDiagnostic(IOperation operation, OperationBlockAnalys if (callsite == Callsite.Reachable && IsDenyList(callsiteAttributes)) { - callSitePlatforms.Add(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityAllPlatforms); + callSitePlatforms.Add(PlatformCompatibilityAllPlatforms); } var rule = supportedRule ? SwitchSupportedRule(callsite) : SwitchRule(callsite, true); @@ -629,12 +631,12 @@ static bool GetSupportedPlatforms(SmallDictionary attributes, { if (IsEmptyVersion(supportedVersion)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndBefore, + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndBefore, pName, pAttribute.UnsupportedFirst)); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityFromVersionToVersion, + platformNames.Add(GetFormattedString(PlatformCompatibilityFromVersionToVersion, pName, supportedVersion, pAttribute.UnsupportedFirst)); } } @@ -642,14 +644,14 @@ static bool GetSupportedPlatforms(SmallDictionary attributes, { if (csAttributes != null && HasSameVersionedPlatformSupport(csAttributes, pName, checkSupport: false)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityAllVersions, pName)); + platformNames.Add(GetFormattedString(PlatformCompatibilityAllVersions, pName)); continue; } platformNames.Add($"'{pName}'"); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, pName, supportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, supportedVersion)); } } else if (pAttribute.UnsupportedFirst != null) @@ -658,14 +660,14 @@ static bool GetSupportedPlatforms(SmallDictionary attributes, { if (csAttributes != null && HasSameVersionedPlatformSupport(csAttributes, pName, checkSupport: true)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityAllVersions, pName)); + platformNames.Add(GetFormattedString(PlatformCompatibilityAllVersions, pName)); continue; } platformNames.Add($"'{pName}'"); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, pAttribute.UnsupportedFirst)); } supportedRule = false; @@ -727,19 +729,19 @@ static bool GetPlatformNames(SmallDictionary attributes, Small unsupportedRule = true; if (IsEmptyVersion(pAttribute.UnsupportedFirst!)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndBefore, pName, supportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndBefore, pName, supportedVersion)); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityFromVersionToVersion, pName, unsupportedVersion, supportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityFromVersionToVersion, pName, unsupportedVersion, supportedVersion)); } continue; } - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, pName, supportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, supportedVersion)); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityFromVersionToVersion, + platformNames.Add(GetFormattedString(PlatformCompatibilityFromVersionToVersion, pName, supportedVersion, unsupportedVersion)); } } @@ -749,14 +751,14 @@ static bool GetPlatformNames(SmallDictionary attributes, Small { if (csAttributes != null && HasSameVersionedPlatformSupport(csAttributes, pName, checkSupport: true)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityAllVersions, pName)); + platformNames.Add(GetFormattedString(PlatformCompatibilityAllVersions, pName)); continue; } platformNames.Add($"'{pName}'"); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, pName, unsupportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, unsupportedVersion)); } } } @@ -769,7 +771,7 @@ static bool GetPlatformNames(SmallDictionary attributes, Small } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, pName, supportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, supportedVersion)); } } } @@ -794,15 +796,15 @@ static List GetCallsitePlatforms(SmallDictionary attri { if (IsEmptyVersion(supportedVersion)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndBefore, pName, csAttribute.UnsupportedFirst)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndBefore, pName, csAttribute.UnsupportedFirst)); } else if (supportedVersion > csAttribute.UnsupportedFirst) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, pName, supportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, supportedVersion)); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityFromVersionToVersion, + platformNames.Add(GetFormattedString(PlatformCompatibilityFromVersionToVersion, pName, supportedVersion, csAttribute.UnsupportedFirst)); } } @@ -810,7 +812,7 @@ static List GetCallsitePlatforms(SmallDictionary attri { if (HasSameVersionedPlatformSupport(attributes, pName, supported)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityAllVersions, pName)); + platformNames.Add(GetFormattedString(PlatformCompatibilityAllVersions, pName)); continue; } platformNames.Add($"'{pName}'"); @@ -820,12 +822,12 @@ static List GetCallsitePlatforms(SmallDictionary attri var unsupportedVersion = csAttribute.UnsupportedSecond ?? csAttribute.UnsupportedFirst; if (unsupportedVersion != null && unsupportedVersion > supportedVersion) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityFromVersionToVersion, + platformNames.Add(GetFormattedString(PlatformCompatibilityFromVersionToVersion, pName, supportedVersion, unsupportedVersion)); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, pName, supportedVersion)); + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, supportedVersion)); } } } @@ -840,7 +842,7 @@ static List GetCallsitePlatforms(SmallDictionary attri { if (HasSameVersionedPlatformSupport(attributes, pName, supported)) { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityAllVersions, pName)); + platformNames.Add(GetFormattedString(PlatformCompatibilityAllVersions, pName)); continue; } platformNames.Add($"'{pName}'"); @@ -851,12 +853,12 @@ static List GetCallsitePlatforms(SmallDictionary attri (calledUnsupported == null || calledUnsupported < unsupportedVersion)) { callsite = Callsite.Reachable; - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndBefore, + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndBefore, pName, unsupportedVersion)); } else { - platformNames.Add(GetFormattedString(MicrosoftNetCoreAnalyzersResources.PlatformCompatibilityVersionAndLater, + platformNames.Add(GetFormattedString(PlatformCompatibilityVersionAndLater, pName, unsupportedVersion)); } } @@ -869,7 +871,7 @@ static List GetCallsitePlatforms(SmallDictionary attri static string GetFormattedString(string resource, params object[] args) => string.Format(CultureInfo.InvariantCulture, resource, args); - static string JoinNames(List platformNames) => string.Join(MicrosoftNetCoreAnalyzersResources.CommaSeparator, platformNames); + static string JoinNames(List platformNames) => string.Join(CommaSeparator, platformNames); static SymbolDisplayFormat GetLanguageSpecificFormat(IOperation operation) => operation.Language == LanguageNames.CSharp ? SymbolDisplayFormat.CSharpShortErrorMessageFormat : SymbolDisplayFormat.VisualBasicShortErrorMessageFormat; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs index cac47e1214..9af78f27b2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs @@ -13,20 +13,16 @@ public abstract class UseManagedEquivalentsOfWin32ApiAnalyzer : DiagnosticAnalyz { internal const string RuleId = "CA2205"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseManagedEquivalentsOfWin32ApiTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseManagedEquivalentsOfWin32ApiMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseManagedEquivalentsOfWin32ApiDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UseManagedEquivalentsOfWin32ApiTitle)), + CreateLocalizableResourceString(nameof(UseManagedEquivalentsOfWin32ApiMessage)), + DiagnosticCategory.Usage, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(UseManagedEquivalentsOfWin32ApiDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/MicrosoftNetCoreAnalyzersResources.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/MicrosoftNetCoreAnalyzersResources.cs new file mode 100644 index 0000000000..c18e1586f4 --- /dev/null +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/MicrosoftNetCoreAnalyzersResources.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. + +using System; +using Microsoft.CodeAnalysis; + +namespace Microsoft.NetCore.Analyzers +{ + internal partial class MicrosoftNetCoreAnalyzersResources + { + private static readonly Type s_resourcesType = typeof(MicrosoftNetCoreAnalyzersResources); + + 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); + } +} diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseAsSpanInsteadOfRangeIndexer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseAsSpanInsteadOfRangeIndexer.cs index a1cda36500..b64578ca2f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseAsSpanInsteadOfRangeIndexer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseAsSpanInsteadOfRangeIndexer.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Performance { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1831, CA1832, CA1833: Use AsSpan or AsMemory instead of Range-based indexers when appropriate. /// @@ -23,11 +25,8 @@ public sealed class UseAsSpanInsteadOfRangeIndexerAnalyzer : DiagnosticAnalyzer internal const string ArrayReadWriteRuleId = "CA1833"; internal const string TargetMethodName = nameof(TargetMethodName); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseAsSpanInsteadOfRangeIndexerTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseAsSpanInsteadOfRangeIndexerMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableStringDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseAsSpanInsteadOfStringRangeIndexerDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableArrayReadDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseAsSpanReadOnlyInsteadOfArrayRangeIndexerDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableArrayWriteDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseAsSpanInsteadOfArrayRangeIndexerDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(UseAsSpanInsteadOfRangeIndexerTitle)); + private static readonly LocalizableString s_localizableMessage = CreateLocalizableResourceString(nameof(UseAsSpanInsteadOfRangeIndexerMessage)); internal static readonly DiagnosticDescriptor StringRule = DiagnosticDescriptorHelper.Create( StringRuleId, @@ -35,7 +34,7 @@ public sealed class UseAsSpanInsteadOfRangeIndexerAnalyzer : DiagnosticAnalyzer s_localizableMessage, DiagnosticCategory.Performance, RuleLevel.BuildWarning, - description: s_localizableStringDescription, + description: CreateLocalizableResourceString(nameof(UseAsSpanInsteadOfStringRangeIndexerDescription)), isPortedFxCopRule: false, isDataflowRule: false); @@ -45,7 +44,7 @@ public sealed class UseAsSpanInsteadOfRangeIndexerAnalyzer : DiagnosticAnalyzer s_localizableMessage, DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - description: s_localizableArrayReadDescription, + description: CreateLocalizableResourceString(nameof(UseAsSpanReadOnlyInsteadOfArrayRangeIndexerDescription)), isPortedFxCopRule: false, isDataflowRule: false); @@ -55,7 +54,7 @@ public sealed class UseAsSpanInsteadOfRangeIndexerAnalyzer : DiagnosticAnalyzer s_localizableMessage, DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - description: s_localizableArrayWriteDescription, + description: CreateLocalizableResourceString(nameof(UseAsSpanInsteadOfArrayRangeIndexerDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs index a1df69a870..9f525083ac 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs @@ -13,6 +13,8 @@ namespace Microsoft.NetCore.Analyzers.Performance { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1827: Do not use Count()/LongCount() when Any() can be used. /// CA1828: Do not use CountAsync()/LongCountAsync() when AnyAsync() can be used. @@ -46,63 +48,43 @@ public sealed class UseCountProperlyAnalyzer : DiagnosticAnalyzer internal const string PropertyNameKey = nameof(PropertyNameKey); - // CA1827 - private static readonly LocalizableString s_localizableTitle_CA1827 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCountWhenAnyCanBeUsedTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage_CA1827 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCountWhenAnyCanBeUsedMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription_CA1827 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCountWhenAnyCanBeUsedDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - // CA1828 - private static readonly LocalizableString s_localizableTitle_CA1828 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCountAsyncWhenAnyAsyncCanBeUsedTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage_CA1828 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCountAsyncWhenAnyAsyncCanBeUsedMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription_CA1828 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCountAsyncWhenAnyAsyncCanBeUsedDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - // CA1829 - private static readonly LocalizableString s_localizableTitle_CA1829 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UsePropertyInsteadOfCountMethodWhenAvailableTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage_CA1829 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UsePropertyInsteadOfCountMethodWhenAvailableMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription_CA1829 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UsePropertyInsteadOfCountMethodWhenAvailableDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - // CA1836 - private static readonly LocalizableString s_localizableTitle_CA1836 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferIsEmptyOverCountTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage_CA1836 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferIsEmptyOverCountMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription_CA1836 = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferIsEmptyOverCountDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static readonly DiagnosticDescriptor s_rule_CA1827 = DiagnosticDescriptorHelper.Create( CA1827, - s_localizableTitle_CA1827, - s_localizableMessage_CA1827, + CreateLocalizableResourceString(nameof(DoNotUseCountWhenAnyCanBeUsedTitle)), + CreateLocalizableResourceString(nameof(DoNotUseCountWhenAnyCanBeUsedMessage)), DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - description: s_localizableDescription_CA1827, + description: CreateLocalizableResourceString(nameof(DoNotUseCountWhenAnyCanBeUsedDescription)), isPortedFxCopRule: false, isDataflowRule: false); internal static readonly DiagnosticDescriptor s_rule_CA1828 = DiagnosticDescriptorHelper.Create( CA1828, - s_localizableTitle_CA1828, - s_localizableMessage_CA1828, + CreateLocalizableResourceString(nameof(DoNotUseCountAsyncWhenAnyAsyncCanBeUsedTitle)), + CreateLocalizableResourceString(nameof(DoNotUseCountAsyncWhenAnyAsyncCanBeUsedMessage)), DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - description: s_localizableDescription_CA1828, + description: CreateLocalizableResourceString(nameof(DoNotUseCountAsyncWhenAnyAsyncCanBeUsedDescription)), isPortedFxCopRule: false, isDataflowRule: false); internal static readonly DiagnosticDescriptor s_rule_CA1829 = DiagnosticDescriptorHelper.Create( CA1829, - s_localizableTitle_CA1829, - s_localizableMessage_CA1829, + CreateLocalizableResourceString(nameof(UsePropertyInsteadOfCountMethodWhenAvailableTitle)), + CreateLocalizableResourceString(nameof(UsePropertyInsteadOfCountMethodWhenAvailableMessage)), DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - description: s_localizableDescription_CA1829, + description: CreateLocalizableResourceString(nameof(UsePropertyInsteadOfCountMethodWhenAvailableDescription)), isPortedFxCopRule: false, isDataflowRule: false); - internal static DiagnosticDescriptor s_rule_CA1836 = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor s_rule_CA1836 = DiagnosticDescriptorHelper.Create( CA1836, - s_localizableTitle_CA1836, - s_localizableMessage_CA1836, + CreateLocalizableResourceString(nameof(PreferIsEmptyOverCountTitle)), + CreateLocalizableResourceString(nameof(PreferIsEmptyOverCountMessage)), DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - description: s_localizableDescription_CA1836, + description: CreateLocalizableResourceString(nameof(PreferIsEmptyOverCountDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs index 83692b9382..837e6fc79c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Publish { + using static MicrosoftNetCoreAnalyzersResources; + /// /// IL3000, IL3001: Do not use Assembly file path in single-file publish /// @@ -20,24 +22,22 @@ public sealed class AvoidAssemblyLocationInSingleFile : DiagnosticAnalyzer public const string IL3000 = nameof(IL3000); public const string IL3001 = nameof(IL3001); - internal static DiagnosticDescriptor LocationRule = DiagnosticDescriptorHelper.Create( + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(AvoidAssemblyLocationInSingleFileTitle)); + + internal static readonly DiagnosticDescriptor LocationRule = DiagnosticDescriptorHelper.Create( IL3000, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidAssemblyLocationInSingleFileTitle), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidAssemblyLocationInSingleFileMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidAssemblyLocationInSingleFileMessage)), DiagnosticCategory.Publish, RuleLevel.BuildWarning, description: null, isPortedFxCopRule: false, isDataflowRule: false); - internal static DiagnosticDescriptor GetFilesRule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor GetFilesRule = DiagnosticDescriptorHelper.Create( IL3001, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidAssemblyLocationInSingleFileTitle), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidAssemblyGetFilesInSingleFileMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + s_localizableTitle, + CreateLocalizableResourceString(nameof(AvoidAssemblyGetFilesInSingleFileMessage)), DiagnosticCategory.Publish, RuleLevel.BuildWarning, description: null, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs index 8219d3ffae..18a3859ccd 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Resources { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1824: Mark assemblies with NeutralResourcesLanguageAttribute /// @@ -23,20 +25,16 @@ public abstract class MarkAssembliesWithNeutralResourcesLanguageAnalyzer : Diagn protected const string StronglyTypedResourceBuilder = "StronglyTypedResourceBuilder"; private const string Designer = ".Designer."; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkAssembliesWithNeutralResourcesLanguageTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkAssembliesWithNeutralResourcesLanguageMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkAssembliesWithNeutralResourcesLanguageDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(MarkAssembliesWithNeutralResourcesLanguageTitle)), + CreateLocalizableResourceString(nameof(MarkAssembliesWithNeutralResourcesLanguageMessage)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(MarkAssembliesWithNeutralResourcesLanguageDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isReportedAtCompilationEnd: true); protected abstract void RegisterAttributeAnalyzer(CompilationStartAnalysisContext context, Action onResourceFound, INamedTypeSymbol generatedCode); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs index 3b84c09588..298afe4ae0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2243: Attribute string literals should parse correctly /// Unlike FxCop, this rule does not fire diagnostics for ill-formed versions @@ -22,28 +24,28 @@ public sealed class AttributeStringLiteralsShouldParseCorrectlyAnalyzer : Diagno { internal const string RuleId = "CA2243"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AttributeStringLiteralsShouldParseCorrectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AttributeStringLiteralsShouldParseCorrectlyMessageDefault), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageEmpty = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AttributeStringLiteralsShouldParseCorrectlyMessageEmpty), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AttributeStringLiteralsShouldParseCorrectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Usage, - RuleLevel.Disabled, // Heuristic based rule. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor EmptyRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageEmpty, - DiagnosticCategory.Usage, - RuleLevel.Disabled, // Heuristic based rule. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(AttributeStringLiteralsShouldParseCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(AttributeStringLiteralsShouldParseCorrectlyDescription)); + + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AttributeStringLiteralsShouldParseCorrectlyMessageDefault)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, // Heuristic based rule. + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor EmptyRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(AttributeStringLiteralsShouldParseCorrectlyMessageEmpty)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, // Heuristic based rule. + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, EmptyRule); @@ -71,7 +73,7 @@ private static bool GuidValueValidator(string value) private static bool UrlValueValidator(string value) { - return Uri.IsWellFormedUriString(value, System.UriKind.RelativeOrAbsolute); + return Uri.IsWellFormedUriString(value, UriKind.RelativeOrAbsolute); } public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs index c9b3299e68..d2bd6ff79c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1813: Seal attribute types for improved performance. Sealing attribute types speeds up performance during reflection on custom attributes. /// @@ -17,18 +19,16 @@ namespace Microsoft.NetCore.Analyzers.Runtime public sealed class AvoidUnsealedAttributesAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1813"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidUnsealedAttributesTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidUnsealedAttributesMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidUnsealedAttributesDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidUnsealedAttributesTitle)), + CreateLocalizableResourceString(nameof(AvoidUnsealedAttributesMessage)), + DiagnosticCategory.Performance, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(AvoidUnsealedAttributesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs index 4b88dda9e7..3a8f22a829 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// Base type for an analyzer that looks for empty array allocations and recommends their replacement. public abstract class AvoidZeroLengthArrayAllocationsAnalyzer : DiagnosticAnalyzer { @@ -27,14 +29,11 @@ public abstract class AvoidZeroLengthArrayAllocationsAnalyzer : DiagnosticAnalyz genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters, miscellaneousOptions: SymbolDisplayMiscellaneousOptions.UseSpecialTypes); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidZeroLengthArrayAllocationsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.AvoidZeroLengthArrayAllocationsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - /// The diagnostic descriptor used when Array.Empty should be used instead of a new array allocation. internal static readonly DiagnosticDescriptor UseArrayEmptyDescriptor = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(AvoidZeroLengthArrayAllocationsTitle)), + CreateLocalizableResourceString(nameof(AvoidZeroLengthArrayAllocationsMessage)), DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, description: null, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs index 12f4a49f36..718ecdf5c1 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1816: Dispose methods should call SuppressFinalize /// @@ -18,46 +20,48 @@ public sealed class CallGCSuppressFinalizeCorrectlyAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1816"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.CallGCSuppressFinalizeCorrectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageNotCalledWithFinalizer = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.CallGCSuppressFinalizeCorrectlyMessageNotCalledWithFinalizer), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNotCalled = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.CallGCSuppressFinalizeCorrectlyMessageNotCalled), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNotPassedThis = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.CallGCSuppressFinalizeCorrectlyMessageNotPassedThis), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageOutsideDispose = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.CallGCSuppressFinalizeCorrectlyMessageOutsideDispose), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.CallGCSuppressFinalizeCorrectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor NotCalledWithFinalizerRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNotCalledWithFinalizer, - DiagnosticCategory.Usage, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor NotCalledRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNotCalled, - DiagnosticCategory.Usage, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor NotPassedThisRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNotPassedThis, - DiagnosticCategory.Usage, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor OutsideDisposeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageOutsideDispose, - DiagnosticCategory.Usage, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(CallGCSuppressFinalizeCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(CallGCSuppressFinalizeCorrectlyDescription)); + + internal static readonly DiagnosticDescriptor NotCalledWithFinalizerRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(CallGCSuppressFinalizeCorrectlyMessageNotCalledWithFinalizer)), + DiagnosticCategory.Usage, + RuleLevel.BuildWarningCandidate, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor NotCalledRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(CallGCSuppressFinalizeCorrectlyMessageNotCalled)), + DiagnosticCategory.Usage, + RuleLevel.BuildWarningCandidate, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor NotPassedThisRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(CallGCSuppressFinalizeCorrectlyMessageNotPassedThis)), + DiagnosticCategory.Usage, + RuleLevel.BuildWarningCandidate, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor OutsideDisposeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(CallGCSuppressFinalizeCorrectlyMessageOutsideDispose)), + DiagnosticCategory.Usage, + RuleLevel.BuildWarningCandidate, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(NotCalledWithFinalizerRule, NotCalledRule, NotPassedThisRule, OutsideDisposeRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs index 5530491e9d..d957cf0581 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs @@ -16,23 +16,22 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DisposableFieldsShouldBeDisposed : DiagnosticAnalyzer { internal const string RuleId = "CA2213"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposableFieldsShouldBeDisposedTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposableFieldsShouldBeDisposedMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposableFieldsShouldBeDisposedDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DisposableFieldsShouldBeDisposedTitle)), + CreateLocalizableResourceString(nameof(DisposableFieldsShouldBeDisposedMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DisposableFieldsShouldBeDisposedDescription)), + isPortedFxCopRule: true, + isDataflowRule: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs index 869984883b..47431fd591 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2216: Disposable types should declare finalizer /// @@ -19,19 +21,15 @@ public sealed class DisposableTypesShouldDeclareFinalizerAnalyzer : DiagnosticAn { internal const string RuleId = "CA2216"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposableTypesShouldDeclareFinalizerTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposableTypesShouldDeclareFinalizerMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposableTypesShouldDeclareFinalizerDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DisposableTypesShouldDeclareFinalizerTitle)), + CreateLocalizableResourceString(nameof(DisposableTypesShouldDeclareFinalizerMessage)), + DiagnosticCategory.Usage, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(DisposableTypesShouldDeclareFinalizerDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs index be13d8a65f..77b385e26c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2215: Dispose methods should call base class dispose /// @@ -22,18 +24,15 @@ public sealed class DisposeMethodsShouldCallBaseClassDispose : DiagnosticAnalyze { internal const string RuleId = "CA2215"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeMethodsShouldCallBaseClassDisposeTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeMethodsShouldCallBaseClassDisposeMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeMethodsShouldCallBaseClassDisposeDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DisposeMethodsShouldCallBaseClassDisposeTitle)), + CreateLocalizableResourceString(nameof(DisposeMethodsShouldCallBaseClassDisposeMessage)), + DiagnosticCategory.Usage, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DisposeMethodsShouldCallBaseClassDisposeDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs index 30676889e9..3d4917fed1 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs @@ -16,53 +16,55 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DisposeObjectsBeforeLosingScope : DiagnosticAnalyzer { internal const string RuleId = "CA2000"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeObjectsBeforeLosingScopeTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableNotDisposedMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeObjectsBeforeLosingScopeNotDisposedMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMayBeDisposedMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeObjectsBeforeLosingScopeMayBeDisposedMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableNotDisposedOnExceptionPathsMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeObjectsBeforeLosingScopeNotDisposedOnExceptionPathsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMayBeDisposedOnExceptionPathsMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeObjectsBeforeLosingScopeMayBeDisposedOnExceptionPathsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DisposeObjectsBeforeLosingScopeDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor NotDisposedRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableNotDisposedMessage, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); - - internal static DiagnosticDescriptor MayBeDisposedRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMayBeDisposedMessage, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); - - internal static DiagnosticDescriptor NotDisposedOnExceptionPathsRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableNotDisposedOnExceptionPathsMessage, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); - - internal static DiagnosticDescriptor MayBeDisposedOnExceptionPathsRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMayBeDisposedOnExceptionPathsMessage, - DiagnosticCategory.Reliability, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DisposeObjectsBeforeLosingScopeTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(DisposeObjectsBeforeLosingScopeDescription)); + + internal static readonly DiagnosticDescriptor NotDisposedRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DisposeObjectsBeforeLosingScopeNotDisposedMessage)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: true); + + internal static readonly DiagnosticDescriptor MayBeDisposedRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DisposeObjectsBeforeLosingScopeMayBeDisposedMessage)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: true); + + internal static readonly DiagnosticDescriptor NotDisposedOnExceptionPathsRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DisposeObjectsBeforeLosingScopeNotDisposedOnExceptionPathsMessage)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: true); + + internal static readonly DiagnosticDescriptor MayBeDisposedOnExceptionPathsRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DisposeObjectsBeforeLosingScopeMayBeDisposedOnExceptionPathsMessage)), + DiagnosticCategory.Reliability, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(NotDisposedRule, MayBeDisposedRule, NotDisposedOnExceptionPathsRule, MayBeDisposedOnExceptionPathsRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs index 9794c226d0..437c4495a6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2015: Do not define finalizers for types derived from MemoryManager<T>. /// @@ -17,16 +19,13 @@ public sealed class DoNotDefineFinalizersForTypesDerivedFromMemoryManager : Diag { internal const string RuleId = "CA2015"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotDefineFinalizersForTypesDerivedFromMemoryManagerTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotDefineFinalizersForTypesDerivedFromMemoryManagerMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotDefineFinalizersForTypesDerivedFromMemoryManagerDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotDefineFinalizersForTypesDerivedFromMemoryManagerTitle)), + CreateLocalizableResourceString(nameof(DoNotDefineFinalizersForTypesDerivedFromMemoryManagerMessage)), DiagnosticCategory.Reliability, RuleLevel.BuildWarning, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotDefineFinalizersForTypesDerivedFromMemoryManagerDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs index ae42fd7eb7..0279aa829b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs @@ -23,7 +23,6 @@ public sealed override Task RegisterCodeFixesAsync(CodeFixContext context) { // Fixer not yet implemented. return Task.CompletedTask; - } } } \ No newline at end of file diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs index 75b8b8ba31..866085d6dc 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2002: Do not lock on objects with weak identities /// @@ -24,18 +26,16 @@ namespace Microsoft.NetCore.Analyzers.Runtime public sealed class DoNotLockOnObjectsWithWeakIdentityAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2002"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotLockOnObjectsWithWeakIdentityTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotLockOnObjectsWithWeakIdentityMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotLockOnObjectsWithWeakIdentityDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Reliability, - RuleLevel.CandidateForRemoval, // .NET core only has one appdomain - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotLockOnObjectsWithWeakIdentityTitle)), + CreateLocalizableResourceString(nameof(DoNotLockOnObjectsWithWeakIdentityMessage)), + DiagnosticCategory.Reliability, + RuleLevel.CandidateForRemoval, // .NET core only has one appdomain + description: CreateLocalizableResourceString(nameof(DoNotLockOnObjectsWithWeakIdentityDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs index 23cd61f1f7..912b08034e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs @@ -19,6 +19,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1303: Do not pass literals as localized parameters /// A method passes a string literal as a parameter to a constructor or method in the .NET Framework class library and that string should be localizable. @@ -32,18 +34,15 @@ public sealed class DoNotPassLiteralsAsLocalizedParameters : AbstractGlobalizati { internal const string RuleId = "CA1303"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotPassLiteralsAsLocalizedParametersTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotPassLiteralsAsLocalizedParametersMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotPassLiteralsAsLocalizedParametersDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Globalization, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotPassLiteralsAsLocalizedParametersTitle)), + CreateLocalizableResourceString(nameof(DoNotPassLiteralsAsLocalizedParametersMessage)), + DiagnosticCategory.Globalization, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotPassLiteralsAsLocalizedParametersDescription)), + isPortedFxCopRule: true, + isDataflowRule: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs index 3f120fb908..513ca828f2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2201: Do not raise reserved exception types /// @@ -49,27 +51,28 @@ public sealed class DoNotRaiseReservedExceptionTypesAnalyzer : DiagnosticAnalyze "System.Runtime.InteropServices.SEHException", "System.AccessViolationException"); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotRaiseReservedExceptionTypesTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTooGeneric = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotRaiseReservedExceptionTypesMessageTooGeneric), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageReserved = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotRaiseReservedExceptionTypesMessageReserved), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotRaiseReservedExceptionTypesDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor TooGenericRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageTooGeneric, - DiagnosticCategory.Usage, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor ReservedRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageReserved, - DiagnosticCategory.Usage, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DoNotRaiseReservedExceptionTypesTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(DoNotRaiseReservedExceptionTypesDescription)); + + internal static readonly DiagnosticDescriptor TooGenericRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotRaiseReservedExceptionTypesMessageTooGeneric)), + DiagnosticCategory.Usage, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor ReservedRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(DoNotRaiseReservedExceptionTypesMessageReserved)), + DiagnosticCategory.Usage, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); private static readonly SymbolDisplayFormat s_symbolDisplayFormat = new(typeQualificationStyle: SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs index 75e7c9f9f5..6bc0fd4521 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1826: Do not use Enumerable methods on indexable collections. Instead use the collection directly /// @@ -26,19 +28,15 @@ public sealed class DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseThe internal const string MethodPropertyKey = "method"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyTitle)), + CreateLocalizableResourceString(nameof(DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyMessage)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + description: CreateLocalizableResourceString(nameof(DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs index 7c67dadb22..e1e92b452e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2013: Do not use ReferenceEquals with value types. /// @@ -17,23 +19,23 @@ public sealed class DoNotUseReferenceEqualsWithValueTypesAnalyzer : DiagnosticAn { internal const string RuleId = "CA2013"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseReferenceEqualsWithValueTypesTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableComparerMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseReferenceEqualsWithValueTypesComparerMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMethodMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseReferenceEqualsWithValueTypesMethodMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseReferenceEqualsWithValueTypesDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DoNotUseReferenceEqualsWithValueTypesTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(DoNotUseReferenceEqualsWithValueTypesDescription)); - internal static readonly DiagnosticDescriptor ComparerRule = DiagnosticDescriptorHelper.Create(RuleId, + internal static readonly DiagnosticDescriptor ComparerRule = DiagnosticDescriptorHelper.Create( + RuleId, s_localizableTitle, - s_localizableComparerMessage, + CreateLocalizableResourceString(nameof(DoNotUseReferenceEqualsWithValueTypesComparerMessage)), DiagnosticCategory.Reliability, RuleLevel.BuildWarning, description: s_localizableDescription, isPortedFxCopRule: false, isDataflowRule: false); - internal static readonly DiagnosticDescriptor MethodRule = DiagnosticDescriptorHelper.Create(RuleId, + internal static readonly DiagnosticDescriptor MethodRule = DiagnosticDescriptorHelper.Create( + RuleId, s_localizableTitle, - s_localizableMethodMessage, + CreateLocalizableResourceString(nameof(DoNotUseReferenceEqualsWithValueTypesMethodMessage)), DiagnosticCategory.Reliability, RuleLevel.BuildWarning, description: s_localizableDescription, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs index 47a5e6e879..b9ec38f03a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs @@ -7,17 +7,19 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + public abstract class DoNotUseStackallocInLoopsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2014"; internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( RuleId, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseStackallocInLoopsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseStackallocInLoopsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(DoNotUseStackallocInLoopsTitle)), + CreateLocalizableResourceString(nameof(DoNotUseStackallocInLoopsMessage)), DiagnosticCategory.Reliability, RuleLevel.BuildWarning, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseStackallocInLoopsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(DoNotUseStackallocInLoopsDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs index 68399b16d9..e99662c36c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs @@ -13,20 +13,16 @@ public abstract class DoNotUseTimersThatPreventPowerStateChangesAnalyzer : Diagn { internal const string RuleId = "CA1601"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseTimersThatPreventPowerStateChangesTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseTimersThatPreventPowerStateChangesMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseTimersThatPreventPowerStateChangesDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Mobility, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotUseTimersThatPreventPowerStateChangesTitle)), + CreateLocalizableResourceString(nameof(DoNotUseTimersThatPreventPowerStateChangesMessage)), + DiagnosticCategory.Mobility, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotUseTimersThatPreventPowerStateChangesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs index e5507e2348..de8014432e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2016: Forward CancellationToken to invocations. /// @@ -39,19 +41,13 @@ public abstract class ForwardCancellationTokenToInvocationsAnalyzer : Diagnostic // Check if any of the other arguments is implicit or a named argument protected abstract bool ArgumentsImplicitOrNamed(INamedTypeSymbol cancellationTokenType, ImmutableArray arguments); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ForwardCancellationTokenToInvocationsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ForwardCancellationTokenToInvocationsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ForwardCancellationTokenToInvocationsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor ForwardCancellationTokenToInvocationsRule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor ForwardCancellationTokenToInvocationsRule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(ForwardCancellationTokenToInvocationsTitle)), + CreateLocalizableResourceString(nameof(ForwardCancellationTokenToInvocationsMessage)), DiagnosticCategory.Reliability, RuleLevel.IdeSuggestion, - s_localizableDescription, + CreateLocalizableResourceString(nameof(ForwardCancellationTokenToInvocationsDescription)), isPortedFxCopRule: false, isDataflowRule: false ); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs index 4bfb88cd1c..44563ff1ce 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs @@ -13,40 +13,41 @@ public abstract class ImplementISerializableCorrectlyAnalyzer : DiagnosticAnalyz { internal const string RuleId = "CA2240"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementISerializableCorrectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + /*private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(ImplementISerializableCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(ImplementISerializableCorrectlyDescription)); - private static readonly LocalizableString s_localizableMessageDefault = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementISerializableCorrectlyMessageDefault), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMakeVisible = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementISerializableCorrectlyMessageMakeVisible), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMakeOverridable = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementISerializableCorrectlyMessageMakeOverridable), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementISerializableCorrectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + internal static readonly DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementISerializableCorrectlyMessageDefault)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor DefaultRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageDefault, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MakeVisibleRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMakeVisible, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor MakeOverridableRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageMakeOverridable, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + internal static readonly DiagnosticDescriptor MakeVisibleRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementISerializableCorrectlyMessageMakeVisible)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor MakeOverridableRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementISerializableCorrectlyMessageMakeOverridable)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //DiagnosticHelpers.EnabledByDefaultIfNotBuildingVSIX ? ImmutableArray.Create(DefaultRule, MakeVisibleRule, MakeOverridableRule) : ImmutableArray.Empty; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs index 4807b19ea1..75892a3196 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs @@ -13,60 +13,63 @@ public abstract class ImplementSerializationMethodsCorrectlyAnalyzer : Diagnosti { internal const string RuleId = "CA2238"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationMethodsCorrectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + /*private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(ImplementSerializationMethodsCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(ImplementSerializationMethodsCorrectlyDescription)); - private static readonly LocalizableString s_localizableMessageVisibility = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationMethodsCorrectlyMessageVisibility), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageReturnType = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationMethodsCorrectlyMessageReturnType), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageParameters = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationMethodsCorrectlyMessageParameters), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageGeneric = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationMethodsCorrectlyMessageGeneric), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageStatic = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationMethodsCorrectlyMessageStatic), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationMethodsCorrectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + internal static readonly DiagnosticDescriptor VisibilityRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementSerializationMethodsCorrectlyMessageVisibility)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor VisibilityRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageVisibility, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor ReturnTypeRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageReturnType, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor ParametersRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageParameters, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor GenericRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageGeneric, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor StaticRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageStatic, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + internal static readonly DiagnosticDescriptor ReturnTypeRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementSerializationMethodsCorrectlyMessageReturnType)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor ParametersRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementSerializationMethodsCorrectlyMessageParameters)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor GenericRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementSerializationMethodsCorrectlyMessageGeneric)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor StaticRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ImplementSerializationMethodsCorrectlyMessageStatic)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //DiagnosticHelpers.EnabledByDefaultIfNotBuildingVSIX ? ImmutableArray.Create(VisibilityRule, ReturnTypeRule, ParametersRule, GenericRule, StaticRule) : ImmutableArray.Empty; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs index 8588729fef..9aaf3ffc40 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1810: Initialize reference type static fields inline /// CA2207: Initialize value type static fields inline @@ -20,30 +22,27 @@ public sealed class InitializeStaticFieldsInlineAnalyzer : DiagnosticAnalyzer internal const string CA1810RuleId = "CA1810"; internal const string CA2207RuleId = "CA2207"; - private static readonly LocalizableString s_CA1810_LocalizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InitializeReferenceTypeStaticFieldsInlineTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_CA2207_LocalizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InitializeValueTypeStaticFieldsInlineTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InitializeStaticFieldsInlineMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_CA1810_LocalizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InitializeReferenceTypeStaticFieldsInlineDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_CA2207_LocalizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InitializeValueTypeStaticFieldsInlineDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor CA1810Rule = DiagnosticDescriptorHelper.Create(CA1810RuleId, - s_CA1810_LocalizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.Disabled, // May tie this to performance sensitive attribute. - description: s_CA1810_LocalizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor CA2207Rule = DiagnosticDescriptorHelper.Create(CA2207RuleId, - s_CA2207_LocalizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, // May tie this to performance sensitive attribute. - description: s_CA2207_LocalizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableMessage = CreateLocalizableResourceString(nameof(InitializeStaticFieldsInlineMessage)); + + internal static readonly DiagnosticDescriptor CA1810Rule = DiagnosticDescriptorHelper.Create( + CA1810RuleId, + CreateLocalizableResourceString(nameof(InitializeReferenceTypeStaticFieldsInlineTitle)), + s_localizableMessage, + DiagnosticCategory.Performance, + RuleLevel.Disabled, // May tie this to performance sensitive attribute. + description: CreateLocalizableResourceString(nameof(InitializeReferenceTypeStaticFieldsInlineDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor CA2207Rule = DiagnosticDescriptorHelper.Create( + CA2207RuleId, + CreateLocalizableResourceString(nameof(InitializeValueTypeStaticFieldsInlineTitle)), + s_localizableMessage, + DiagnosticCategory.Usage, + RuleLevel.Disabled, // May tie this to performance sensitive attribute. + description: CreateLocalizableResourceString(nameof(InitializeValueTypeStaticFieldsInlineDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(CA1810Rule, CA2207Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs index 34a636e21e..5e4e5bf14d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2208: Instantiate argument exceptions correctly /// @@ -19,39 +21,38 @@ public sealed class InstantiateArgumentExceptionsCorrectlyAnalyzer : DiagnosticA internal const string RuleId = "CA2208"; internal const string MessagePosition = nameof(MessagePosition); - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InstantiateArgumentExceptionsCorrectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageNoArguments = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InstantiateArgumentExceptionsCorrectlyMessageNoArguments), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageIncorrectMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InstantiateArgumentExceptionsCorrectlyMessageIncorrectMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageIncorrectParameterName = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InstantiateArgumentExceptionsCorrectlyMessageIncorrectParameterName), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.InstantiateArgumentExceptionsCorrectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor RuleNoArguments = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageNoArguments, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor RuleIncorrectMessage = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageIncorrectMessage, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor RuleIncorrectParameterName = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageIncorrectParameterName, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(InstantiateArgumentExceptionsCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(InstantiateArgumentExceptionsCorrectlyDescription)); + + internal static readonly DiagnosticDescriptor RuleNoArguments = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(InstantiateArgumentExceptionsCorrectlyMessageNoArguments)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RuleIncorrectMessage = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(InstantiateArgumentExceptionsCorrectlyMessageIncorrectMessage)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RuleIncorrectParameterName = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(InstantiateArgumentExceptionsCorrectlyMessageIncorrectParameterName)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleNoArguments, RuleIncorrectMessage, RuleIncorrectParameterName); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs index ff81d9f7f2..4f77d3c583 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1308: Normalize strings to uppercase /// @@ -24,19 +26,15 @@ public sealed class NormalizeStringsToUppercaseAnalyzer : AbstractGlobalizationD { internal const string RuleId = "CA1308"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.NormalizeStringsToUppercaseTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageToUpper = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.NormalizeStringsToUppercaseMessageToUpper), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.NormalizeStringsToUppercaseDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor ToUpperRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageToUpper, - DiagnosticCategory.Globalization, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor ToUpperRule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(NormalizeStringsToUppercaseTitle)), + CreateLocalizableResourceString(nameof(NormalizeStringsToUppercaseMessageToUpper)), + DiagnosticCategory.Globalization, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(NormalizeStringsToUppercaseDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ToUpperRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs index da5c66e506..ed590ab717 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs @@ -1,17 +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.Composition; using System.Collections.Immutable; +using System.Composition; +using System.Linq; using System.Threading; using System.Threading.Tasks; +using Analyzer.Utilities; +using Analyzer.Utilities.Extensions; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CodeFixes; using Microsoft.CodeAnalysis.CodeActions; -using Microsoft.CodeAnalysis.Operations; -using Analyzer.Utilities.Extensions; +using Microsoft.CodeAnalysis.CodeFixes; using Microsoft.CodeAnalysis.Editing; -using System.Linq; -using Analyzer.Utilities; +using Microsoft.CodeAnalysis.Operations; namespace Microsoft.NetCore.Analyzers.Runtime { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs index d063a52b4a..af9a12d928 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// Test for single character strings passed in to StringBuilder.Append /// @@ -17,18 +19,16 @@ namespace Microsoft.NetCore.Analyzers.Runtime public sealed class PreferConstCharOverConstUnitStringAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1834"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferConstCharOverConstUnitStringInStringBuilderTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferConstCharOverConstUnitStringInStringBuilderMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferConstCharOverConstUnitStringInStringBuilderDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(PreferConstCharOverConstUnitStringInStringBuilderTitle)), + CreateLocalizableResourceString(nameof(PreferConstCharOverConstUnitStringInStringBuilderMessage)), + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + CreateLocalizableResourceString(nameof(PreferConstCharOverConstUnitStringInStringBuilderDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs index c192901f7d..d939ab04c5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1835: Prefer Memory/ReadOnlyMemory overloads for Stream ReadAsync/WriteAsync methods. /// @@ -32,40 +34,29 @@ public sealed class PreferStreamAsyncMemoryOverloads : DiagnosticAnalyzer { internal const string RuleId = "CA1835"; - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.PreferStreamAsyncMemoryOverloadsMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.PreferStreamAsyncMemoryOverloadsTitle), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.PreferStreamAsyncMemoryOverloadsDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor PreferStreamReadAsyncMemoryOverloadsRule = DiagnosticDescriptorHelper.Create( - RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); - - internal static DiagnosticDescriptor PreferStreamWriteAsyncMemoryOverloadsRule = DiagnosticDescriptorHelper.Create( - RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.IdeSuggestion, - s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(PreferStreamAsyncMemoryOverloadsTitle)); + private static readonly LocalizableString s_localizableMessage = CreateLocalizableResourceString(nameof(PreferStreamAsyncMemoryOverloadsMessage)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(PreferStreamAsyncMemoryOverloadsDescription)); + + internal static readonly DiagnosticDescriptor PreferStreamReadAsyncMemoryOverloadsRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + s_localizableMessage, + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor PreferStreamWriteAsyncMemoryOverloadsRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + s_localizableMessage, + DiagnosticCategory.Performance, + RuleLevel.IdeSuggestion, + s_localizableDescription, + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(PreferStreamReadAsyncMemoryOverloadsRule, PreferStreamWriteAsyncMemoryOverloadsRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs index fa37dff004..e1958c05e7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// Prefer string.Contains over string.IndexOf when the result is used to check for the presence/absence of a substring /// @@ -17,18 +19,16 @@ namespace Microsoft.NetCore.Analyzers.Runtime public sealed class PreferStringContainsOverIndexOfAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2249"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferStringContainsOverIndexOfTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferStringContainsOverIndexOfMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferStringContainsOverIndexOfDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.IdeSuggestion, - s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(PreferStringContainsOverIndexOfTitle)), + CreateLocalizableResourceString(nameof(PreferStringContainsOverIndexOfMessage)), + DiagnosticCategory.Usage, + RuleLevel.IdeSuggestion, + CreateLocalizableResourceString(nameof(PreferStringContainsOverIndexOfDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs index bf9ef7fb04..8aefaae32e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs @@ -10,18 +10,21 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// CA1830: Prefer strongly-typed StringBuilder.Append overloads. [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class PreferTypedStringBuilderAppendOverloads : DiagnosticAnalyzer { internal const string RuleId = "CA1830"; - internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferTypedStringBuilderAppendOverloadsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferTypedStringBuilderAppendOverloadsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(PreferTypedStringBuilderAppendOverloadsTitle)), + CreateLocalizableResourceString(nameof(PreferTypedStringBuilderAppendOverloadsMessage)), DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.PreferTypedStringBuilderAppendOverloadsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(PreferTypedStringBuilderAppendOverloadsDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs index 446f6d6c1c..ad2a179089 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2241: Provide correct arguments to formatting methods /// @@ -20,19 +22,15 @@ public class ProvideCorrectArgumentsToFormattingMethodsAnalyzer : DiagnosticAnal { internal const string RuleId = "CA2241"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideCorrectArgumentsToFormattingMethodsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideCorrectArgumentsToFormattingMethodsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideCorrectArgumentsToFormattingMethodsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(ProvideCorrectArgumentsToFormattingMethodsTitle)), + CreateLocalizableResourceString(nameof(ProvideCorrectArgumentsToFormattingMethodsMessage)), + DiagnosticCategory.Usage, + RuleLevel.BuildWarningCandidate, + description: CreateLocalizableResourceString(nameof(ProvideCorrectArgumentsToFormattingMethodsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); @@ -57,7 +55,7 @@ public override void Initialize(AnalysisContext context) } IArgumentOperation formatStringArgument = invocation.Arguments[info.FormatStringIndex]; - if (!object.Equals(formatStringArgument?.Value?.Type, formatInfo.String) || + if (!Equals(formatStringArgument?.Value?.Type, formatInfo.String) || !(formatStringArgument?.Value?.ConstantValue.Value is string)) { // wrong argument @@ -95,7 +93,7 @@ public override void Initialize(AnalysisContext context) if (paramsArgument.Value is not IArrayCreationOperation arrayCreation || arrayCreation.GetElementType() is not ITypeSymbol elementType || - !object.Equals(elementType, formatInfo.Object) || + !Equals(elementType, formatInfo.Object) || arrayCreation.DimensionSizes.Length != 1) { // wrong format diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs index 59f3543bc2..b62750b606 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs @@ -13,30 +13,30 @@ public abstract class ProvideDeserializationMethodsForOptionalFieldsAnalyzer : D { internal const string RuleId = "CA2239"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideDeserializationMethodsForOptionalFieldsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageOnDeserialized = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideDeserializationMethodsForOptionalFieldsMessageOnDeserialized), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageOnDeserializing = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideDeserializationMethodsForOptionalFieldsMessageOnDeserializing), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideDeserializationMethodsForOptionalFieldsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor OnDeserializedRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageOnDeserialized, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false); - internal static DiagnosticDescriptor OnDeserializingRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageOnDeserializing, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(ProvideDeserializationMethodsForOptionalFieldsTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(ProvideDeserializationMethodsForOptionalFieldsDescription)); + + internal static readonly DiagnosticDescriptor OnDeserializedRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ProvideDeserializationMethodsForOptionalFieldsMessageOnDeserialized)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false); + + internal static readonly DiagnosticDescriptor OnDeserializingRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(ProvideDeserializationMethodsForOptionalFieldsMessageOnDeserializing)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(OnDeserializedRule, OnDeserializingRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs index 37883fc3d0..c468d3cfce 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs @@ -9,95 +9,72 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class SerializationRulesDiagnosticAnalyzer : DiagnosticAnalyzer { // Implement serialization constructors internal const string RuleCA2229Id = "CA2229"; - private static readonly LocalizableString s_localizableTitleCA2229 = - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationConstructorsTitle), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescriptionCA2229 = - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ImplementSerializationConstructorsDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor RuleCA2229Default = DiagnosticDescriptorHelper.Create(RuleCA2229Id, - s_localizableTitleCA2229, - MicrosoftNetCoreAnalyzersResources.ImplementSerializationConstructorsMessageCreateMagicConstructor, - DiagnosticCategory.Usage, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescriptionCA2229, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor RuleCA2229Sealed = DiagnosticDescriptorHelper.Create(RuleCA2229Id, - s_localizableTitleCA2229, - MicrosoftNetCoreAnalyzersResources.ImplementSerializationConstructorsMessageMakeSealedMagicConstructorPrivate, - DiagnosticCategory.Usage, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescriptionCA2229, - isPortedFxCopRule: true, - isDataflowRule: false); - - internal static DiagnosticDescriptor RuleCA2229Unsealed = DiagnosticDescriptorHelper.Create(RuleCA2229Id, - s_localizableTitleCA2229, - MicrosoftNetCoreAnalyzersResources.ImplementSerializationConstructorsMessageMakeUnsealedMagicConstructorFamily, - DiagnosticCategory.Usage, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescriptionCA2229, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitleCA2229 = CreateLocalizableResourceString(nameof(ImplementSerializationConstructorsTitle)); + private static readonly LocalizableString s_localizableDescriptionCA2229 = CreateLocalizableResourceString(nameof(ImplementSerializationConstructorsDescription)); + + internal static readonly DiagnosticDescriptor RuleCA2229Default = DiagnosticDescriptorHelper.Create( + RuleCA2229Id, + s_localizableTitleCA2229, + ImplementSerializationConstructorsMessageCreateMagicConstructor, + DiagnosticCategory.Usage, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescriptionCA2229, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RuleCA2229Sealed = DiagnosticDescriptorHelper.Create( + RuleCA2229Id, + s_localizableTitleCA2229, + ImplementSerializationConstructorsMessageMakeSealedMagicConstructorPrivate, + DiagnosticCategory.Usage, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescriptionCA2229, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor RuleCA2229Unsealed = DiagnosticDescriptorHelper.Create( + RuleCA2229Id, + s_localizableTitleCA2229, + ImplementSerializationConstructorsMessageMakeUnsealedMagicConstructorFamily, + DiagnosticCategory.Usage, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescriptionCA2229, + isPortedFxCopRule: true, + isDataflowRule: false); // Mark ISerializable types with SerializableAttribute internal const string RuleCA2237Id = "CA2237"; - private static readonly LocalizableString s_localizableTitleCA2237 = - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkISerializableTypesWithSerializableTitle), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageCA2237 = - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkISerializableTypesWithSerializableMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescriptionCA2237 = - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkISerializableTypesWithSerializableDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor RuleCA2237 = DiagnosticDescriptorHelper.Create(RuleCA2237Id, - s_localizableTitleCA2237, - s_localizableMessageCA2237, - DiagnosticCategory.Usage, - RuleLevel.CandidateForRemoval, // Cannot implement this for .NET Core: https://github.com/dotnet/roslyn-analyzers/issues/1775#issuecomment-518457308 - description: s_localizableDescriptionCA2237, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RuleCA2237 = DiagnosticDescriptorHelper.Create( + RuleCA2237Id, + CreateLocalizableResourceString(nameof(MarkISerializableTypesWithSerializableTitle)), + CreateLocalizableResourceString(nameof(MarkISerializableTypesWithSerializableMessage)), + DiagnosticCategory.Usage, + RuleLevel.CandidateForRemoval, // Cannot implement this for .NET Core: https://github.com/dotnet/roslyn-analyzers/issues/1775#issuecomment-518457308 + description: CreateLocalizableResourceString(nameof(MarkISerializableTypesWithSerializableDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); // Mark all non-serializable fields internal const string RuleCA2235Id = "CA2235"; - private static readonly LocalizableString s_localizableTitleCA2235 = - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkAllNonSerializableFieldsTitle), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageCA2235 = - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.MarkAllNonSerializableFieldsMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescriptionCA2235 = - new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.MarkAllNonSerializableFieldsDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor RuleCA2235 = DiagnosticDescriptorHelper.Create(RuleCA2235Id, - s_localizableTitleCA2235, - s_localizableMessageCA2235, - DiagnosticCategory.Usage, - RuleLevel.CandidateForRemoval, // Cannot implement this for .NET Core: https://github.com/dotnet/roslyn-analyzers/issues/1775#issuecomment-518457308 - description: s_localizableDescriptionCA2235, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RuleCA2235 = DiagnosticDescriptorHelper.Create( + RuleCA2235Id, + CreateLocalizableResourceString(nameof(MarkAllNonSerializableFieldsTitle)), + CreateLocalizableResourceString(nameof(MarkAllNonSerializableFieldsMessage)), + DiagnosticCategory.Usage, + RuleLevel.CandidateForRemoval, // Cannot implement this for .NET Core: https://github.com/dotnet/roslyn-analyzers/issues/1775#issuecomment-518457308 + description: CreateLocalizableResourceString(nameof(MarkAllNonSerializableFieldsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleCA2229Default, RuleCA2229Sealed, RuleCA2229Unsealed, RuleCA2235, RuleCA2237); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs index e8abb4cc1f..47cdbd0f31 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1304: Specify CultureInfo /// @@ -20,18 +22,15 @@ public sealed class SpecifyCultureInfoAnalyzer : AbstractGlobalizationDiagnostic { internal const string RuleId = "CA1304"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyCultureInfoTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyCultureInfoMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyCultureInfoDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Globalization, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(SpecifyCultureInfoTitle)), + CreateLocalizableResourceString(nameof(SpecifyCultureInfoMessage)), + DiagnosticCategory.Globalization, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(SpecifyCultureInfoDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs index 0a8ffe9f72..6e68e5c668 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1305: Specify IFormatProvider /// @@ -20,46 +22,48 @@ public sealed class SpecifyIFormatProviderAnalyzer : AbstractGlobalizationDiagno { internal const string RuleId = "CA1305"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyIFormatProviderTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageIFormatProviderAlternateString = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyIFormatProviderMessageIFormatProviderAlternateString), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageIFormatProviderAlternate = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyIFormatProviderMessageIFormatProviderAlternate), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageUICultureString = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyIFormatProviderMessageUICultureString), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageUICulture = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyIFormatProviderMessageUICulture), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyIFormatProviderDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor IFormatProviderAlternateStringRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageIFormatProviderAlternateString, - DiagnosticCategory.Globalization, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor IFormatProviderAlternateRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageIFormatProviderAlternate, - DiagnosticCategory.Globalization, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor UICultureStringRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageUICultureString, - DiagnosticCategory.Globalization, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); - internal static DiagnosticDescriptor UICultureRule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessageUICulture, - DiagnosticCategory.Globalization, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(SpecifyIFormatProviderTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(SpecifyIFormatProviderDescription)); + + internal static readonly DiagnosticDescriptor IFormatProviderAlternateStringRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(SpecifyIFormatProviderMessageIFormatProviderAlternateString)), + DiagnosticCategory.Globalization, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor IFormatProviderAlternateRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(SpecifyIFormatProviderMessageIFormatProviderAlternate)), + DiagnosticCategory.Globalization, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor UICultureStringRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(SpecifyIFormatProviderMessageUICultureString)), + DiagnosticCategory.Globalization, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor UICultureRule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableTitle, + CreateLocalizableResourceString(nameof(SpecifyIFormatProviderMessageUICulture)), + DiagnosticCategory.Globalization, + RuleLevel.IdeHidden_BulkConfigurable, + description: s_localizableDescription, + isPortedFxCopRule: true, + isDataflowRule: false); private static readonly ImmutableArray s_dateInvariantFormats = ImmutableArray.Create("o", "O", "r", "R", "s", "u"); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs index bc8dedd38d..69f6492f3f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1307: Specify StringComparison /// @@ -24,31 +26,25 @@ public sealed class SpecifyStringComparisonAnalyzer : AbstractGlobalizationDiagn private static readonly ImmutableArray s_CA1310MethodNamesWithFirstStringParameter = ImmutableArray.Create("Compare", "StartsWith", "EndsWith", "IndexOf", "LastIndexOf"); - private static readonly LocalizableString s_localizableCA1307Title = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyStringComparisonCA1307Title), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableCA1307Message = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyStringComparisonCA1307Message), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableCA1307Description = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyStringComparisonCA1307Description), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule_CA1307 = DiagnosticDescriptorHelper.Create(RuleId_CA1307, - s_localizableCA1307Title, - s_localizableCA1307Message, - DiagnosticCategory.Globalization, - RuleLevel.Disabled, - description: s_localizableCA1307Description, - isPortedFxCopRule: true, - isDataflowRule: false); - - private static readonly LocalizableString s_localizableCA1310Title = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyStringComparisonCA1310Title), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableCA1310Message = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyStringComparisonCA1310Message), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableCA1310Description = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.SpecifyStringComparisonCA1310Description), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule_CA1310 = DiagnosticDescriptorHelper.Create(RuleId_CA1310, - s_localizableCA1310Title, - s_localizableCA1310Message, - DiagnosticCategory.Globalization, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableCA1310Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule_CA1307 = DiagnosticDescriptorHelper.Create( + RuleId_CA1307, + CreateLocalizableResourceString(nameof(SpecifyStringComparisonCA1307Title)), + CreateLocalizableResourceString(nameof(SpecifyStringComparisonCA1307Message)), + DiagnosticCategory.Globalization, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(SpecifyStringComparisonCA1307Description)), + isPortedFxCopRule: true, + isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule_CA1310 = DiagnosticDescriptorHelper.Create( + RuleId_CA1310, + CreateLocalizableResourceString(nameof(SpecifyStringComparisonCA1310Title)), + CreateLocalizableResourceString(nameof(SpecifyStringComparisonCA1310Message)), + DiagnosticCategory.Globalization, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(SpecifyStringComparisonCA1310Description)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule_CA1307, Rule_CA1310); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs index 3ea4b8c92d..bebba571ec 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA1820: Test for empty strings using string length. /// @@ -27,17 +29,15 @@ public sealed class TestForEmptyStringsUsingStringLengthAnalyzer : DiagnosticAna internal const string RuleId = "CA1820"; private const string StringEmptyFieldName = "Empty"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.TestForEmptyStringsUsingStringLengthTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.TestForEmptyStringsUsingStringLengthMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.TestForEmptyStringsUsingStringLengthDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly DiagnosticDescriptor s_rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Performance, - RuleLevel.Disabled, // Benefits provided might not outweight noise in test code. - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly DiagnosticDescriptor s_rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(TestForEmptyStringsUsingStringLengthTitle)), + CreateLocalizableResourceString(nameof(TestForEmptyStringsUsingStringLengthMessage)), + DiagnosticCategory.Performance, + RuleLevel.Disabled, // Benefits provided might not outweight noise in test code. + description: CreateLocalizableResourceString(nameof(TestForEmptyStringsUsingStringLengthDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(s_rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs index 3b90878e25..a0ae2a890d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2242: Test for NaN correctly /// @@ -18,19 +20,15 @@ public sealed class TestForNaNCorrectlyAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2242"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.TestForNaNCorrectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.TestForNaNCorrectlyMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.TestForNaNCorrectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.BuildWarningCandidate, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(TestForNaNCorrectlyTitle)), + CreateLocalizableResourceString(nameof(TestForNaNCorrectlyMessage)), + DiagnosticCategory.Usage, + RuleLevel.BuildWarningCandidate, + description: CreateLocalizableResourceString(nameof(TestForNaNCorrectlyDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs index b112fdd869..830eacb4bb 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs @@ -10,18 +10,21 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + /// CA1837: Use Environment.ProcessId. [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseEnvironmentProcessId : DiagnosticAnalyzer { internal const string RuleId = "CA1837"; - internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseEnvironmentProcessIdTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseEnvironmentProcessIdMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(UseEnvironmentProcessIdTitle)), + CreateLocalizableResourceString(nameof(UseEnvironmentProcessIdMessage)), DiagnosticCategory.Performance, RuleLevel.IdeSuggestion, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseEnvironmentProcessIdDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(UseEnvironmentProcessIdDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs index 84cbc04ab9..471644917e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs @@ -12,20 +12,23 @@ namespace Microsoft.NetCore.Analyzers.Runtime { + using static MicrosoftNetCoreAnalyzersResources; + public abstract class UseOrdinalStringComparisonAnalyzer : AbstractGlobalizationDiagnosticAnalyzer { internal const string RuleId = "CA1309"; - private static readonly LocalizableString s_localizableMessageAndTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseOrdinalStringComparisonTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseOrdinalStringComparisonDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableMessageAndTitle, - s_localizableMessageAndTitle, - DiagnosticCategory.Globalization, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + private static readonly LocalizableString s_localizableMessageAndTitle = CreateLocalizableResourceString(nameof(UseOrdinalStringComparisonTitle)); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + s_localizableMessageAndTitle, + s_localizableMessageAndTitle, + DiagnosticCategory.Globalization, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(UseOrdinalStringComparisonDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); internal const string CompareMethodName = "Compare"; internal const string EqualsMethodName = "Equals"; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs index 190df1924c..d0187c76c6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs @@ -10,32 +10,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class ApprovedCipherModeAnalyzer : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5358"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.ApprovedCipherMode), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.ApprovedCipherModeMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.ApprovedCipherModeDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(ApprovedCipherMode)), + CreateLocalizableResourceString(nameof(ApprovedCipherModeMessage)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(ApprovedCipherModeDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs index 883e957718..87bbfd42b0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization of or in an /// IFormatter deserialized object graph. @@ -21,8 +23,8 @@ public abstract class DataSetDataTableInIFormatterSerializableObjectGraphAnalyze internal static readonly DiagnosticDescriptor ObjectGraphContainsDangerousTypeDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2354", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInRceDeserializableObjectGraphTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInRceDeserializableObjectGraphMessage), + nameof(DataSetDataTableInRceDeserializableObjectGraphTitle), + nameof(DataSetDataTableInRceDeserializableObjectGraphMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs index 4fc12fd31e..7ffe32d596 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs @@ -13,6 +13,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization of or in an /// deserialized object graph for certain serializers. @@ -31,8 +33,8 @@ public abstract class DataSetDataTableInSerializableObjectGraphAnalyzer : Diagno internal static readonly DiagnosticDescriptor ObjectGraphContainsDangerousTypeDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2355", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInDeserializableObjectGraphTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInDeserializableObjectGraphMessage), + nameof(DataSetDataTableInDeserializableObjectGraphTitle), + nameof(DataSetDataTableInDeserializableObjectGraphMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs index d9ce9f5de9..ff83c27a89 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting or deserializable members. /// @@ -22,8 +24,8 @@ public abstract class DataSetDataTableInSerializableTypeAnalyzer : DiagnosticAna internal static readonly DiagnosticDescriptor RceSerializableContainsDangerousType = SecurityHelpers.CreateDiagnosticDescriptor( "CA2352", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInRceSerializableTypeTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInRceSerializableTypeMessage), + nameof(DataSetDataTableInRceSerializableTypeTitle), + nameof(DataSetDataTableInRceSerializableTypeMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, @@ -32,8 +34,8 @@ public abstract class DataSetDataTableInSerializableTypeAnalyzer : DiagnosticAna internal static readonly DiagnosticDescriptor SerializableContainsDangerousType = SecurityHelpers.CreateDiagnosticDescriptor( "CA2353", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInSerializableTypeTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInSerializableTypeMessage), + nameof(DataSetDataTableInSerializableTypeTitle), + nameof(DataSetDataTableInSerializableTypeMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, @@ -44,8 +46,8 @@ public abstract class DataSetDataTableInSerializableTypeAnalyzer : DiagnosticAna internal static readonly DiagnosticDescriptor RceAutogeneratedSerializableContainsDangerousType = SecurityHelpers.CreateDiagnosticDescriptor( "CA2362", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInRceAutogeneratedSerializableTypeTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInRceAutogeneratedSerializableTypeMessage), + nameof(DataSetDataTableInRceAutogeneratedSerializableTypeTitle), + nameof(DataSetDataTableInRceAutogeneratedSerializableTypeMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs index f3adff7b60..fb6127cdc5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization of or in an /// web API / WCF API serializable object graph. @@ -21,8 +23,8 @@ public abstract class DataSetDataTableInWebSerializableObjectGraphAnalyzer : Dia internal static readonly DiagnosticDescriptor ObjectGraphContainsDangerousTypeDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2356", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInWebDeserializableObjectGraphTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetDataTableInWebDeserializableObjectGraphMessage), + nameof(DataSetDataTableInWebDeserializableObjectGraphTitle), + nameof(DataSetDataTableInWebDeserializableObjectGraphMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddArchiveItemPathToTheTargetFileSystemPath.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddArchiveItemPathToTheTargetFileSystemPath.cs index a6d4d85ddb..1a3dc9a76e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddArchiveItemPathToTheTargetFileSystemPath.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddArchiveItemPathToTheTargetFileSystemPath.cs @@ -7,21 +7,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class DoNotAddArchiveItemPathToTheTargetFileSystemPath : SourceTriggeredTaintedDataAnalyzerBase { internal const string RuleId = "CA5389"; - internal static DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( RuleId, - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotAddArchiveItemPathToTheTargetFileSystemPath), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotAddArchiveItemPathToTheTargetFileSystemPathMessage), + nameof(DoNotAddArchiveItemPathToTheTargetFileSystemPath), + nameof(DoNotAddArchiveItemPathToTheTargetFileSystemPathMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotAddArchiveItemPathToTheTargetFileSystemPathDescription)); + descriptionResourceStringName: nameof(DoNotAddArchiveItemPathToTheTargetFileSystemPathDescription)); protected override SinkKind SinkKind => SinkKind.ZipSlip; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs index d205341364..4ac068f7e8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs @@ -9,32 +9,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotAddSchemaByURL : DiagnosticAnalyzer { internal const string DiagnosticId = "CA3061"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotAddSchemaByURL), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotAddSchemaByURLMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotAddSchemaByURLDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotAddSchemaByURL)), + CreateLocalizableResourceString(nameof(DoNotAddSchemaByURLMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotAddSchemaByURLDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs index 1a023ff029..f2c1b864bc 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs @@ -15,22 +15,12 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotCallDangerousMethodsInDeserialization : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5360"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotCallDangerousMethodsInDeserialization), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotCallDangerousMethodsInDeserializationMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotCallDangerousMethodsInDeserializationDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); private ImmutableArray<(string, string[])> DangerousCallable = ImmutableArray.Create<(string, string[])> ( @@ -42,16 +32,16 @@ public sealed class DoNotCallDangerousMethodsInDeserialization : DiagnosticAnaly (WellKnownTypeNames.SystemReflectionAssembly, new[] { "GetLoadedModules", "Load", "LoadFile", "LoadFrom", "LoadModule", "LoadWithPartialName", "ReflectionOnlyLoad", "ReflectionOnlyLoadFrom", "UnsafeLoadFrom" }) ); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotCallDangerousMethodsInDeserialization)), + CreateLocalizableResourceString(nameof(DoNotCallDangerousMethodsInDeserializationMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotCallDangerousMethodsInDeserializationDescription)), + isPortedFxCopRule: false, + isDataflowRule: false, + isReportedAtCompilationEnd: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs index e88f50196d..ae21a050f8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs @@ -10,32 +10,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotDisableCertificateValidation : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5359"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableCertificateValidation), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableCertificateValidationMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableCertificateValidationDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotDisableCertificateValidation)), + CreateLocalizableResourceString(nameof(DoNotDisableCertificateValidationMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotDisableCertificateValidationDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs index fb0481bca1..f26434fd5e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs @@ -18,27 +18,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] internal class DoNotDisableHttpClientCRLCheck : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DefinitelyDisableHttpClientCRLCheckRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DefinitelyDisableHttpClientCRLCheckRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5399", - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyDisableHttpClientCRLCheck), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyDisableHttpClientCRLCheckMessage), + nameof(DefinitelyDisableHttpClientCRLCheck), + nameof(DefinitelyDisableHttpClientCRLCheckMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableHttpClientCRLCheckDescription)); - internal static DiagnosticDescriptor MaybeDisableHttpClientCRLCheckRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(DoNotDisableHttpClientCRLCheckDescription)); + + internal static readonly DiagnosticDescriptor MaybeDisableHttpClientCRLCheckRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5400", - nameof(MicrosoftNetCoreAnalyzersResources.MaybeDisableHttpClientCRLCheck), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeDisableHttpClientCRLCheckMessage), + nameof(MaybeDisableHttpClientCRLCheck), + nameof(MaybeDisableHttpClientCRLCheckMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableHttpClientCRLCheckDescription)); + descriptionResourceStringName: nameof(DoNotDisableHttpClientCRLCheckDescription)); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs index f28863bf6e..05bcc638f7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs @@ -9,32 +9,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotDisableHTTPHeaderChecking : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5365"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableHTTPHeaderChecking), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableHTTPHeaderCheckingMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableHTTPHeaderCheckingDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotDisableHTTPHeaderChecking)), + CreateLocalizableResourceString(nameof(DoNotDisableHTTPHeaderCheckingMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotDisableHTTPHeaderCheckingDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs index 8610535a12..63a3c6c927 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs @@ -9,32 +9,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotDisableRequestValidation : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5363"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableRequestValidation), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableRequestValidationMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableRequestValidationDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotDisableRequestValidation)), + CreateLocalizableResourceString(nameof(DoNotDisableRequestValidationMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotDisableRequestValidationDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeCertificate.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeCertificate.cs index 47161fa8e2..812cc2b198 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeCertificate.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeCertificate.cs @@ -7,18 +7,20 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class DoNotHardCodeCertificate : SourceTriggeredTaintedDataAnalyzerBase { - internal static DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5403", - nameof(MicrosoftNetCoreAnalyzersResources.DoNotHardCodeCertificate), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotHardCodeCertificateMessage), + nameof(DoNotHardCodeCertificate), + nameof(DoNotHardCodeCertificateMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotHardCodeCertificateDescription)); + descriptionResourceStringName: nameof(DoNotHardCodeCertificateDescription)); protected override SinkKind SinkKind => SinkKind.HardcodedCertificate; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeEncryptionKey.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeEncryptionKey.cs index 84109058de..2679380537 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeEncryptionKey.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotHardCodeEncryptionKey.cs @@ -7,19 +7,20 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class DoNotHardCodeEncryptionKey : SourceTriggeredTaintedDataAnalyzerBase { - internal static DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5390", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotHardCodeEncryptionKey), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotHardCodeEncryptionKeyMessage), + nameof(DoNotHardCodeEncryptionKey), + nameof(DoNotHardCodeEncryptionKeyMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotHardCodeEncryptionKeyDescription)); + descriptionResourceStringName: nameof(DoNotHardCodeEncryptionKeyDescription)); protected override SinkKind SinkKind => SinkKind.HardcodedEncryptionKey; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs index 50085b5a24..36ed661ce7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs @@ -19,29 +19,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotInstallRootCert : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DefinitelyInstallRootCertRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DefinitelyInstallRootCertRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5380", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyInstallRootCert), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyInstallRootCertMessage), + nameof(DefinitelyInstallRootCert), + nameof(DefinitelyInstallRootCertMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotInstallRootCertDescription)); - internal static DiagnosticDescriptor MaybeInstallRootCertRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(DoNotInstallRootCertDescription)); + + internal static readonly DiagnosticDescriptor MaybeInstallRootCertRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5381", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeInstallRootCert), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeInstallRootCertMessage), + nameof(MaybeInstallRootCert), + nameof(MaybeInstallRootCertMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotInstallRootCertDescription)); + descriptionResourceStringName: nameof(DoNotInstallRootCertDescription)); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( DefinitelyInstallRootCertRule, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs index fe9c1b4e6d..1fef9bbf6d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs @@ -10,33 +10,23 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotSerializeTypeWithPointerFields : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5367"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotSerializeTypesWithPointerFields), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotSerializeTypesWithPointerFieldsMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotSerializeTypesWithPointerFieldsDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotSerializeTypesWithPointerFields)), + CreateLocalizableResourceString(nameof(DoNotSerializeTypesWithPointerFieldsMessage)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotSerializeTypesWithPointerFieldsDescription)), + isPortedFxCopRule: false, + isDataflowRule: false, + isReportedAtCompilationEnd: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs index 7ebc57f1b2..5fa5f76e85 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs @@ -16,26 +16,28 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// Analyzer for System.AppContext.SetSwitch invocations. /// [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotSetSwitch : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DoNotDisableSchUseStrongCryptoRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DoNotDisableSchUseStrongCryptoRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5361", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableSchUseStrongCrypto), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableSchUseStrongCryptoMessage), + nameof(DoNotDisableSchUseStrongCrypto), + nameof(DoNotDisableSchUseStrongCryptoMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableSchUseStrongCryptoDescription)); - internal static DiagnosticDescriptor DoNotDisableSpmSecurityProtocolsRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(DoNotDisableSchUseStrongCryptoDescription)); + + internal static readonly DiagnosticDescriptor DoNotDisableSpmSecurityProtocolsRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5378", - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableUsingServicePointManagerSecurityProtocolsTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotDisableUsingServicePointManagerSecurityProtocolsMessage), + nameof(DoNotDisableUsingServicePointManagerSecurityProtocolsTitle), + nameof(DoNotDisableUsingServicePointManagerSecurityProtocolsMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isReportedAtCompilationEnd: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs index 8a3e3b9fda..d4db8da1ad 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs @@ -9,32 +9,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseAccountSAS : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5375"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseAccountSAS), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseAccountSASMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseAccountSASDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotUseAccountSAS)), + CreateLocalizableResourceString(nameof(DoNotUseAccountSASMessage)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotUseAccountSASDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs index e220169196..7ad81444cf 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs @@ -17,27 +17,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseCreateEncryptorWithNonDefaultIV : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DefinitelyUseCreateEncryptorWithNonDefaultIVRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DefinitelyUseCreateEncryptorWithNonDefaultIVRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5401", - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyUseCreateEncryptorWithNonDefaultIV), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyUseCreateEncryptorWithNonDefaultIVMessage), + nameof(DefinitelyUseCreateEncryptorWithNonDefaultIV), + nameof(DefinitelyUseCreateEncryptorWithNonDefaultIVMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCreateEncryptorWithNonDefaultIVDescription)); - internal static DiagnosticDescriptor MaybeUseCreateEncryptorWithNonDefaultIVRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(DoNotUseCreateEncryptorWithNonDefaultIVDescription)); + + internal static readonly DiagnosticDescriptor MaybeUseCreateEncryptorWithNonDefaultIVRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5402", - nameof(MicrosoftNetCoreAnalyzersResources.MaybeUseCreateEncryptorWithNonDefaultIV), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeUseCreateEncryptorWithNonDefaultIVMessage), + nameof(MaybeUseCreateEncryptorWithNonDefaultIV), + nameof(MaybeUseCreateEncryptorWithNonDefaultIVMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseCreateEncryptorWithNonDefaultIVDescription)); + descriptionResourceStringName: nameof(DoNotUseCreateEncryptorWithNonDefaultIVDescription)); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( DefinitelyUseCreateEncryptorWithNonDefaultIVRule, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs index 93e8ca1d03..45b625c436 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs @@ -11,32 +11,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseDSA : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5384"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseDSA), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseDSAMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseDSADescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotUseDSA)), + CreateLocalizableResourceString(nameof(DoNotUseDSAMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotUseDSADescription)), + isPortedFxCopRule: false, + isDataflowRule: false); private static readonly ImmutableHashSet s_DSAAlgorithmNames = ImmutableHashSet.Create( diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs index 7f9ed74621..31dbf792b8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with . /// @@ -19,8 +21,8 @@ internal class DoNotUseDataSetReadXml : DoNotUseInsecureDeserializerMethodsBase internal static readonly DiagnosticDescriptor RealMethodUsedDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2351", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetReadXmlTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetReadXmlMessage), + nameof(DataSetReadXmlTitle), + nameof(DataSetReadXmlMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, @@ -29,8 +31,8 @@ internal class DoNotUseDataSetReadXml : DoNotUseInsecureDeserializerMethodsBase internal static readonly DiagnosticDescriptor RealMethodUsedInAutogeneratedDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2361", - nameof(MicrosoftNetCoreAnalyzersResources.DataSetReadXmlAutogeneratedTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataSetReadXmlAutogeneratedMessage), + nameof(DataSetReadXmlAutogeneratedTitle), + nameof(DataSetReadXmlAutogeneratedMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs index 0894784547..3259d71e2a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with . /// @@ -19,8 +21,8 @@ internal class DoNotUseDataTableReadXml : DoNotUseInsecureDeserializerMethodsBas internal static readonly DiagnosticDescriptor RealMethodUsedDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2350", - nameof(MicrosoftNetCoreAnalyzersResources.DataTableReadXmlTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DataTableReadXmlMessage), + nameof(DataTableReadXmlTitle), + nameof(DataTableReadXmlMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs index fea5bfe63c..4fded33068 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs @@ -11,24 +11,25 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseDeprecatedSecurityProtocols : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DeprecatedRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DeprecatedRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5364", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseDeprecatedSecurityProtocols), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseDeprecatedSecurityProtocolsMessage), + nameof(DoNotUseDeprecatedSecurityProtocols), + nameof(DoNotUseDeprecatedSecurityProtocolsMessage), RuleLevel.IdeHidden_BulkConfigurable, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseDeprecatedSecurityProtocolsDescription)); - internal static DiagnosticDescriptor HardCodedRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(DoNotUseDeprecatedSecurityProtocolsDescription)); + + internal static readonly DiagnosticDescriptor HardCodedRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5386", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.HardCodedSecurityProtocolTitle), - nameof(MicrosoftNetCoreAnalyzersResources.HardCodedSecurityProtocolMessage), + nameof(HardCodedSecurityProtocolTitle), + nameof(HardCodedSecurityProtocolMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs index af95117b24..628634eceb 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs @@ -11,56 +11,33 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseInsecureCryptographicAlgorithmsAnalyzer : DiagnosticAnalyzer { internal const string DoNotUseWeakCryptographyRuleId = "CA5350"; internal const string DoNotUseBrokenCryptographyRuleId = "CA5351"; - private static readonly LocalizableString s_localizableDoNotUseWeakAlgorithmsTitle = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakCryptographicAlgorithms), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDoNotUseWeakAlgorithmsMessage = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakCryptographicAlgorithmsMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDoNotUseWeakAlgorithmsDescription = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakCryptographicAlgorithmsDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDoNotUseBrokenAlgorithmsTitle = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseBrokenCryptographicAlgorithms), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDoNotUseBrokenAlgorithmsMessage = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseBrokenCryptographicAlgorithmsMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDoNotUseBrokenAlgorithmsDescription = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseBrokenCryptographicAlgorithmsDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor DoNotUseBrokenCryptographyRule = + internal static readonly DiagnosticDescriptor DoNotUseBrokenCryptographyRule = DiagnosticDescriptorHelper.Create( DoNotUseBrokenCryptographyRuleId, - s_localizableDoNotUseBrokenAlgorithmsTitle, - s_localizableDoNotUseBrokenAlgorithmsMessage, + CreateLocalizableResourceString(nameof(DoNotUseBrokenCryptographicAlgorithms)), + CreateLocalizableResourceString(nameof(DoNotUseBrokenCryptographicAlgorithmsMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDoNotUseBrokenAlgorithmsDescription, + description: CreateLocalizableResourceString(nameof(DoNotUseBrokenCryptographicAlgorithmsDescription)), isPortedFxCopRule: false, isDataflowRule: false); - internal static DiagnosticDescriptor DoNotUseWeakCryptographyRule = + internal static readonly DiagnosticDescriptor DoNotUseWeakCryptographyRule = DiagnosticDescriptorHelper.Create( DoNotUseWeakCryptographyRuleId, - s_localizableDoNotUseWeakAlgorithmsTitle, - s_localizableDoNotUseWeakAlgorithmsMessage, + CreateLocalizableResourceString(nameof(DoNotUseWeakCryptographicAlgorithms)), + CreateLocalizableResourceString(nameof(DoNotUseWeakCryptographicAlgorithmsMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, - description: s_localizableDoNotUseWeakAlgorithmsDescription, + description: CreateLocalizableResourceString(nameof(DoNotUseWeakCryptographicAlgorithmsDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterMethods.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterMethods.cs index deab09516f..a552fe9c9d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterMethods.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with . /// @@ -19,13 +21,13 @@ internal class DoNotUseInsecureDeserializerBinaryFormatterMethods : DoNotUseInse internal static readonly DiagnosticDescriptor RealMethodUsedDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2300", - nameof(MicrosoftNetCoreAnalyzersResources.BinaryFormatterMethodUsedTitle), - nameof(MicrosoftNetCoreAnalyzersResources.BinaryFormatterMethodUsedMessage), + nameof(BinaryFormatterMethodUsedTitle), + nameof(BinaryFormatterMethodUsedMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.BinaryFormatterMethodUsedDescription)); + descriptionResourceStringName: nameof(BinaryFormatterMethodUsedDescription)); protected override string DeserializerTypeMetadataName => WellKnownTypeNames.SystemRuntimeSerializationFormattersBinaryBinaryFormatter; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterWithoutBinder.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterWithoutBinder.cs index 1311265bfa..0d7163ed4d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterWithoutBinder.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerBinaryFormatterWithoutBinder.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with when its Binder property is not set. /// @@ -19,17 +21,18 @@ public class DoNotUseInsecureDeserializerBinaryFormatterWithoutBinder : DoNotUse internal static readonly DiagnosticDescriptor RealBinderDefinitelyNotSetDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2301", - nameof(MicrosoftNetCoreAnalyzersResources.BinaryFormatterDeserializeWithoutBinderSetTitle), - nameof(MicrosoftNetCoreAnalyzersResources.BinaryFormatterDeserializeWithoutBinderSetMessage), + nameof(BinaryFormatterDeserializeWithoutBinderSetTitle), + nameof(BinaryFormatterDeserializeWithoutBinderSetMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor RealBinderMaybeNotSetDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2302", - nameof(MicrosoftNetCoreAnalyzersResources.BinaryFormatterDeserializeMaybeWithoutBinderSetTitle), - nameof(MicrosoftNetCoreAnalyzersResources.BinaryFormatterDeserializeMaybeWithoutBinderSetMessage), + nameof(BinaryFormatterDeserializeMaybeWithoutBinderSetTitle), + nameof(BinaryFormatterDeserializeMaybeWithoutBinderSetMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs index 6ca1f87b59..3bbf683061 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs @@ -18,6 +18,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with . /// @@ -28,17 +30,18 @@ internal class DoNotUseInsecureDeserializerJavaScriptSerializerWithSimpleTypeRes internal static readonly DiagnosticDescriptor DefinitelyWithSimpleTypeResolver = SecurityHelpers.CreateDiagnosticDescriptor( "CA2321", - nameof(MicrosoftNetCoreAnalyzersResources.JavaScriptSerializerWithSimpleTypeResolverTitle), - nameof(MicrosoftNetCoreAnalyzersResources.JavaScriptSerializerWithSimpleTypeResolverMessage), + nameof(JavaScriptSerializerWithSimpleTypeResolverTitle), + nameof(JavaScriptSerializerWithSimpleTypeResolverMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor MaybeWithSimpleTypeResolver = SecurityHelpers.CreateDiagnosticDescriptor( "CA2322", - nameof(MicrosoftNetCoreAnalyzersResources.JavaScriptSerializerMaybeWithSimpleTypeResolverTitle), - nameof(MicrosoftNetCoreAnalyzersResources.JavaScriptSerializerMaybeWithSimpleTypeResolverMessage), + nameof(JavaScriptSerializerMaybeWithSimpleTypeResolverTitle), + nameof(JavaScriptSerializerMaybeWithSimpleTypeResolverMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs index e9208b1547..31e44f8ad7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs @@ -19,6 +19,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with when its TypeNameHandling != None /// and its Binder/SerializationBinder is null. @@ -30,17 +32,18 @@ internal class DoNotUseInsecureDeserializerJsonNetWithoutBinder : DiagnosticAnal internal static readonly DiagnosticDescriptor DefinitelyInsecureSerializer = SecurityHelpers.CreateDiagnosticDescriptor( "CA2329", - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetInsecureSerializerTitle), - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetInsecureSerializerMessage), + nameof(JsonNetInsecureSerializerTitle), + nameof(JsonNetInsecureSerializerMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor MaybeInsecureSerializer = SecurityHelpers.CreateDiagnosticDescriptor( "CA2330", - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetMaybeInsecureSerializerTitle), - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetMaybeInsecureSerializerMessage), + nameof(JsonNetMaybeInsecureSerializerTitle), + nameof(JsonNetMaybeInsecureSerializerMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerLosFormatter.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerLosFormatter.cs index 6f5de6cadf..984f66663b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerLosFormatter.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerLosFormatter.cs @@ -9,17 +9,19 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with LosFormatter, which can result in remote code execution. /// [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class DoNotUseInsecureDeserializerLosFormatter : DoNotUseInsecureDeserializerMethodsBase { - internal static DiagnosticDescriptor RealMethodUsedDescriptor = + internal static readonly DiagnosticDescriptor RealMethodUsedDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2305", - nameof(MicrosoftNetCoreAnalyzersResources.LosFormatterMethodUsedTitle), - nameof(MicrosoftNetCoreAnalyzersResources.LosFormatterMethodUsedMessage), + nameof(LosFormatterMethodUsedTitle), + nameof(LosFormatterMethodUsedMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerMethods.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerMethods.cs index 699f3226cc..66311b21e9 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerMethods.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with . /// @@ -19,13 +21,13 @@ internal class DoNotUseInsecureDeserializerNetDataContractSerializerMethods : Do internal static readonly DiagnosticDescriptor RealMethodUsedDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2310", - nameof(MicrosoftNetCoreAnalyzersResources.NetDataContractSerializerMethodUsedTitle), - nameof(MicrosoftNetCoreAnalyzersResources.NetDataContractSerializerMethodUsedMessage), + nameof(NetDataContractSerializerMethodUsedTitle), + nameof(NetDataContractSerializerMethodUsedMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.NetDataContractSerializerMethodUsedDescription)); + descriptionResourceStringName: nameof(NetDataContractSerializerMethodUsedDescription)); protected override string DeserializerTypeMetadataName => WellKnownTypeNames.SystemRuntimeSerializationNetDataContractSerializer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerWithoutBinder.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerWithoutBinder.cs index e4ceba3f1a..9ddd66528e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerWithoutBinder.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerNetDataContractSerializerWithoutBinder.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with when its Binder property is not set. /// @@ -19,17 +21,18 @@ public class DoNotUseInsecureDeserializerNetDataContractSerializerWithoutBinder internal static readonly DiagnosticDescriptor RealBinderDefinitelyNotSetDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2311", - nameof(MicrosoftNetCoreAnalyzersResources.NetDataContractSerializerDeserializeWithoutBinderSetTitle), - nameof(MicrosoftNetCoreAnalyzersResources.NetDataContractSerializerDeserializeWithoutBinderSetMessage), + nameof(NetDataContractSerializerDeserializeWithoutBinderSetTitle), + nameof(NetDataContractSerializerDeserializeWithoutBinderSetMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor RealBinderMaybeNotSetDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2312", - nameof(MicrosoftNetCoreAnalyzersResources.NetDataContractSerializerDeserializeMaybeWithoutBinderSetTitle), - nameof(MicrosoftNetCoreAnalyzersResources.NetDataContractSerializerDeserializeMaybeWithoutBinderSetMessage), + nameof(NetDataContractSerializerDeserializeMaybeWithoutBinderSetTitle), + nameof(NetDataContractSerializerDeserializeMaybeWithoutBinderSetMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerObjectStateFormatter.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerObjectStateFormatter.cs index f03d5df8d3..b1e9d1c126 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerObjectStateFormatter.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerObjectStateFormatter.cs @@ -9,17 +9,19 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting deserialization with ObjectStateFormatter, which can result in remote code execution. /// [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class DoNotUseInsecureDeserializerObjectStateFormatter : DoNotUseInsecureDeserializerMethodsBase { - internal static DiagnosticDescriptor RealMethodUsedDescriptor = + internal static readonly DiagnosticDescriptor RealMethodUsedDescriptor = SecurityHelpers.CreateDiagnosticDescriptor( "CA2315", - nameof(MicrosoftNetCoreAnalyzersResources.ObjectStateFormatterMethodUsedTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ObjectStateFormatterMethodUsedMessage), + nameof(ObjectStateFormatterMethodUsedTitle), + nameof(ObjectStateFormatterMethodUsedMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs index 5c39805d0e..0d9d0bbb68 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs @@ -9,32 +9,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseInsecureRandomness : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5394"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseInsecureRandomness), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseInsecureRandomnessMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseInsecureRandomnessDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotUseInsecureRandomness)), + CreateLocalizableResourceString(nameof(DoNotUseInsecureRandomnessMessage)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotUseInsecureRandomnessDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs index 508158d625..5b28a899f8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs @@ -19,6 +19,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For detecting potentially insecure deserialization settings with . /// @@ -29,17 +31,18 @@ public sealed class DoNotUseInsecureSettingsForJsonNet : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor DefinitelyInsecureSettings = SecurityHelpers.CreateDiagnosticDescriptor( "CA2327", - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetInsecureSettingsTitle), - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetInsecureSettingsMessage), + nameof(JsonNetInsecureSettingsTitle), + nameof(JsonNetInsecureSettingsMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true); + internal static readonly DiagnosticDescriptor MaybeInsecureSettings = SecurityHelpers.CreateDiagnosticDescriptor( "CA2328", - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetMaybeInsecureSettingsTitle), - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetMaybeInsecureSettingsMessage), + nameof(JsonNetMaybeInsecureSettingsTitle), + nameof(JsonNetMaybeInsecureSettingsMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs index 571a4d0eb0..a64e4b9c5d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs @@ -9,32 +9,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseObsoleteKDFAlgorithm : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5373"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseObsoleteKDFAlgorithm), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseObsoleteKDFAlgorithmMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseObsoleteKDFAlgorithmDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotUseObsoleteKDFAlgorithm)), + CreateLocalizableResourceString(nameof(DoNotUseObsoleteKDFAlgorithmMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotUseObsoleteKDFAlgorithmDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs index 5da43a445c..cd1cbd93dd 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs @@ -10,32 +10,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseWeakKDFAlgorithm : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5379"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakKDFAlgorithm), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakKDFAlgorithmMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakKDFAlgorithmDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotUseWeakKDFAlgorithm)), + CreateLocalizableResourceString(nameof(DoNotUseWeakKDFAlgorithmMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(DoNotUseWeakKDFAlgorithmDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs index 536e5ae998..8d11a9e9d8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs @@ -20,29 +20,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseWeakKDFInsufficientIterationCount : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DefinitelyUseWeakKDFInsufficientIterationCountRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DefinitelyUseWeakKDFInsufficientIterationCountRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5387", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyUseWeakKDFInsufficientIterationCount), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyUseWeakKDFInsufficientIterationCountMessage), + nameof(DefinitelyUseWeakKDFInsufficientIterationCount), + nameof(DefinitelyUseWeakKDFInsufficientIterationCountMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakKDFInsufficientIterationCountDescription)); - internal static DiagnosticDescriptor MaybeUseWeakKDFInsufficientIterationCountRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(DoNotUseWeakKDFInsufficientIterationCountDescription)); + + internal static readonly DiagnosticDescriptor MaybeUseWeakKDFInsufficientIterationCountRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5388", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeUseWeakKDFInsufficientIterationCount), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeUseWeakKDFInsufficientIterationCountMessage), + nameof(MaybeUseWeakKDFInsufficientIterationCount), + nameof(MaybeUseWeakKDFInsufficientIterationCountMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseWeakKDFInsufficientIterationCountDescription)); + descriptionResourceStringName: nameof(DoNotUseWeakKDFInsufficientIterationCountDescription)); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( DefinitelyUseWeakKDFInsufficientIterationCountRule, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs index 05bd20a2d7..c46b34ba86 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs @@ -9,28 +9,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseXslTransform : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5374"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseXslTransform), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseXslTransformMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: null, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(DoNotUseXslTransform)), + CreateLocalizableResourceString(nameof(DoNotUseXslTransformMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: null, + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/SecurityHelpers.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/SecurityHelpers.cs index 29f86c480a..8dd7f6dbe8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/SecurityHelpers.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/SecurityHelpers.cs @@ -1,11 +1,8 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. using System; -using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Resources; using Analyzer.Utilities; using Analyzer.Utilities.Extensions; using Microsoft.CodeAnalysis; @@ -15,56 +12,23 @@ namespace Microsoft.NetCore.Analyzers.Security.Helpers { + using static MicrosoftNetCoreAnalyzersResources; + internal static class SecurityHelpers { - /// - /// Creates a DiagnosticDescriptor with s from . - /// - /// Diagnostic identifier. - /// Name of the resource string inside for the diagnostic's title. - /// Name of the resource string inside for the diagnostic's message. - /// Indicates the for this rule. - /// Name of the resource string inside for the diagnostic's description. - /// Flag indicating if this is a rule ported from legacy FxCop. - /// Flag indicating if this is a dataflow analysis based rule. - /// new DiagnosticDescriptor - public static DiagnosticDescriptor CreateDiagnosticDescriptor( - string id, - string titleResourceStringName, - string messageResourceStringName, - RuleLevel ruleLevel, - bool isPortedFxCopRule, - bool isDataflowRule, - bool isReportedAtCompilationEnd, - string? descriptionResourceStringName = null) - { - return CreateDiagnosticDescriptor( - id, - typeof(MicrosoftNetCoreAnalyzersResources), - titleResourceStringName, - messageResourceStringName, - ruleLevel, - isPortedFxCopRule, - isDataflowRule, - isReportedAtCompilationEnd, - descriptionResourceStringName); - } - /// /// Creates a DiagnosticDescriptor with s from the specified resource source type. /// /// Diagnostic identifier. - /// Type containing the resource strings. - /// Name of the resource string inside for the diagnostic's title. - /// Name of the resource string inside for the diagnostic's message. + /// Name of the resource string for the diagnostic's title. + /// Name of the resource string for the diagnostic's message. /// Indicates the for this rule. - /// Name of the resource string inside for the diagnostic's description. + /// Name of the resource string for the diagnostic's description. /// Flag indicating if this is a rule ported from legacy FxCop. /// Flag indicating if this is a dataflow analysis based rule. /// new DiagnosticDescriptor public static DiagnosticDescriptor CreateDiagnosticDescriptor( string id, - Type resourceSource, string titleResourceStringName, string messageResourceStringName, RuleLevel ruleLevel, @@ -75,11 +39,11 @@ public static DiagnosticDescriptor CreateDiagnosticDescriptor( { return DiagnosticDescriptorHelper.Create( id, - GetResourceString(resourceSource, titleResourceStringName), - GetResourceString(resourceSource, messageResourceStringName), + CreateLocalizableResourceString(titleResourceStringName), + CreateLocalizableResourceString(messageResourceStringName), DiagnosticCategory.Security, ruleLevel, - descriptionResourceStringName != null ? GetResourceString(resourceSource, descriptionResourceStringName) : null, + descriptionResourceStringName != null ? CreateLocalizableResourceString(descriptionResourceStringName) : null, isPortedFxCopRule, isDataflowRule, isReportedAtCompilationEnd: isReportedAtCompilationEnd); @@ -135,14 +99,6 @@ public static DiagnosticDescriptor CreateDiagnosticDescriptor( StringComparer.Ordinal, "Deserialize"); - private static readonly ImmutableDictionary ResourceManagerMapping = - ImmutableDictionary.CreateRange( - new[] - { - (typeof(MicrosoftNetCoreAnalyzersResources), MicrosoftNetCoreAnalyzersResources.ResourceManager), - (typeof(MicrosoftNetCoreAnalyzersResources), MicrosoftNetCoreAnalyzersResources.ResourceManager), - }.Select(o => new KeyValuePair(o.Item1, o.ResourceManager))); - /// /// Methods using a parameter for . /// @@ -226,34 +182,5 @@ operationAnalysisContext.ContainingSymbol is IMethodSymbol methodSymbol && methodSymbol.ContainingType?.HasAttribute(designerCategoryAttributeTypeSymbol) == true && methodSymbol.HasAttribute(debuggerNonUserCodeAttributeTypeSymbol); } - - /// - /// Gets a from . - /// - /// Type containing the resource strings. - /// Name of the resource string to retrieve. - /// The corresponding . - private static LocalizableResourceString GetResourceString(Type resourceSource, string name) - { - if (resourceSource == null) - { - throw new ArgumentNullException(nameof(resourceSource)); - } - - if (!ResourceManagerMapping.TryGetValue(resourceSource, out ResourceManager resourceManager)) - { - throw new ArgumentException($"No mapping found for {resourceSource}", nameof(resourceSource)); - } - -#if DEBUG - if (resourceManager.GetString(name, System.Globalization.CultureInfo.InvariantCulture) == null) - { - throw new ArgumentException($"Resource string '{name}' not found in {resourceSource}", nameof(name)); - } -#endif - - LocalizableResourceString localizableResourceString = new LocalizableResourceString(name, resourceManager, resourceSource); - return localizableResourceString; - } } } diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs index 31d40e1deb..497ae359b4 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs @@ -11,6 +11,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + /// /// For using a values other than None. /// @@ -21,13 +23,13 @@ internal class JsonNetTypeNameHandling : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA2326", - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetTypeNameHandlingTitle), - nameof(MicrosoftNetCoreAnalyzersResources.JsonNetTypeNameHandlingMessage), + nameof(JsonNetTypeNameHandlingTitle), + nameof(JsonNetTypeNameHandlingMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.JsonNetTypeNameHandlingDescription)); + descriptionResourceStringName: nameof(JsonNetTypeNameHandlingDescription)); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs index b7ccc4ef96..dc6382cc17 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs @@ -11,33 +11,23 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class PotentialReferenceCycleInDeserializedObjectGraph : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5362"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.PotentialReferenceCycleInDeserializedObjectGraphTitle), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.PotentialReferenceCycleInDeserializedObjectGraphMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.PotentialReferenceCycleInDeserializedObjectGraphDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false, - isReportedAtCompilationEnd: true); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(PotentialReferenceCycleInDeserializedObjectGraphTitle)), + CreateLocalizableResourceString(nameof(PotentialReferenceCycleInDeserializedObjectGraphMessage)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(PotentialReferenceCycleInDeserializedObjectGraphDescription)), + isPortedFxCopRule: false, + isDataflowRule: false, + isReportedAtCompilationEnd: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForCommandExecutionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForCommandExecutionVulnerabilities.cs index af751b1292..8031e73c4b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForCommandExecutionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForCommandExecutionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForCommandExecutionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3006", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForProcessCommandInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForProcessCommandInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForProcessCommandInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForProcessCommandInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForDllInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForDllInjectionVulnerabilities.cs index 9dc522c340..1fdcd58750 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForDllInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForDllInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForDllInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3011", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForDllInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForDllInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForDllInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForDllInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForFilePathInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForFilePathInjectionVulnerabilities.cs index fb861c1f5a..e10ecf048b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForFilePathInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForFilePathInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForFilePathInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3003", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForFilePathInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForFilePathInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForFilePathInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForFilePathInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForInformationDisclosureVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForInformationDisclosureVulnerabilities.cs index 2942a0d650..bd746d22fd 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForInformationDisclosureVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForInformationDisclosureVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForInformationDisclosureVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3004", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForInformationDisclosureVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForInformationDisclosureVulnerabilitiesMessage), + nameof(ReviewCodeForInformationDisclosureVulnerabilitiesTitle), + nameof(ReviewCodeForInformationDisclosureVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForLdapInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForLdapInjectionVulnerabilities.cs index ca008d6a80..32dbeef9ca 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForLdapInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForLdapInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForLdapInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3005", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForLdapInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForLdapInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForLdapInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForLdapInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForOpenRedirectVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForOpenRedirectVulnerabilities.cs index 23d8def431..0c7365a823 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForOpenRedirectVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForOpenRedirectVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForOpenRedirectVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3007", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForOpenRedirectVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForOpenRedirectVulnerabilitiesMessage), + nameof(ReviewCodeForOpenRedirectVulnerabilitiesTitle), + nameof(ReviewCodeForOpenRedirectVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForRegexInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForRegexInjectionVulnerabilities.cs index 0c8b51fc60..6168514252 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForRegexInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForRegexInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForRegexInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3012", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForRegexInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForRegexInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForRegexInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForRegexInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForSqlInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForSqlInjectionVulnerabilities.cs index 6a7648248f..e1e5f55417 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForSqlInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForSqlInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForSqlInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3001", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForSqlInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForSqlInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForSqlInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForSqlInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXPathInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXPathInjectionVulnerabilities.cs index 31fb8797b9..16df5d9f3a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXPathInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXPathInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForXPathInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3008", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXPathInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXPathInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForXPathInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForXPathInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs index 8c756d1b03..3b4ffe8bab 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForXamlInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3010", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXamlInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXamlInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForXamlInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForXamlInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXmlInjectionVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXmlInjectionVulnerabilities.cs index 2af84c7933..d16c41d211 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXmlInjectionVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXmlInjectionVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForXmlInjectionVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3009", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXmlInjectionVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXmlInjectionVulnerabilitiesMessage), + nameof(ReviewCodeForXmlInjectionVulnerabilitiesTitle), + nameof(ReviewCodeForXmlInjectionVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXssVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXssVulnerabilities.cs index 0b2483fa59..8202140603 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXssVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXssVulnerabilities.cs @@ -7,13 +7,15 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class ReviewCodeForXssVulnerabilities : SourceTriggeredTaintedDataAnalyzerBase { internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA3002", - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXssVulnerabilitiesTitle), - nameof(MicrosoftNetCoreAnalyzersResources.ReviewCodeForXssVulnerabilitiesMessage), + nameof(ReviewCodeForXssVulnerabilitiesTitle), + nameof(ReviewCodeForXssVulnerabilitiesMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs index 5a340210d4..39769cc0fe 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs @@ -16,19 +16,20 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] internal class SetHttpOnlyForHttpCookie : DiagnosticAnalyzer { - internal static DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor Rule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5396", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.SetHttpOnlyForHttpCookie), - nameof(MicrosoftNetCoreAnalyzersResources.SetHttpOnlyForHttpCookieMessage), + nameof(SetHttpOnlyForHttpCookie), + nameof(SetHttpOnlyForHttpCookieMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.SetHttpOnlyForHttpCookieDescription)); + descriptionResourceStringName: nameof(SetHttpOnlyForHttpCookieDescription)); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs index c4ce4fbb2c..41899b0036 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs @@ -10,32 +10,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class SetViewStateUserKey : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5368"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.SetViewStateUserKey), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.SetViewStateUserKeyMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.SetViewStateUserKeyDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(SetViewStateUserKey)), + CreateLocalizableResourceString(nameof(SetViewStateUserKeyMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(SetViewStateUserKeyDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs index cf5a5ff7a4..3a91bfcf52 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs @@ -12,27 +12,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class SslProtocolsAnalyzer : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DeprecatedRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DeprecatedRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5397", - nameof(MicrosoftNetCoreAnalyzersResources.DeprecatedSslProtocolsTitle), - nameof(MicrosoftNetCoreAnalyzersResources.DeprecatedSslProtocolsMessage), + nameof(DeprecatedSslProtocolsTitle), + nameof(DeprecatedSslProtocolsMessage), RuleLevel.IdeHidden_BulkConfigurable, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DeprecatedSslProtocolsDescription)); - internal static DiagnosticDescriptor HardcodedRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(DeprecatedSslProtocolsDescription)); + + internal static readonly DiagnosticDescriptor HardcodedRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5398", - nameof(MicrosoftNetCoreAnalyzersResources.HardcodedSslProtocolsTitle), - nameof(MicrosoftNetCoreAnalyzersResources.HardcodedSslProtocolsMessage), + nameof(HardcodedSslProtocolsTitle), + nameof(HardcodedSslProtocolsMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.HardcodedSslProtocolsDescription)); + descriptionResourceStringName: nameof(HardcodedSslProtocolsDescription)); private readonly ImmutableHashSet HardcodedSslProtocolsMetadataNames = ImmutableHashSet.Create( StringComparer.Ordinal, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs index 9ae1c3d8d9..64030d203b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs @@ -16,29 +16,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseAutoValidateAntiforgeryToken : DiagnosticAnalyzer { - internal static DiagnosticDescriptor UseAutoValidateAntiforgeryTokenRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor UseAutoValidateAntiforgeryTokenRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5391", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.UseAutoValidateAntiforgeryToken), - nameof(MicrosoftNetCoreAnalyzersResources.UseAutoValidateAntiforgeryTokenMessage), + nameof(UseAutoValidateAntiforgeryToken), + nameof(UseAutoValidateAntiforgeryTokenMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.UseAutoValidateAntiforgeryTokenDescription)); - internal static DiagnosticDescriptor MissHttpVerbAttributeRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(UseAutoValidateAntiforgeryTokenDescription)); + + internal static readonly DiagnosticDescriptor MissHttpVerbAttributeRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5395", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.MissHttpVerbAttribute), - nameof(MicrosoftNetCoreAnalyzersResources.MissHttpVerbAttributeMessage), + nameof(MissHttpVerbAttribute), + nameof(MissHttpVerbAttributeMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.MissHttpVerbAttributeDescription)); + descriptionResourceStringName: nameof(MissHttpVerbAttributeDescription)); private static readonly Regex s_AntiForgeryAttributeRegex = new("^[a-zA-Z]*Validate[a-zA-Z]*Anti[Ff]orgery[a-zA-Z]*Attribute$", RegexOptions.Compiled); private static readonly Regex s_AntiForgeryRegex = new("^[a-zA-Z]*Validate[a-zA-Z]*Anti[Ff]orgery[a-zA-Z]*$", RegexOptions.Compiled); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs index c287c1f4dc..f38304742a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs @@ -14,32 +14,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseContainerLevelAccessPolicy : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5377"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseContainerLevelAccessPolicy), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseContainerLevelAccessPolicyMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseContainerLevelAccessPolicyDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: true); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseContainerLevelAccessPolicy)), + CreateLocalizableResourceString(nameof(UseContainerLevelAccessPolicyMessage)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(UseContainerLevelAccessPolicyDescription)), + isPortedFxCopRule: false, + isDataflowRule: true); internal static ImmutableArray<(string nspace, string policyIdentifierName)> NamespaceAndPolicyIdentifierNamePairs = ImmutableArray.Create( ("Blob", "groupPolicyIdentifier"), diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs index 5e1641b029..6b4ad5d9a7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs @@ -12,28 +12,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseDefaultDllImportSearchPathsAttribute : DiagnosticAnalyzer { - internal static DiagnosticDescriptor UseDefaultDllImportSearchPathsAttributeRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor UseDefaultDllImportSearchPathsAttributeRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5392", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.UseDefaultDllImportSearchPathsAttribute), - nameof(MicrosoftNetCoreAnalyzersResources.UseDefaultDllImportSearchPathsAttributeMessage), + nameof(UseDefaultDllImportSearchPathsAttribute), + nameof(UseDefaultDllImportSearchPathsAttributeMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.UseDefaultDllImportSearchPathsAttributeDescription)); - internal static DiagnosticDescriptor DoNotUseUnsafeDllImportSearchPathRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(UseDefaultDllImportSearchPathsAttributeDescription)); + + internal static readonly DiagnosticDescriptor DoNotUseUnsafeDllImportSearchPathRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5393", - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseUnsafeDllImportSearchPath), - nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseUnsafeDllImportSearchPathMessage), + nameof(DoNotUseUnsafeDllImportSearchPath), + nameof(DoNotUseUnsafeDllImportSearchPathMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: false, isReportedAtCompilationEnd: false, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.DoNotUseUnsafeDllImportSearchPathDescription)); + descriptionResourceStringName: nameof(DoNotUseUnsafeDllImportSearchPathDescription)); // DllImportSearchPath.AssemblyDirectory = 2. // DllImportSearchPath.UseDllDirectoryForDependencies = 256. diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs index 2d22e9b8ce..951ed9caab 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs @@ -12,32 +12,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseRSAWithSufficientKeySize : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5385"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseRSAWithSufficientKeySize), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseRSAWithSufficientKeySizeMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseRSAWithSufficientKeySizeDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: false); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseRSAWithSufficientKeySize)), + CreateLocalizableResourceString(nameof(UseRSAWithSufficientKeySizeMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: CreateLocalizableResourceString(nameof(UseRSAWithSufficientKeySizeDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); private static readonly ImmutableHashSet s_RSAAlgorithmNames = ImmutableHashSet.Create( diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs index ee05b64c1d..23aed4a018 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs @@ -17,29 +17,30 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseSecureCookiesASPNetCore : DiagnosticAnalyzer { - internal static DiagnosticDescriptor DefinitelyUseSecureCookiesASPNetCoreRule = SecurityHelpers.CreateDiagnosticDescriptor( + internal static readonly DiagnosticDescriptor DefinitelyUseSecureCookiesASPNetCoreRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5382", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyUseSecureCookiesASPNetCore), - nameof(MicrosoftNetCoreAnalyzersResources.DefinitelyUseSecureCookiesASPNetCoreMessage), + nameof(DefinitelyUseSecureCookiesASPNetCore), + nameof(DefinitelyUseSecureCookiesASPNetCoreMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.UseSecureCookiesASPNetCoreDescription)); - internal static DiagnosticDescriptor MaybeUseSecureCookiesASPNetCoreRule = SecurityHelpers.CreateDiagnosticDescriptor( + descriptionResourceStringName: nameof(UseSecureCookiesASPNetCoreDescription)); + + internal static readonly DiagnosticDescriptor MaybeUseSecureCookiesASPNetCoreRule = SecurityHelpers.CreateDiagnosticDescriptor( "CA5383", - typeof(MicrosoftNetCoreAnalyzersResources), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeUseSecureCookiesASPNetCore), - nameof(MicrosoftNetCoreAnalyzersResources.MaybeUseSecureCookiesASPNetCoreMessage), + nameof(MaybeUseSecureCookiesASPNetCore), + nameof(MaybeUseSecureCookiesASPNetCoreMessage), RuleLevel.Disabled, isPortedFxCopRule: false, isDataflowRule: true, isReportedAtCompilationEnd: true, - descriptionResourceStringName: nameof(MicrosoftNetCoreAnalyzersResources.UseSecureCookiesASPNetCoreDescription)); + descriptionResourceStringName: nameof(UseSecureCookiesASPNetCoreDescription)); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( DefinitelyUseSecureCookiesASPNetCoreRule, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs index f80b60c3b3..bda13aab43 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs @@ -13,32 +13,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseSharedAccessProtocolHttpsOnly : DiagnosticAnalyzer { internal const string DiagnosticId = "CA5376"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseSharedAccessProtocolHttpsOnly), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Message = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseSharedAccessProtocolHttpsOnlyMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_Description = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseSharedAccessProtocolHttpsOnlyDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - s_Message, - DiagnosticCategory.Security, - RuleLevel.Disabled, - description: s_Description, - isPortedFxCopRule: false, - isDataflowRule: true); + + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseSharedAccessProtocolHttpsOnly)), + CreateLocalizableResourceString(nameof(UseSharedAccessProtocolHttpsOnlyMessage)), + DiagnosticCategory.Security, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(UseSharedAccessProtocolHttpsOnlyDescription)), + isPortedFxCopRule: false, + isDataflowRule: true); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs index 40368b4fd7..906295e3f6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + public abstract class UseXmlReaderBase : DiagnosticAnalyzer { /// @@ -26,15 +28,9 @@ public abstract class UseXmlReaderBase : DiagnosticAnalyzer public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); - protected static LocalizableString Description { get; } = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseXmlReaderDescription), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); + protected static LocalizableString Description { get; } = CreateLocalizableResourceString(nameof(UseXmlReaderDescription)); - protected static LocalizableString Message { get; } = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseXmlReaderMessage), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); + protected static LocalizableString Message { get; } = CreateLocalizableResourceString(nameof(UseXmlReaderMessage)); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDataSetReadXml.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDataSetReadXml.cs index 51e2096a43..be239ef5f9 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDataSetReadXml.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDataSetReadXml.cs @@ -6,24 +6,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseXmlReaderForDataSetReadXml : UseXmlReaderBase { internal const string DiagnosticId = "CA5366"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseXmlReaderForDataSetReadXml), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseXmlReaderForDataSetReadXml)), + Message, + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: Description, + isPortedFxCopRule: false, + isDataflowRule: false); protected override string TypeMetadataName => WellKnownTypeNames.SystemDataDataSet; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDeserialize.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDeserialize.cs index 332ab0edd5..989b5ce45e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDeserialize.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForDeserialize.cs @@ -6,24 +6,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseXmlReaderForDeserialize : UseXmlReaderBase { internal const string DiagnosticId = "CA5369"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseXmlReaderForDeserialize), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseXmlReaderForDeserialize)), + Message, + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: Description, + isPortedFxCopRule: false, + isDataflowRule: false); protected override string TypeMetadataName => WellKnownTypeNames.SystemXmlSerializationXmlSerializer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForSchemaRead.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForSchemaRead.cs index 9e8b412557..a8b5af7197 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForSchemaRead.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForSchemaRead.cs @@ -6,24 +6,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseXmlReaderForSchemaRead : UseXmlReaderBase { internal const string DiagnosticId = "CA5371"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseXmlReaderForSchemaRead), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseXmlReaderForSchemaRead)), + Message, + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: Description, + isPortedFxCopRule: false, + isDataflowRule: false); protected override string TypeMetadataName => WellKnownTypeNames.SystemXmlSchemaXmlSchema; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForValidatingReader.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForValidatingReader.cs index b193287a65..06e84e596b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForValidatingReader.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForValidatingReader.cs @@ -6,24 +6,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseXmlReaderForValidatingReader : UseXmlReaderBase { internal const string DiagnosticId = "CA5370"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseXmlReaderForValidatingReader), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseXmlReaderForValidatingReader)), + Message, + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: Description, + isPortedFxCopRule: false, + isDataflowRule: false); protected override string TypeMetadataName => WellKnownTypeNames.SystemXmlXmlValidatingReader; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForXPathDocument.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForXPathDocument.cs index b86760186b..2c06d15900 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForXPathDocument.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderForXPathDocument.cs @@ -6,24 +6,22 @@ namespace Microsoft.NetCore.Analyzers.Security { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseXmlReaderForXPathDocument : UseXmlReaderBase { internal const string DiagnosticId = "CA5372"; - private static readonly LocalizableString s_Title = new LocalizableResourceString( - nameof(MicrosoftNetCoreAnalyzersResources.UseXmlReaderForXPathDocument), - MicrosoftNetCoreAnalyzersResources.ResourceManager, - typeof(MicrosoftNetCoreAnalyzersResources)); - internal static DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( - DiagnosticId, - s_Title, - Message, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - description: Description, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RealRule = DiagnosticDescriptorHelper.Create( + DiagnosticId, + CreateLocalizableResourceString(nameof(UseXmlReaderForXPathDocument)), + Message, + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + description: Description, + isPortedFxCopRule: false, + isDataflowRule: false); protected override string TypeMetadataName => WellKnownTypeNames.SystemXmlXPathXPathDocument; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs index eaa81454f2..1b6cd06c41 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs @@ -9,6 +9,8 @@ namespace Microsoft.NetCore.Analyzers.Tasks { + using static MicrosoftNetCoreAnalyzersResources; + /// CA2012: Use ValueTasks correctly. [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotCreateTaskCompletionSourceWithWrongArguments : DiagnosticAnalyzer @@ -16,11 +18,11 @@ public sealed class DoNotCreateTaskCompletionSourceWithWrongArguments : Diagnost internal const string RuleId = "CA2247"; internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCreateTaskCompletionSourceWithWrongArgumentsTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCreateTaskCompletionSourceWithWrongArgumentsMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(DoNotCreateTaskCompletionSourceWithWrongArgumentsTitle)), + CreateLocalizableResourceString(nameof(DoNotCreateTaskCompletionSourceWithWrongArgumentsMessage)), DiagnosticCategory.Usage, RuleLevel.BuildWarning, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCreateTaskCompletionSourceWithWrongArgumentsDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(DoNotCreateTaskCompletionSourceWithWrongArgumentsDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs index 1a4c45f534..f867f54b0b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs @@ -10,6 +10,8 @@ namespace Microsoft.NetCore.Analyzers.Tasks { + using static MicrosoftNetCoreAnalyzersResources; + /// /// CA2008: Do not create tasks without passing a TaskScheduler /// @@ -18,19 +20,15 @@ public sealed class DoNotCreateTasksWithoutPassingATaskSchedulerAnalyzer : Diagn { internal const string RuleId = "CA2008"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCreateTasksWithoutPassingATaskSchedulerTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCreateTasksWithoutPassingATaskSchedulerMessage), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.DoNotCreateTasksWithoutPassingATaskSchedulerDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Reliability, - RuleLevel.CandidateForRemoval, // Superseded by VS threading analyzers - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotCreateTasksWithoutPassingATaskSchedulerTitle)), + CreateLocalizableResourceString(nameof(DoNotCreateTasksWithoutPassingATaskSchedulerMessage)), + DiagnosticCategory.Reliability, + RuleLevel.CandidateForRemoval, // Superseded by VS threading analyzers + description: CreateLocalizableResourceString(nameof(DoNotCreateTasksWithoutPassingATaskSchedulerDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs index 1cbbadcf1f..d2b09951d3 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs @@ -15,45 +15,51 @@ namespace Microsoft.NetCore.Analyzers.Tasks { + using static MicrosoftNetCoreAnalyzersResources; + /// CA2012: Use ValueTasks correctly. [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class UseValueTasksCorrectlyAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA2012"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseValueTasksCorrectlyTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseValueTasksCorrectlyDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(UseValueTasksCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(UseValueTasksCorrectlyDescription)); - internal static readonly DiagnosticDescriptor GeneralRule = DiagnosticDescriptorHelper.Create(RuleId, + internal static readonly DiagnosticDescriptor GeneralRule = DiagnosticDescriptorHelper.Create( + RuleId, s_localizableTitle, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseValueTasksCorrectlyMessage_General), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(UseValueTasksCorrectlyMessage_General)), DiagnosticCategory.Reliability, RuleLevel.IdeSuggestion, s_localizableDescription, isPortedFxCopRule: false, isDataflowRule: false); - internal static readonly DiagnosticDescriptor UnconsumedRule = DiagnosticDescriptorHelper.Create(RuleId, + internal static readonly DiagnosticDescriptor UnconsumedRule = DiagnosticDescriptorHelper.Create( + RuleId, s_localizableTitle, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseValueTasksCorrectlyMessage_Unconsumed), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(UseValueTasksCorrectlyMessage_Unconsumed)), DiagnosticCategory.Reliability, RuleLevel.IdeSuggestion, s_localizableDescription, isPortedFxCopRule: false, isDataflowRule: false); - internal static readonly DiagnosticDescriptor DoubleConsumptionRule = DiagnosticDescriptorHelper.Create(RuleId, + internal static readonly DiagnosticDescriptor DoubleConsumptionRule = DiagnosticDescriptorHelper.Create( + RuleId, s_localizableTitle, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseValueTasksCorrectlyMessage_DoubleConsumption), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(UseValueTasksCorrectlyMessage_DoubleConsumption)), DiagnosticCategory.Reliability, RuleLevel.IdeSuggestion, s_localizableDescription, isPortedFxCopRule: false, isDataflowRule: false); - internal static readonly DiagnosticDescriptor AccessingIncompleteResultRule = DiagnosticDescriptorHelper.Create(RuleId, + internal static readonly DiagnosticDescriptor AccessingIncompleteResultRule = DiagnosticDescriptorHelper.Create( + RuleId, s_localizableTitle, - new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.UseValueTasksCorrectlyMessage_AccessingIncompleteResult), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)), + CreateLocalizableResourceString(nameof(UseValueTasksCorrectlyMessage_AccessingIncompleteResult)), DiagnosticCategory.Reliability, RuleLevel.IdeSuggestion, s_localizableDescription, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs index d13c857f2a..022e83b98c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs @@ -9,22 +9,20 @@ namespace Microsoft.NetCore.Analyzers.Usage { + using static MicrosoftNetCoreAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class ProvideCorrectArgumentToEnumHasFlag : DiagnosticAnalyzer { internal const string RuleId = "CA2248"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideCorrectArgumentToEnumHasFlagTitle), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDifferentType = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideCorrectArgumentToEnumHasFlagMessageDifferentType), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetCoreAnalyzersResources.ProvideCorrectArgumentToEnumHasFlagDescription), MicrosoftNetCoreAnalyzersResources.ResourceManager, typeof(MicrosoftNetCoreAnalyzersResources)); - - internal static DiagnosticDescriptor DifferentTypeRule = DiagnosticDescriptorHelper.Create( + internal static readonly DiagnosticDescriptor DifferentTypeRule = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessageDifferentType, + CreateLocalizableResourceString(nameof(ProvideCorrectArgumentToEnumHasFlagTitle)), + CreateLocalizableResourceString(nameof(ProvideCorrectArgumentToEnumHasFlagMessageDifferentType)), DiagnosticCategory.Usage, RuleLevel.IdeSuggestion, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(ProvideCorrectArgumentToEnumHasFlagDescription)), isPortedFxCopRule: false, isDataflowRule: false); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs index e4f672f1fd..7044cf3b98 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs @@ -13,20 +13,16 @@ public abstract class AvoidDuplicateAcceleratorsAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1301"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.AvoidDuplicateAcceleratorsTitle), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.AvoidDuplicateAcceleratorsMessage), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.AvoidDuplicateAcceleratorsDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Globalization, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(AvoidDuplicateAcceleratorsTitle)), + CreateLocalizableResourceString(nameof(AvoidDuplicateAcceleratorsMessage)), + DiagnosticCategory.Globalization, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(AvoidDuplicateAcceleratorsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs index 9f22d0287f..3add586dc0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs @@ -13,20 +13,16 @@ public abstract class CallBaseClassMethodsOnISerializableTypesAnalyzer : Diagnos { internal const string RuleId = "CA2236"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.CallBaseClassMethodsOnISerializableTypesTitle), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.CallBaseClassMethodsOnISerializableTypesMessage), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.CallBaseClassMethodsOnISerializableTypesDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(CallBaseClassMethodsOnISerializableTypesTitle)), + CreateLocalizableResourceString(nameof(CallBaseClassMethodsOnISerializableTypesMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(CallBaseClassMethodsOnISerializableTypesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs index 2940ffeb01..b4bf0b3e08 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs @@ -8,24 +8,23 @@ namespace Microsoft.NetFramework.Analyzers { + using static MicrosoftNetFrameworkAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] internal sealed class DoNotCatchCorruptedStateExceptionsAnalyzer : DoNotCatchGeneralUnlessRethrownAnalyzer { internal const string RuleId = "CA2153"; private const string MethodAttributeTypeName = "System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotCatchCorruptedStateExceptions), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotCatchCorruptedStateExceptionsMessage), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotCatchCorruptedStateExceptionsDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Security, - RuleLevel.CandidateForRemoval, // Need confirmation from security team if this is no longer a security concern - description: s_localizableDescription, - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotCatchCorruptedStateExceptions)), + CreateLocalizableResourceString(nameof(DoNotCatchCorruptedStateExceptionsMessage)), + DiagnosticCategory.Security, + RuleLevel.CandidateForRemoval, // Need confirmation from security team if this is no longer a security concern + description: CreateLocalizableResourceString(nameof(DoNotCatchCorruptedStateExceptionsDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs index cdde8b07df..6ae5d2ced1 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs @@ -13,20 +13,16 @@ public abstract class DoNotMarkServicedComponentsWithWebMethodAnalyzer : Diagnos { internal const string RuleId = "CA2212"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotMarkServicedComponentsWithWebMethodTitle), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotMarkServicedComponentsWithWebMethodMessage), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotMarkServicedComponentsWithWebMethodDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(DoNotMarkServicedComponentsWithWebMethodTitle)), + CreateLocalizableResourceString(nameof(DoNotMarkServicedComponentsWithWebMethodMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(DoNotMarkServicedComponentsWithWebMethodDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs index e034e63c7e..425bfb82c4 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs @@ -15,6 +15,8 @@ namespace Microsoft.NetFramework.Analyzers { + using static MicrosoftNetFrameworkAnalyzersResources; + /// /// Secure DTD processing and entity resolution in XML /// @@ -24,39 +26,40 @@ public sealed class DoNotUseInsecureDtdProcessingAnalyzer : DiagnosticAnalyzer internal const string RuleId = "CA3075"; // Use 'DiagnosticDescriptorHelper.Create' for one of the descriptors so the rule "CA3075" can be captured in AnalyzerReleases.*.md - internal static DiagnosticDescriptor RuleXmlDocumentWithNoSecureResolver = - DiagnosticDescriptorHelper.Create(RuleId, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.InsecureXmlDtdProcessing)), - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.XmlDocumentWithNoSecureResolverMessage)), - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseInsecureDtdProcessingDescription)), - isPortedFxCopRule: false, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor RuleXmlDocumentWithNoSecureResolver = + DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(InsecureXmlDtdProcessing)), + CreateLocalizableResourceString(nameof(XmlDocumentWithNoSecureResolverMessage)), + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + CreateLocalizableResourceString(nameof(DoNotUseInsecureDtdProcessingDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); - internal static DiagnosticDescriptor RuleXmlTextReaderConstructedWithNoSecureResolution = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.XmlTextReaderConstructedWithNoSecureResolutionMessage))); + internal static readonly DiagnosticDescriptor RuleXmlTextReaderConstructedWithNoSecureResolution = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(XmlTextReaderConstructedWithNoSecureResolutionMessage))); - internal static DiagnosticDescriptor RuleDoNotUseDtdProcessingOverloads = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseDtdProcessingOverloadsMessage))); + internal static readonly DiagnosticDescriptor RuleDoNotUseDtdProcessingOverloads = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(DoNotUseDtdProcessingOverloadsMessage))); - internal static DiagnosticDescriptor RuleXmlReaderCreateWrongOverload = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.XmlReaderCreateWrongOverloadMessage))); + internal static readonly DiagnosticDescriptor RuleXmlReaderCreateWrongOverload = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(XmlReaderCreateWrongOverloadMessage))); - internal static DiagnosticDescriptor RuleXmlReaderCreateInsecureInput = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.XmlReaderCreateInsecureInputMessage))); + internal static readonly DiagnosticDescriptor RuleXmlReaderCreateInsecureInput = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(XmlReaderCreateInsecureInputMessage))); - internal static DiagnosticDescriptor RuleXmlReaderCreateInsecureConstructed = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.XmlReaderCreateInsecureConstructedMessage))); + internal static readonly DiagnosticDescriptor RuleXmlReaderCreateInsecureConstructed = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(XmlReaderCreateInsecureConstructedMessage))); - internal static DiagnosticDescriptor RuleXmlTextReaderSetInsecureResolution = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.XmlTextReaderSetInsecureResolutionMessage))); + internal static readonly DiagnosticDescriptor RuleXmlTextReaderSetInsecureResolution = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(XmlTextReaderSetInsecureResolutionMessage))); - internal static DiagnosticDescriptor RuleDoNotUseSetInnerXml = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseSetInnerXmlMessage))); + internal static readonly DiagnosticDescriptor RuleDoNotUseSetInnerXml = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(DoNotUseSetInnerXmlMessage))); - internal static DiagnosticDescriptor RuleReviewDtdProcessingProperties = - CreateDiagnosticDescriptor(SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.ReviewDtdProcessingPropertiesMessage))); + internal static readonly DiagnosticDescriptor RuleReviewDtdProcessingProperties = + CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(ReviewDtdProcessingPropertiesMessage))); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( @@ -716,14 +719,15 @@ private static bool ReferencesAnyTargetType(CompilationSecurityTypes types) private static DiagnosticDescriptor CreateDiagnosticDescriptor(LocalizableResourceString messageFormat) { - return DiagnosticDescriptorHelper.Create(RuleId, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.InsecureXmlDtdProcessing)), - messageFormat, - DiagnosticCategory.Security, - RuleLevel.IdeHidden_BulkConfigurable, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseInsecureDtdProcessingDescription)), - isPortedFxCopRule: false, - isDataflowRule: false); + return DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(InsecureXmlDtdProcessing)), + messageFormat, + DiagnosticCategory.Security, + RuleLevel.IdeHidden_BulkConfigurable, + CreateLocalizableResourceString(nameof(DoNotUseInsecureDtdProcessingDescription)), + isPortedFxCopRule: false, + isDataflowRule: false); } } } diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs index 74efb35d15..0f1468ae1b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs @@ -14,19 +14,21 @@ namespace Microsoft.NetFramework.Analyzers { + using static MicrosoftNetFrameworkAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseInsecureDtdProcessingInApiDesignAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA3077"; - internal static DiagnosticDescriptor RuleDoNotUseInsecureDtdProcessingInApiDesign = + internal static readonly DiagnosticDescriptor RuleDoNotUseInsecureDtdProcessingInApiDesign = DiagnosticDescriptorHelper.Create( RuleId, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.InsecureDtdProcessingInApiDesign)), - nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseInsecureDtdProcessingGenericMessage), + CreateLocalizableResourceString(nameof(InsecureDtdProcessingInApiDesign)), + nameof(DoNotUseInsecureDtdProcessingGenericMessage), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseInsecureDtdProcessingInApiDesignDescription)), + CreateLocalizableResourceString(nameof(DoNotUseInsecureDtdProcessingInApiDesignDescription)), isPortedFxCopRule: false, isDataflowRule: false); @@ -149,8 +151,8 @@ private void AnalyzeBlockForXmlDocumentDerivedTypeConstructorDecl( context.ReportDiagnostic( methodSymbol.CreateDiagnostic( RuleDoNotUseInsecureDtdProcessingInApiDesign, - SecurityDiagnosticHelpers.GetLocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.XmlDocumentDerivedClassConstructorNoSecureXmlResolverMessage), + CreateLocalizableResourceString( + nameof(XmlDocumentDerivedClassConstructorNoSecureXmlResolverMessage), SecurityDiagnosticHelpers.GetNonEmptyParentName(methodSymbol) ) ) @@ -188,8 +190,8 @@ private void AnalyzeBlockForXmlDocumentDerivedTypeMethodDecl(OperationBlockStart context.ReportDiagnostic( assignment.CreateDiagnostic( RuleDoNotUseInsecureDtdProcessingInApiDesign, - SecurityDiagnosticHelpers.GetLocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.XmlDocumentDerivedClassSetInsecureXmlResolverInMethodMessage), + CreateLocalizableResourceString( + nameof(XmlDocumentDerivedClassSetInsecureXmlResolverInMethodMessage), methodSymbol.Name ) ) @@ -265,8 +267,8 @@ operation is not IFieldReferenceOperation fieldReference context.ReportDiagnostic( methodSymbol.CreateDiagnostic( RuleDoNotUseInsecureDtdProcessingInApiDesign, - SecurityDiagnosticHelpers.GetLocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.XmlTextReaderDerivedClassConstructorNoSecureSettingsMessage), + CreateLocalizableResourceString( + nameof(XmlTextReaderDerivedClassConstructorNoSecureSettingsMessage), SecurityDiagnosticHelpers.GetNonEmptyParentName(methodSymbol) ) ) @@ -374,8 +376,8 @@ operation is IFieldReferenceOperation fieldReference context.ReportDiagnostic( locations.OrderBy(l => l.SourceSpan.Start).CreateDiagnostic( RuleDoNotUseInsecureDtdProcessingInApiDesign, - SecurityDiagnosticHelpers.GetLocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.XmlTextReaderDerivedClassSetInsecureSettingsInMethodMessage), + CreateLocalizableResourceString( + nameof(XmlTextReaderDerivedClassSetInsecureSettingsInMethodMessage), methodSymbol.Name ) ) @@ -412,8 +414,8 @@ private void AnalyzeSymbolForXmlDocumentDerivedType(SymbolAnalysisContext contex context.ReportDiagnostic( typeSymbol.CreateDiagnostic( RuleDoNotUseInsecureDtdProcessingInApiDesign, - SecurityDiagnosticHelpers.GetLocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.XmlDocumentDerivedClassNoConstructorMessage), + CreateLocalizableResourceString( + nameof(XmlDocumentDerivedClassNoConstructorMessage), typeSymbol.Name ) ) @@ -452,8 +454,8 @@ private void AnalyzeSymbolForXmlTextReaderDerivedType(SymbolAnalysisContext cont context.ReportDiagnostic( typeSymbol.CreateDiagnostic( RuleDoNotUseInsecureDtdProcessingInApiDesign, - SecurityDiagnosticHelpers.GetLocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.XmlTextReaderDerivedClassNoConstructorMessage), + CreateLocalizableResourceString( + nameof(XmlTextReaderDerivedClassNoConstructorMessage), symbol.Name ) ) diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs index 080896218a..1167be7093 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs @@ -12,19 +12,21 @@ namespace Microsoft.NetFramework.Analyzers { + using static MicrosoftNetFrameworkAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotUseInsecureXSLTScriptExecutionAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA3076"; - internal static DiagnosticDescriptor RuleDoNotUseInsecureXSLTScriptExecution = + internal static readonly DiagnosticDescriptor RuleDoNotUseInsecureXSLTScriptExecution = DiagnosticDescriptorHelper.Create( RuleId, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.InsecureXsltScriptProcessingMessage)), - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseInsecureDtdProcessingGenericMessage)), + CreateLocalizableResourceString(nameof(InsecureXsltScriptProcessingMessage)), + CreateLocalizableResourceString(nameof(DoNotUseInsecureDtdProcessingGenericMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, - SecurityDiagnosticHelpers.GetLocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.DoNotUseInsecureXSLTScriptExecutionDescription)), + CreateLocalizableResourceString(nameof(DoNotUseInsecureXSLTScriptExecutionDescription)), isPortedFxCopRule: false, isDataflowRule: false); @@ -163,10 +165,10 @@ public void AnalyzeNodeForXslCompiledTransformLoad(IMethodSymbol methodSymbol, if (!isSecureSettings && !isSecureResolver) { - LocalizableResourceString message = SecurityDiagnosticHelpers.GetLocalizableResourceString( + LocalizableResourceString message = CreateLocalizableResourceString( isSetInBlock - ? nameof(MicrosoftNetFrameworkAnalyzersResources.XslCompiledTransformLoadInsecureConstructedMessage) - : nameof(MicrosoftNetFrameworkAnalyzersResources.XslCompiledTransformLoadInsecureInputMessage), + ? nameof(XslCompiledTransformLoadInsecureConstructedMessage) + : nameof(XslCompiledTransformLoadInsecureInputMessage), SecurityDiagnosticHelpers.GetNonEmptyParentName(_enclosingSymbol) ); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Helpers/SecurityDiagnosticHelpers.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Helpers/SecurityDiagnosticHelpers.cs index d644f04fb7..1cccd0cd1d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Helpers/SecurityDiagnosticHelpers.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Helpers/SecurityDiagnosticHelpers.cs @@ -311,15 +311,5 @@ public static string GetNonEmptyParentName(ISymbol symbol) } return new Version(4, 0); } - - public static LocalizableResourceString GetLocalizableResourceString(string resourceName) - { - return new LocalizableResourceString(resourceName, MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - } - - public static LocalizableResourceString GetLocalizableResourceString(string resourceName, params string[] formatArguments) - { - return new LocalizableResourceString(resourceName, MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources), formatArguments); - } } } diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs index 6b84a5bf8c..cf8532c39b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs @@ -8,45 +8,19 @@ namespace Microsoft.NetFramework.Analyzers { + using static MicrosoftNetFrameworkAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public partial class MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA3147"; - private static readonly LocalizableString Title = new LocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.MarkVerbHandlersWithValidateAntiforgeryTokenTitle), - MicrosoftNetFrameworkAnalyzersResources.ResourceManager, - typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString NoVerbsMessage = new LocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.MarkVerbHandlersWithValidateAntiforgeryTokenNoVerbsMessage), - MicrosoftNetFrameworkAnalyzersResources.ResourceManager, - typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString NoVerbsNoTokenMessage = new LocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.MarkVerbHandlersWithValidateAntiforgeryTokenNoVerbsNoTokenMessage), - MicrosoftNetFrameworkAnalyzersResources.ResourceManager, - typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString GetAndTokenMessage = new LocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.MarkVerbHandlersWithValidateAntiforgeryTokenGetAndTokenMessage), - MicrosoftNetFrameworkAnalyzersResources.ResourceManager, - typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString GetAndOtherAndTokenMessage = new LocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.MarkVerbHandlersWithValidateAntiforgeryTokenGetAndOtherAndTokenMessage), - MicrosoftNetFrameworkAnalyzersResources.ResourceManager, - typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString VerbsAndNoTokenMessage = new LocalizableResourceString( - nameof(MicrosoftNetFrameworkAnalyzersResources.MarkVerbHandlersWithValidateAntiforgeryTokenVerbsAndNoTokenMessage), - MicrosoftNetFrameworkAnalyzersResources.ResourceManager, - typeof(MicrosoftNetFrameworkAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(MarkVerbHandlersWithValidateAntiforgeryTokenTitle)); internal static readonly DiagnosticDescriptor NoVerbsRule = DiagnosticDescriptorHelper.Create( RuleId, - Title, - NoVerbsMessage, + s_localizableTitle, + CreateLocalizableResourceString(nameof(MarkVerbHandlersWithValidateAntiforgeryTokenNoVerbsMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, description: null, @@ -55,8 +29,8 @@ public partial class MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer : Diag internal static readonly DiagnosticDescriptor NoVerbsNoTokenRule = DiagnosticDescriptorHelper.Create( RuleId, - Title, - NoVerbsNoTokenMessage, + s_localizableTitle, + CreateLocalizableResourceString(nameof(MarkVerbHandlersWithValidateAntiforgeryTokenNoVerbsNoTokenMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, description: null, @@ -65,8 +39,8 @@ public partial class MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer : Diag internal static readonly DiagnosticDescriptor GetAndTokenRule = DiagnosticDescriptorHelper.Create( RuleId, - Title, - GetAndTokenMessage, + s_localizableTitle, + CreateLocalizableResourceString(nameof(MarkVerbHandlersWithValidateAntiforgeryTokenGetAndTokenMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, description: null, @@ -75,8 +49,8 @@ public partial class MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer : Diag internal static readonly DiagnosticDescriptor GetAndOtherAndTokenRule = DiagnosticDescriptorHelper.Create( RuleId, - Title, - GetAndOtherAndTokenMessage, + s_localizableTitle, + CreateLocalizableResourceString(nameof(MarkVerbHandlersWithValidateAntiforgeryTokenGetAndOtherAndTokenMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, description: null, @@ -85,8 +59,8 @@ public partial class MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer : Diag internal static readonly DiagnosticDescriptor VerbsAndNoTokenRule = DiagnosticDescriptorHelper.Create( RuleId, - Title, - VerbsAndNoTokenMessage, + s_localizableTitle, + CreateLocalizableResourceString(nameof(MarkVerbHandlersWithValidateAntiforgeryTokenVerbsAndNoTokenMessage)), DiagnosticCategory.Security, RuleLevel.IdeHidden_BulkConfigurable, description: null, diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs index b63e32df8e..d819e23602 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs @@ -13,20 +13,16 @@ public abstract class MarkWindowsFormsEntryPointsWithStaThreadAnalyzer : Diagnos { internal const string RuleId = "CA2232"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.MarkWindowsFormsEntryPointsWithStaThreadTitle), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.MarkWindowsFormsEntryPointsWithStaThreadMessage), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.MarkWindowsFormsEntryPointsWithStaThreadDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Usage, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(MarkWindowsFormsEntryPointsWithStaThreadTitle)), + CreateLocalizableResourceString(nameof(MarkWindowsFormsEntryPointsWithStaThreadMessage)), + DiagnosticCategory.Usage, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(MarkWindowsFormsEntryPointsWithStaThreadDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MicrosoftNetFrameworkAnalyzersResources.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MicrosoftNetFrameworkAnalyzersResources.cs new file mode 100644 index 0000000000..de0cf45f72 --- /dev/null +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MicrosoftNetFrameworkAnalyzersResources.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. + +using System; +using Microsoft.CodeAnalysis; + +namespace Microsoft.NetFramework.Analyzers +{ + internal partial class MicrosoftNetFrameworkAnalyzersResources + { + private static readonly Type s_resourcesType = typeof(MicrosoftNetFrameworkAnalyzersResources); + + 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); + } +} diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs index 070e0ac56c..cb4a2b5bbd 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs @@ -13,20 +13,16 @@ public abstract class SetLocaleForDataTypesAnalyzer : DiagnosticAnalyzer { internal const string RuleId = "CA1306"; - /*private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.SetLocaleForDataTypesTitle), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.SetLocaleForDataTypesMessage), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.SetLocaleForDataTypesDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Globalization, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + /*internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(SetLocaleForDataTypesTitle)), + CreateLocalizableResourceString(nameof(SetLocaleForDataTypesMessage)), + DiagnosticCategory.Globalization, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(SetLocaleForDataTypesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs index 8a97273912..b8a4143545 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs @@ -13,20 +13,16 @@ public abstract class SpecifyMessageBoxOptionsAnalyzer : DiagnosticAnalyzer { /*internal const string RuleId = "CA1300"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.SpecifyMessageBoxOptionsTitle), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.SpecifyMessageBoxOptionsMessage), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.SpecifyMessageBoxOptionsDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.Globalization, - RuleLevel.Disabled, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false, - isEnabledByDefaultInFxCopAnalyzers: false);*/ + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(SpecifyMessageBoxOptionsTitle)), + CreateLocalizableResourceString(nameof(SpecifyMessageBoxOptionsMessage)), + DiagnosticCategory.Globalization, + RuleLevel.Disabled, + description: CreateLocalizableResourceString(nameof(SpecifyMessageBoxOptionsDescription)), + isPortedFxCopRule: true, + isDataflowRule: false, + isEnabledByDefaultInFxCopAnalyzers: false);*/ public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; //ImmutableArray.Create(Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs index 3e819dec15..2e4cc06ede 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs @@ -12,6 +12,8 @@ namespace Microsoft.NetFramework.Analyzers { + using static MicrosoftNetFrameworkAnalyzersResources; + /// /// CA1058: Types should not extend certain base types /// @@ -20,17 +22,15 @@ public sealed class TypesShouldNotExtendCertainBaseTypesAnalyzer : DiagnosticAna { internal const string RuleId = "CA1058"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.TypesShouldNotExtendCertainBaseTypesTitle), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(MicrosoftNetFrameworkAnalyzersResources.TypesShouldNotExtendCertainBaseTypesDescription), MicrosoftNetFrameworkAnalyzersResources.ResourceManager, typeof(MicrosoftNetFrameworkAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(RuleId, - s_localizableTitle, - "{0}", - DiagnosticCategory.Design, - RuleLevel.CandidateForRemoval, - description: s_localizableDescription, - isPortedFxCopRule: true, - isDataflowRule: false); + internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create( + RuleId, + CreateLocalizableResourceString(nameof(TypesShouldNotExtendCertainBaseTypesTitle)), + "{0}", + DiagnosticCategory.Design, + RuleLevel.CandidateForRemoval, + description: CreateLocalizableResourceString(nameof(TypesShouldNotExtendCertainBaseTypesDescription)), + isPortedFxCopRule: true, + isDataflowRule: false); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); From ad28ea05f2cc00f88487be3057b4bf4b5aaa8d4b Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 16:33:37 -0700 Subject: [PATCH 07/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.PublicApiAnalyzers --- .../Analyzers/DeclarePublicApiAnalyzer.cs | 74 ++++++++++--------- .../Analyzers/PublicApiAnalyzerResources.cs | 17 +++++ 2 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 src/PublicApiAnalyzers/Core/Analyzers/PublicApiAnalyzerResources.cs diff --git a/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs b/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs index 0708c63651..80676ba56f 100644 --- a/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs +++ b/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs @@ -16,6 +16,8 @@ namespace Microsoft.CodeAnalysis.PublicApiAnalyzers { + using static PublicApiAnalyzerResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed partial class DeclarePublicApiAnalyzer : DiagnosticAnalyzer { @@ -41,52 +43,52 @@ public sealed partial class DeclarePublicApiAnalyzer : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor DeclareNewApiRule = new( id: DiagnosticIds.DeclarePublicApiRuleId, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.DeclarePublicApiTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.DeclarePublicApiMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(DeclarePublicApiTitle)), + messageFormat: CreateLocalizableResourceString(nameof(DeclarePublicApiMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.DeclarePublicApiDescription), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(DeclarePublicApiDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor AnnotateApiRule = new( id: DiagnosticIds.AnnotatePublicApiRuleId, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.AnnotatePublicApiTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.AnnotatePublicApiMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(AnnotatePublicApiTitle)), + messageFormat: CreateLocalizableResourceString(nameof(AnnotatePublicApiMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.AnnotatePublicApiDescription), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(AnnotatePublicApiDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor ObliviousApiRule = new( id: DiagnosticIds.ObliviousPublicApiRuleId, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ObliviousPublicApiTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ObliviousPublicApiMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(ObliviousPublicApiTitle)), + messageFormat: CreateLocalizableResourceString(nameof(ObliviousPublicApiMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ObliviousPublicApiDescription), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(ObliviousPublicApiDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor RemoveDeletedApiRule = new( id: DiagnosticIds.RemoveDeletedApiRuleId, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.RemoveDeletedApiTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.RemoveDeletedApiMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(RemoveDeletedApiTitle)), + messageFormat: CreateLocalizableResourceString(nameof(RemoveDeletedApiMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.RemoveDeletedApiDescription), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(RemoveDeletedApiDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md", customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); internal static readonly DiagnosticDescriptor RemovedApiIsNotActuallyRemovedRule = new( id: DiagnosticIds.RemovedApiIsNotActuallyRemovedRuleId, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.RemovedApiIsNotActuallyRemovedTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.RemovedApiIsNotActuallyRemovedMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(RemovedApiIsNotActuallyRemovedTitle)), + messageFormat: CreateLocalizableResourceString(nameof(RemovedApiIsNotActuallyRemovedMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, @@ -95,18 +97,18 @@ public sealed partial class DeclarePublicApiAnalyzer : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor ExposedNoninstantiableType = new( id: DiagnosticIds.ExposedNoninstantiableTypeRuleId, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ExposedNoninstantiableTypeTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ExposedNoninstantiableTypeMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(ExposedNoninstantiableTypeTitle)), + messageFormat: CreateLocalizableResourceString(nameof(ExposedNoninstantiableTypeMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor PublicApiFilesInvalid = new( id: DiagnosticIds.PublicApiFilesInvalid, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.PublicApiFilesInvalidTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.PublicApiFilesInvalidMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(PublicApiFilesInvalidTitle)), + messageFormat: CreateLocalizableResourceString(nameof(PublicApiFilesInvalidMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, @@ -115,8 +117,8 @@ public sealed partial class DeclarePublicApiAnalyzer : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor PublicApiFileMissing = new( id: DiagnosticIds.PublicApiFileMissing, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.PublicApiFileMissingTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.PublicApiFileMissingMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(PublicApiFileMissingTitle)), + messageFormat: CreateLocalizableResourceString(nameof(PublicApiFileMissingMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, @@ -125,8 +127,8 @@ public sealed partial class DeclarePublicApiAnalyzer : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor DuplicateSymbolInApiFiles = new( id: DiagnosticIds.DuplicatedSymbolInPublicApiFiles, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.DuplicateSymbolsInPublicApiFilesTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.DuplicateSymbolsInPublicApiFilesMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(DuplicateSymbolsInPublicApiFilesTitle)), + messageFormat: CreateLocalizableResourceString(nameof(DuplicateSymbolsInPublicApiFilesMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, @@ -135,34 +137,34 @@ public sealed partial class DeclarePublicApiAnalyzer : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor AvoidMultipleOverloadsWithOptionalParameters = new( id: DiagnosticIds.AvoidMultipleOverloadsWithOptionalParameters, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.AvoidMultipleOverloadsWithOptionalParametersTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.AvoidMultipleOverloadsWithOptionalParametersMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(AvoidMultipleOverloadsWithOptionalParametersTitle)), + messageFormat: CreateLocalizableResourceString(nameof(AvoidMultipleOverloadsWithOptionalParametersMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: @"https://github.com/dotnet/roslyn/blob/main/docs/Adding%20Optional%20Parameters%20in%20Public%20API.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor OverloadWithOptionalParametersShouldHaveMostParameters = new( id: DiagnosticIds.OverloadWithOptionalParametersShouldHaveMostParameters, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.OverloadWithOptionalParametersShouldHaveMostParametersTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.OverloadWithOptionalParametersShouldHaveMostParametersMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(OverloadWithOptionalParametersShouldHaveMostParametersTitle)), + messageFormat: CreateLocalizableResourceString(nameof(OverloadWithOptionalParametersShouldHaveMostParametersMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: @"https://github.com/dotnet/roslyn/blob/main/docs/Adding%20Optional%20Parameters%20in%20Public%20API.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor ShouldAnnotateApiFilesRule = new( id: DiagnosticIds.ShouldAnnotateApiFilesRuleId, - title: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ShouldAnnotateApiFilesTitle), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), - messageFormat: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ShouldAnnotateApiFilesMessage), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + title: CreateLocalizableResourceString(nameof(ShouldAnnotateApiFilesTitle)), + messageFormat: CreateLocalizableResourceString(nameof(ShouldAnnotateApiFilesMessage)), category: "ApiDesign", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: new LocalizableResourceString(nameof(PublicApiAnalyzerResources.ShouldAnnotateApiFilesDescription), PublicApiAnalyzerResources.ResourceManager, typeof(PublicApiAnalyzerResources)), + description: CreateLocalizableResourceString(nameof(ShouldAnnotateApiFilesDescription)), helpLinkUri: "https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md", - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly SymbolDisplayFormat ShortSymbolNameFormat = new( diff --git a/src/PublicApiAnalyzers/Core/Analyzers/PublicApiAnalyzerResources.cs b/src/PublicApiAnalyzers/Core/Analyzers/PublicApiAnalyzerResources.cs new file mode 100644 index 0000000000..f7ffbb2e54 --- /dev/null +++ b/src/PublicApiAnalyzers/Core/Analyzers/PublicApiAnalyzerResources.cs @@ -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.PublicApiAnalyzers +{ + internal partial class PublicApiAnalyzerResources + { + private static readonly Type s_resourcesType = typeof(PublicApiAnalyzerResources); + + 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); + } +} From 34babd10f9a38a4ead4b892e7c61c03f4829a379 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 16:40:59 -0700 Subject: [PATCH 08/16] Reduce .cctor IL size in Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers --- ...asicOverrideEqualsOnOverloadingOperatorEquals.vb | 13 ++++--------- .../BasicOverrideGetHashCodeOnOverridingEquals.vb | 13 ++++--------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideEqualsOnOverloadingOperatorEquals.vb b/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideEqualsOnOverloadingOperatorEquals.vb index d3f141b47c..2ff87d4d7b 100644 --- a/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideEqualsOnOverloadingOperatorEquals.vb +++ b/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideEqualsOnOverloadingOperatorEquals.vb @@ -5,7 +5,7 @@ Imports Analyzer.Utilities Imports Analyzer.Utilities.Extensions Imports Microsoft.CodeAnalysis Imports Microsoft.CodeAnalysis.Diagnostics -Imports Microsoft.CodeQuality.Analyzers +Imports Microsoft.CodeQuality.Analyzers.MicrosoftCodeQualityAnalyzersResources Namespace Microsoft.CodeQuality.VisualBasic.Analyzers.ApiDesignGuidelines ''' @@ -20,18 +20,13 @@ Namespace Microsoft.CodeQuality.VisualBasic.Analyzers.ApiDesignGuidelines Friend Const RuleId As String = "CA2224" - Private Shared ReadOnly s_localizableTitle As LocalizableString = New LocalizableResourceString(NameOf(MicrosoftCodeQualityAnalyzersResources.OverrideEqualsOnOverloadingOperatorEqualsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, GetType(MicrosoftCodeQualityAnalyzersResources)) - - Private Shared ReadOnly s_localizableMessage As LocalizableString = New LocalizableResourceString(NameOf(MicrosoftCodeQualityAnalyzersResources.OverrideEqualsOnOverloadingOperatorEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, GetType(MicrosoftCodeQualityAnalyzersResources)) - Private Shared ReadOnly s_localizableDescription As LocalizableString = New LocalizableResourceString(NameOf(MicrosoftCodeQualityAnalyzersResources.OverrideEqualsOnOverloadingOperatorEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, GetType(MicrosoftCodeQualityAnalyzersResources)) - Friend Shared Rule As DiagnosticDescriptor = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(NameOf(OverrideEqualsOnOverloadingOperatorEqualsTitle)), + CreateLocalizableResourceString(NameOf(OverrideEqualsOnOverloadingOperatorEqualsMessage)), DiagnosticCategory.Usage, RuleLevel.IdeSuggestion, - s_localizableDescription, + CreateLocalizableResourceString(NameOf(OverrideEqualsOnOverloadingOperatorEqualsDescription)), isPortedFxCopRule:=True, isDataflowRule:=False) diff --git a/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideGetHashCodeOnOverridingEquals.vb b/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideGetHashCodeOnOverridingEquals.vb index b8291c8117..0095e7b864 100644 --- a/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideGetHashCodeOnOverridingEquals.vb +++ b/src/NetAnalyzers/VisualBasic/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/BasicOverrideGetHashCodeOnOverridingEquals.vb @@ -5,7 +5,7 @@ Imports Analyzer.Utilities Imports Analyzer.Utilities.Extensions Imports Microsoft.CodeAnalysis Imports Microsoft.CodeAnalysis.Diagnostics -Imports Microsoft.CodeQuality.Analyzers +Imports Microsoft.CodeQuality.Analyzers.MicrosoftCodeQualityAnalyzersResources Namespace Microsoft.CodeQuality.VisualBasic.Analyzers.ApiDesignGuidelines ''' @@ -20,18 +20,13 @@ Namespace Microsoft.CodeQuality.VisualBasic.Analyzers.ApiDesignGuidelines Friend Const RuleId As String = "CA2218" - Private Shared ReadOnly s_localizableTitle As LocalizableString = New LocalizableResourceString(NameOf(MicrosoftCodeQualityAnalyzersResources.OverrideGetHashCodeOnOverridingEqualsTitle), MicrosoftCodeQualityAnalyzersResources.ResourceManager, GetType(MicrosoftCodeQualityAnalyzersResources)) - - Private Shared ReadOnly s_localizableMessage As LocalizableString = New LocalizableResourceString(NameOf(MicrosoftCodeQualityAnalyzersResources.OverrideGetHashCodeOnOverridingEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, GetType(MicrosoftCodeQualityAnalyzersResources)) - Private Shared ReadOnly s_localizableDescription As LocalizableString = New LocalizableResourceString(NameOf(MicrosoftCodeQualityAnalyzersResources.OverrideGetHashCodeOnOverridingEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, GetType(MicrosoftCodeQualityAnalyzersResources)) - Friend Shared Rule As DiagnosticDescriptor = DiagnosticDescriptorHelper.Create( RuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(NameOf(OverrideGetHashCodeOnOverridingEqualsTitle)), + CreateLocalizableResourceString(NameOf(OverrideGetHashCodeOnOverridingEqualsMessage)), DiagnosticCategory.Usage, RuleLevel.IdeSuggestion, - s_localizableDescription, + CreateLocalizableResourceString(NameOf(OverrideGetHashCodeOnOverridingEqualsDescription)), isPortedFxCopRule:=True, isDataflowRule:=False) From 00b21f12bf19e60bf42a14be277881977b021e9b Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 16:59:55 -0700 Subject: [PATCH 09/16] Reduce .cctor IL size in Microsoft.Diagnostics.Analyzers --- .../Core/AbstractDoNotCopyValue.cs | 84 +++++++------------ ...TypeShouldHaveDefaultableFieldsAnalyzer.cs | 14 ++-- .../Core/DoNotCallGetTestAccessor.cs | 14 ++-- ...MixAttributesFromDifferentVersionsOfMEF.cs | 26 +++--- ...nericCodeActionCreateToCreateCodeAction.cs | 11 ++- ...rtedPartsShouldHaveImportingConstructor.cs | 14 ++-- .../ImportingConstructorShouldBeObsolete.cs | 15 ++-- .../NamedTypeFullNameNotNullSuppressor.cs | 4 +- ...tsExportedWithMEFv2MustBeMarkedAsShared.cs | 26 +++--- .../Core/RelaxTestNamingSuppressor.cs | 6 +- .../RoslynDiagnosticsAnalyzersResources.cs | 18 ++++ .../SpecializedEnumerableCreationAnalyzer.cs | 20 ++--- ...redEventMustBeGeneratedForSourceSymbols.cs | 11 ++- .../Core/TemporaryArrayAsRefAnalyzer.cs | 14 ++-- .../TestExportsShouldNotBeDiscoverable.cs | 15 ++-- 15 files changed, 132 insertions(+), 160 deletions(-) create mode 100644 src/Roslyn.Diagnostics.Analyzers/Core/RoslynDiagnosticsAnalyzersResources.cs diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs b/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs index 7bc961be6d..36d094afa0 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs @@ -17,134 +17,110 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + public abstract class AbstractDoNotCopyValue : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableUnsupportedUseMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueUnsupportedUseMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableUnsupportedUseDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueUnsupportedUseDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableAvoidNullableWrapperMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueAvoidNullableWrapperMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableAvoidNullableWrapperDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueAvoidNullableWrapperDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableNoAssignValueFromReferenceMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoAssignValueFromReferenceMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableNoAssignValueFromReferenceDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoAssignValueFromReferenceDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableNoReturnValueFromReferenceMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoReturnValueFromReferenceMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableNoReturnValueFromReferenceDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoReturnValueFromReferenceDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableNoBoxingMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoBoxingMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableNoBoxingDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoBoxingDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableNoUnboxingMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoUnboxingMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableNoUnboxingDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoUnboxingDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableNoFieldOfCopyableTypeMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoFieldOfCopyableTypeMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableNoFieldOfCopyableTypeDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoFieldOfCopyableTypeDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableNoAutoPropertyMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoAutoPropertyMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableNoAutoPropertyDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCopyValueNoAutoPropertyDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(DoNotCopyValueTitle)); internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor UnsupportedUseRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableUnsupportedUseMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueUnsupportedUseMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableUnsupportedUseDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueUnsupportedUseDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor AvoidNullableWrapperRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableAvoidNullableWrapperMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueAvoidNullableWrapperMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableAvoidNullableWrapperDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueAvoidNullableWrapperDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor NoAssignValueFromReferenceRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableNoAssignValueFromReferenceMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueNoAssignValueFromReferenceMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableNoAssignValueFromReferenceDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueNoAssignValueFromReferenceDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor NoReturnValueFromReferenceRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableNoReturnValueFromReferenceMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueNoReturnValueFromReferenceMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableNoReturnValueFromReferenceDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueNoReturnValueFromReferenceDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor NoBoxingRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableNoBoxingMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueNoBoxingMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableNoBoxingDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueNoBoxingDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor NoUnboxingRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableNoUnboxingMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueNoUnboxingMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableNoUnboxingDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueNoUnboxingDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor NoFieldOfCopyableTypeRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableNoFieldOfCopyableTypeMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueNoFieldOfCopyableTypeMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableNoFieldOfCopyableTypeDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueNoFieldOfCopyableTypeDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static DiagnosticDescriptor NoAutoPropertyRule = new( RoslynDiagnosticIds.DoNotCopyValueRuleId, s_localizableTitle, - s_localizableNoAutoPropertyMessage, + CreateLocalizableResourceString(nameof(DoNotCopyValueNoAutoPropertyMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableNoAutoPropertyDescription, + description: CreateLocalizableResourceString(nameof(DoNotCopyValueNoAutoPropertyDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule, UnsupportedUseRule, NoBoxingRule, NoUnboxingRule, NoFieldOfCopyableTypeRule, NoAutoPropertyRule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs index 01063fa400..fc73f934e4 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs @@ -13,25 +13,23 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + #pragma warning disable RS1004 // Recommend adding language support to diagnostic analyzer [DiagnosticAnalyzer(LanguageNames.CSharp)] #pragma warning restore RS1004 // Recommend adding language support to diagnostic analyzer public class DefaultableTypeShouldHaveDefaultableFieldsAnalyzer : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DefaultableTypeShouldHaveDefaultableFieldsTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DefaultableTypeShouldHaveDefaultableFieldsMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DefaultableTypeShouldHaveDefaultableFieldsDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.DefaultableTypeShouldHaveDefaultableFieldsRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DefaultableTypeShouldHaveDefaultableFieldsTitle)), + CreateLocalizableResourceString(nameof(DefaultableTypeShouldHaveDefaultableFieldsMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(DefaultableTypeShouldHaveDefaultableFieldsDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs index b4af627822..f4182d0233 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs @@ -10,22 +10,20 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotCallGetTestAccessor : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCallGetTestAccessorTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCallGetTestAccessorMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotCallGetTestAccessorDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static readonly DiagnosticDescriptor DoNotCallGetTestAccessorRule = new( RoslynDiagnosticIds.DoNotCallGetTestAccessorRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotCallGetTestAccessorTitle)), + CreateLocalizableResourceString(nameof(DoNotCallGetTestAccessorMessage)), DiagnosticCategory.RoslynDiagnosticsMaintainability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, - customTags: WellKnownDiagnosticTags.Telemetry); + description: CreateLocalizableResourceString(nameof(DoNotCallGetTestAccessorDescription)), + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DoNotCallGetTestAccessorRule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs index 8c3c60500a..de4cb04e1d 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs @@ -13,26 +13,24 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + /// /// RS0006: Do not mix attributes from different versions of MEF /// [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class DoNotMixAttributesFromDifferentVersionsOfMEFAnalyzer : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotMixAttributesFromDifferentVersionsOfMEFTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotMixAttributesFromDifferentVersionsOfMEFMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotMixAttributesFromDifferentVersionsOfMEFDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = new(RoslynDiagnosticIds.MixedVersionsOfMefAttributesRuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.RoslynDiagnosticsReliability, - DiagnosticSeverity.Warning, - isEnabledByDefault: true, - description: s_localizableDescription, - helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + internal static DiagnosticDescriptor Rule = new( + RoslynDiagnosticIds.MixedVersionsOfMefAttributesRuleId, + CreateLocalizableResourceString(nameof(DoNotMixAttributesFromDifferentVersionsOfMEFTitle)), + CreateLocalizableResourceString(nameof(DoNotMixAttributesFromDifferentVersionsOfMEFMessage)), + DiagnosticCategory.RoslynDiagnosticsReliability, + DiagnosticSeverity.Warning, + isEnabledByDefault: true, + description: CreateLocalizableResourceString(nameof(DoNotMixAttributesFromDifferentVersionsOfMEFDescription)), + helpLinkUri: null, + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs index 31a7cf82b2..9c4a015158 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs @@ -9,23 +9,22 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class CodeActionCreateAnalyzer : DiagnosticAnalyzer { internal const string CodeActionMetadataName = "Microsoft.CodeAnalysis.CodeActions.CodeAction"; internal const string CreateMethodName = "Create"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotUseGenericCodeActionCreateToCreateCodeActionTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.DoNotUseGenericCodeActionCreateToCreateCodeActionMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static readonly DiagnosticDescriptor DoNotUseCodeActionCreateRule = new( RoslynDiagnosticIds.DoNotUseCodeActionCreateRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(DoNotUseGenericCodeActionCreateToCreateCodeActionTitle)), + CreateLocalizableResourceString(nameof(DoNotUseGenericCodeActionCreateToCreateCodeActionMessage)), DiagnosticCategory.RoslynDiagnosticsPerformance, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DoNotUseCodeActionCreateRule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs b/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs index 2ceb42b7b9..0aa09f39d9 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs @@ -14,6 +14,8 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + /// /// MEF-exported types should have exactly one constructor, which should be explicitly defined and marked with /// . @@ -21,20 +23,16 @@ namespace Roslyn.Diagnostics.Analyzers [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class ExportedPartsShouldHaveImportingConstructor : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.ExportedPartsShouldHaveImportingConstructorTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.ExportedPartsShouldHaveImportingConstructorMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.ExportedPartsShouldHaveImportingConstructorDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.ExportedPartsShouldHaveImportingConstructorRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(ExportedPartsShouldHaveImportingConstructorTitle)), + CreateLocalizableResourceString(nameof(ExportedPartsShouldHaveImportingConstructorMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(ExportedPartsShouldHaveImportingConstructorDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs b/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs index 6f5287eafc..b7aac9d3ea 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs @@ -12,6 +12,8 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + /// /// The importing constructor for a MEF-exported type should be marked obsolete. /// @@ -22,21 +24,16 @@ namespace Roslyn.Diagnostics.Analyzers [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class ImportingConstructorShouldBeObsolete : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.ImportingConstructorShouldBeObsoleteTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.ImportingConstructorShouldBeObsoleteMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.ImportingConstructorShouldBeObsoleteDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.ImportingConstructorShouldBeObsoleteRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(ImportingConstructorShouldBeObsoleteTitle)), + CreateLocalizableResourceString(nameof(ImportingConstructorShouldBeObsoleteMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(ImportingConstructorShouldBeObsoleteDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/NamedTypeFullNameNotNullSuppressor.cs b/src/Roslyn.Diagnostics.Analyzers/Core/NamedTypeFullNameNotNullSuppressor.cs index 4aad95d2da..19e1d042b1 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/NamedTypeFullNameNotNullSuppressor.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/NamedTypeFullNameNotNullSuppressor.cs @@ -8,6 +8,8 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class NamedTypeFullNameNotNullSuppressor : DiagnosticSuppressor { @@ -22,7 +24,7 @@ public sealed class NamedTypeFullNameNotNullSuppressor : DiagnosticSuppressor // CS8604: Possible null reference argument for parameter 'name' in 'method' private const string CS8604 = nameof(CS8604); - private static readonly LocalizableString s_localizableJustification = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.NamedTypeFullNameNotNullSuppressorJustification), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); + private static readonly LocalizableString s_localizableJustification = CreateLocalizableResourceString(nameof(NamedTypeFullNameNotNullSuppressorJustification)); internal static readonly SuppressionDescriptor CS8600Rule = new(Id, CS8600, s_localizableJustification); internal static readonly SuppressionDescriptor CS8603Rule = new(Id, CS8603, s_localizableJustification); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs b/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs index 375339d7f8..9b8f0616f8 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs @@ -11,26 +11,24 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + /// /// RS0023: Parts exported with MEFv2 must be marked as Shared /// [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class PartsExportedWithMEFv2MustBeMarkedAsSharedAnalyzer : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.PartsExportedWithMEFv2MustBeMarkedAsSharedTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.PartsExportedWithMEFv2MustBeMarkedAsSharedMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.PartsExportedWithMEFv2MustBeMarkedAsSharedDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - internal static DiagnosticDescriptor Rule = new(RoslynDiagnosticIds.MissingSharedAttributeRuleId, - s_localizableTitle, - s_localizableMessage, - DiagnosticCategory.RoslynDiagnosticsReliability, - DiagnosticSeverity.Warning, - isEnabledByDefault: true, - description: s_localizableDescription, - helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + internal static DiagnosticDescriptor Rule = new( + RoslynDiagnosticIds.MissingSharedAttributeRuleId, + CreateLocalizableResourceString(nameof(PartsExportedWithMEFv2MustBeMarkedAsSharedTitle)), + CreateLocalizableResourceString(nameof(PartsExportedWithMEFv2MustBeMarkedAsSharedMessage)), + DiagnosticCategory.RoslynDiagnosticsReliability, + DiagnosticSeverity.Warning, + isEnabledByDefault: true, + description: CreateLocalizableResourceString(nameof(PartsExportedWithMEFv2MustBeMarkedAsSharedDescription)), + helpLinkUri: null, + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/RelaxTestNamingSuppressor.cs b/src/Roslyn.Diagnostics.Analyzers/Core/RelaxTestNamingSuppressor.cs index 8e71c88469..cd7d998acb 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/RelaxTestNamingSuppressor.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/RelaxTestNamingSuppressor.cs @@ -9,6 +9,8 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class RelaxTestNamingSuppressor : DiagnosticSuppressor { @@ -18,10 +20,8 @@ public sealed class RelaxTestNamingSuppressor : DiagnosticSuppressor // https://github.com/microsoft/vs-threading/blob/main/doc/analyzers/VSTHRD200.md private const string SuppressedDiagnosticId = "VSTHRD200"; - private static readonly LocalizableString s_localizableJustification = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.RelaxTestNamingSuppressorJustification), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static readonly SuppressionDescriptor Rule = - new(Id, SuppressedDiagnosticId, s_localizableJustification); + new(Id, SuppressedDiagnosticId, CreateLocalizableResourceString(nameof(RelaxTestNamingSuppressorJustification))); public override ImmutableArray SupportedSuppressions { get; } = ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/RoslynDiagnosticsAnalyzersResources.cs b/src/Roslyn.Diagnostics.Analyzers/Core/RoslynDiagnosticsAnalyzersResources.cs new file mode 100644 index 0000000000..e4d68740ce --- /dev/null +++ b/src/Roslyn.Diagnostics.Analyzers/Core/RoslynDiagnosticsAnalyzersResources.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. + +using System; +using Microsoft.CodeAnalysis; + +namespace Roslyn.Diagnostics.Analyzers +{ + internal partial class RoslynDiagnosticsAnalyzersResources + { + private static readonly Type s_resourcesType = typeof(RoslynDiagnosticsAnalyzersResources); + + 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); + } +} diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs index 0644057c10..a68095f1f6 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs @@ -13,6 +13,8 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + // TODO: This should be updated to follow the flow of array creation expressions // that are eventually converted to and leave a given method as IEnumerable once we have // the ability to do more thorough data-flow analysis in diagnostic analyzers. @@ -22,29 +24,23 @@ public abstract class SpecializedEnumerableCreationAnalyzer : DiagnosticAnalyzer internal const string LinqEnumerableMetadataName = "System.Linq.Enumerable"; internal const string EmptyMethodName = "Empty"; - private static readonly LocalizableString s_localizableTitleUseEmptyEnumerable = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.UseSpecializedCollectionsEmptyEnumerableTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageUseEmptyEnumerable = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.UseSpecializedCollectionsEmptyEnumerableMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static readonly DiagnosticDescriptor UseEmptyEnumerableRule = new( RoslynDiagnosticIds.UseEmptyEnumerableRuleId, - s_localizableTitleUseEmptyEnumerable, - s_localizableMessageUseEmptyEnumerable, + CreateLocalizableResourceString(nameof(UseSpecializedCollectionsEmptyEnumerableTitle)), + CreateLocalizableResourceString(nameof(UseSpecializedCollectionsEmptyEnumerableMessage)), DiagnosticCategory.RoslynDiagnosticsPerformance, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); - - private static readonly LocalizableString s_localizableTitleUseSingletonEnumerable = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.UseSpecializedCollectionsSingletonEnumerableTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageUseSingletonEnumerable = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.UseSpecializedCollectionsSingletonEnumerableMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); internal static readonly DiagnosticDescriptor UseSingletonEnumerableRule = new( RoslynDiagnosticIds.UseSingletonEnumerableRuleId, - s_localizableTitleUseSingletonEnumerable, - s_localizableMessageUseSingletonEnumerable, + CreateLocalizableResourceString(nameof(UseSpecializedCollectionsSingletonEnumerableTitle)), + CreateLocalizableResourceString(nameof(UseSpecializedCollectionsSingletonEnumerableMessage)), DiagnosticCategory.RoslynDiagnosticsPerformance, DiagnosticSeverity.Warning, isEnabledByDefault: true, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(UseEmptyEnumerableRule, UseSingletonEnumerableRule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs b/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs index f469151d9a..fcb5218fde 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs @@ -14,22 +14,21 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + public abstract class SymbolDeclaredEventAnalyzer : DiagnosticAnalyzer where TSyntaxKind : struct { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.SymbolDeclaredEventMustBeGeneratedForSourceSymbolsTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.SymbolDeclaredEventMustBeGeneratedForSourceSymbolsMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.SymbolDeclaredEventMustBeGeneratedForSourceSymbolsDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); private static readonly string s_fullNameOfSymbol = typeof(ISymbol).FullName; internal static readonly DiagnosticDescriptor SymbolDeclaredEventRule = new( RoslynDiagnosticIds.SymbolDeclaredEventRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(SymbolDeclaredEventMustBeGeneratedForSourceSymbolsTitle)), + CreateLocalizableResourceString(nameof(SymbolDeclaredEventMustBeGeneratedForSourceSymbolsMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Error, isEnabledByDefault: false, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(SymbolDeclaredEventMustBeGeneratedForSourceSymbolsDescription)), customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(SymbolDeclaredEventRule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs index 70ce3abf83..e44df9d8ac 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs @@ -10,23 +10,21 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public class TemporaryArrayAsRefAnalyzer : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.TemporaryArrayAsRefTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.TemporaryArrayAsRefMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.TemporaryArrayAsRefDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.TemporaryArrayAsRefRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(TemporaryArrayAsRefTitle)), + CreateLocalizableResourceString(nameof(TemporaryArrayAsRefMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(TemporaryArrayAsRefDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs b/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs index a0f133c9c0..43b103bfd4 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs @@ -13,6 +13,8 @@ namespace Roslyn.Diagnostics.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + /// /// MEF-exported types defined in test assemblies should be marked with /// to avoid polluting the container(s) created for testing. These parts should be explicitly added to the container @@ -21,21 +23,16 @@ namespace Roslyn.Diagnostics.Analyzers [DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)] public sealed class TestExportsShouldNotBeDiscoverable : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.TestExportsShouldNotBeDiscoverableTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.TestExportsShouldNotBeDiscoverableMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.TestExportsShouldNotBeDiscoverableDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.TestExportsShouldNotBeDiscoverableRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(TestExportsShouldNotBeDiscoverableTitle)), + CreateLocalizableResourceString(nameof(TestExportsShouldNotBeDiscoverableMessage)), DiagnosticCategory.RoslynDiagnosticsReliability, DiagnosticSeverity.Warning, isEnabledByDefault: false, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(TestExportsShouldNotBeDiscoverableDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); From f6078a6a96b3a896c7b8f68222f28f7faec737fb Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 17:02:15 -0700 Subject: [PATCH 10/16] Reduce .cctor IL size in Microsoft.Diagnostics.CSharp.Analyzers --- .../CSharpAvoidOptSuffixForNullableEnableCode.cs | 12 +++++------- .../CSharp/PreferNullLiteral.cs | 12 +++++------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs index c0a9124ec3..fce5173fc1 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs @@ -16,6 +16,8 @@ namespace Roslyn.Diagnostics.CSharp.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + /// /// RS0046: Avoid 'Opt' suffix for nullable enable code /// @@ -24,18 +26,14 @@ public sealed class CSharpAvoidOptSuffixForNullableEnableCode : DiagnosticAnalyz { internal const string OptSuffix = "Opt"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.AvoidOptSuffixForNullableEnableCodeTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.AvoidOptSuffixForNullableEnableCodeMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.AvoidOptSuffixForNullableEnableCodeDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.AvoidOptSuffixForNullableEnableCodeRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(AvoidOptSuffixForNullableEnableCodeTitle)), + CreateLocalizableResourceString(nameof(AvoidOptSuffixForNullableEnableCodeMessage)), DiagnosticCategory.RoslynDiagnosticsDesign, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(AvoidOptSuffixForNullableEnableCodeDescription)), helpLinkUri: null, customTags: WellKnownDiagnosticTags.Telemetry); diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs index 917dfbb1a6..e82ee848f8 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs @@ -9,21 +9,19 @@ namespace Roslyn.Diagnostics.CSharp.Analyzers { + using static RoslynDiagnosticsAnalyzersResources; + [DiagnosticAnalyzer(LanguageNames.CSharp)] public sealed class PreferNullLiteral : DiagnosticAnalyzer { - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.PreferNullLiteralTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableMessage = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.PreferNullLiteralMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(RoslynDiagnosticsAnalyzersResources.PreferNullLiteralDescription), RoslynDiagnosticsAnalyzersResources.ResourceManager, typeof(RoslynDiagnosticsAnalyzersResources)); - internal static DiagnosticDescriptor Rule = new( RoslynDiagnosticIds.PreferNullLiteralRuleId, - s_localizableTitle, - s_localizableMessage, + CreateLocalizableResourceString(nameof(PreferNullLiteralTitle)), + CreateLocalizableResourceString(nameof(PreferNullLiteralMessage)), DiagnosticCategory.RoslynDiagnosticsMaintainability, DiagnosticSeverity.Warning, isEnabledByDefault: true, - description: s_localizableDescription, + description: CreateLocalizableResourceString(nameof(PreferNullLiteralDescription)), helpLinkUri: null, customTags: WellKnownDiagnosticTags.Telemetry); From eaaa67fbe0f846d62b4030bf5e2dbea9a892d3e3 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 17:03:47 -0700 Subject: [PATCH 11/16] Reduce .cctor IL size in Microsoft.Diagnostics.VisualBasic.Analyzers --- ...opertyToEnsureCorrectUseSiteDiagnostics.vb | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb b/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb index e7f3647caa..69bc6c5f33 100644 --- a/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb +++ b/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb @@ -7,33 +7,32 @@ Imports Microsoft.CodeAnalysis.Diagnostics Imports Microsoft.CodeAnalysis.VisualBasic Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Imports Roslyn.Diagnostics.Analyzers +Imports Roslyn.Diagnostics.Analyzers.RoslynDiagnosticsAnalyzersResources Namespace Roslyn.Diagnostics.VisualBasic.Analyzers Public Class BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnosticsAnalyzer Inherits DiagnosticAnalyzer - Private Shared ReadOnly s_localizableTitle As LocalizableString = New LocalizableResourceString(NameOf(RoslynDiagnosticsAnalyzersResources.InvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnosticsTitle), RoslynDiagnosticsAnalyzersResources.ResourceManager, GetType(RoslynDiagnosticsAnalyzersResources)) - Private Shared ReadOnly s_localizableMessage As LocalizableString = New LocalizableResourceString(NameOf(RoslynDiagnosticsAnalyzersResources.InvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnosticsMessage), RoslynDiagnosticsAnalyzersResources.ResourceManager, GetType(RoslynDiagnosticsAnalyzersResources)) - - Private Shared ReadOnly s_descriptor As DiagnosticDescriptor = New DiagnosticDescriptor(RoslynDiagnosticIds.UseSiteDiagnosticsCheckerRuleId, - s_localizableTitle, - s_localizableMessage, - "Usage", - DiagnosticSeverity.Error, - False, - Nothing, - Nothing, - WellKnownDiagnosticTags.Telemetry) + Private Shared ReadOnly s_descriptor As New DiagnosticDescriptor( + RoslynDiagnosticIds.UseSiteDiagnosticsCheckerRuleId, + CreateLocalizableResourceString(NameOf(InvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnosticsTitle)), + CreateLocalizableResourceString(NameOf(InvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnosticsMessage)), + "Usage", + DiagnosticSeverity.Error, + False, + Nothing, + Nothing, + WellKnownDiagnosticTags.Telemetry) Private Shared ReadOnly s_propertiesToValidateMap As ImmutableDictionary(Of String, String) = New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) From - { - {s_baseTypeString, s_typeSymbolFullyQualifiedName}, - {s_interfacesString, s_typeSymbolFullyQualifiedName}, - {s_allInterfacesString, s_typeSymbolFullyQualifiedName}, - {s_typeArgumentsString, s_namedTypeSymbolFullyQualifiedName}, - {s_constraintTypesString, s_typeParameterSymbolFullyQualifiedName} - }.ToImmutableDictionary() + { + {s_baseTypeString, s_typeSymbolFullyQualifiedName}, + {s_interfacesString, s_typeSymbolFullyQualifiedName}, + {s_allInterfacesString, s_typeSymbolFullyQualifiedName}, + {s_typeArgumentsString, s_namedTypeSymbolFullyQualifiedName}, + {s_constraintTypesString, s_typeParameterSymbolFullyQualifiedName} + }.ToImmutableDictionary() Private Const s_baseTypeString = "BaseType" Private Const s_interfacesString = "Interfaces" From df0cdb1c780e0db5b014d6b4cac5486c78b291a8 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 17:11:08 -0700 Subject: [PATCH 12/16] Reduce .cctor IL size in Text.Analyzers --- .../Core/EnumsShouldHavePluralNames.cs | 50 +++------------ .../IdentifiersShouldBeSpelledCorrectly.cs | 61 +++++++------------ .../Core/TextAnalyzersResources.cs | 18 ++++++ 3 files changed, 48 insertions(+), 81 deletions(-) create mode 100644 src/Text.Analyzers/Core/TextAnalyzersResources.cs diff --git a/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs b/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs index 63e7b836b9..e6a08d4b93 100644 --- a/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs +++ b/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs @@ -13,6 +13,8 @@ namespace Text.Analyzers { + using static TextAnalyzersResources; + /// /// CA1714: Flags enums should have plural names /// CA1717: Only Flags enums should have plural names @@ -22,63 +24,27 @@ public sealed class EnumsShouldHavePluralNamesAnalyzer : DiagnosticAnalyzer { internal const string RuleId_Plural = "CA1714"; - private static readonly LocalizableString s_localizableTitle_CA1714 = - new LocalizableResourceString( - nameof(TextAnalyzersResources.FlagsEnumsShouldHavePluralNamesTitle), - TextAnalyzersResources.ResourceManager, - typeof(TextAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage_CA1714 = - new LocalizableResourceString( - nameof(TextAnalyzersResources.FlagsEnumsShouldHavePluralNamesMessage), - TextAnalyzersResources.ResourceManager, - typeof(TextAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescription_CA1714 = - new LocalizableResourceString( - nameof(TextAnalyzersResources.FlagsEnumsShouldHavePluralNamesDescription), - TextAnalyzersResources.ResourceManager, - typeof(TextAnalyzersResources)); - internal static DiagnosticDescriptor Rule_CA1714 = DiagnosticDescriptorHelper.Create( RuleId_Plural, - s_localizableTitle_CA1714, - s_localizableMessage_CA1714, + CreateLocalizableResourceString(nameof(FlagsEnumsShouldHavePluralNamesTitle)), + CreateLocalizableResourceString(nameof(FlagsEnumsShouldHavePluralNamesMessage)), DiagnosticCategory.Naming, RuleLevel.Disabled, - description: s_localizableDescription_CA1714, + description: CreateLocalizableResourceString(nameof(FlagsEnumsShouldHavePluralNamesDescription)), isPortedFxCopRule: true, isDataflowRule: false); internal const string RuleId_NoPlural = "CA1717"; - private static readonly LocalizableString s_localizableTitle_CA1717 = - new LocalizableResourceString( - nameof(TextAnalyzersResources.OnlyFlagsEnumsShouldHavePluralNamesTitle), - TextAnalyzersResources.ResourceManager, - typeof(TextAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessage_CA1717 = - new LocalizableResourceString( - nameof(TextAnalyzersResources.OnlyFlagsEnumsShouldHavePluralNamesMessage), - TextAnalyzersResources.ResourceManager, - typeof(TextAnalyzersResources)); - - private static readonly LocalizableString s_localizableDescription_CA1717 = - new LocalizableResourceString( - nameof(TextAnalyzersResources.OnlyFlagsEnumsShouldHavePluralNamesDescription), - TextAnalyzersResources.ResourceManager, - typeof(TextAnalyzersResources)); - internal static DiagnosticDescriptor Rule_CA1717 = DiagnosticDescriptorHelper.Create( RuleId_NoPlural, - s_localizableTitle_CA1717, - s_localizableMessage_CA1717, + CreateLocalizableResourceString(nameof(OnlyFlagsEnumsShouldHavePluralNamesTitle)), + CreateLocalizableResourceString(nameof(OnlyFlagsEnumsShouldHavePluralNamesMessage)), DiagnosticCategory.Naming, RuleLevel.Disabled, - description: s_localizableDescription_CA1717, + description: CreateLocalizableResourceString(nameof(OnlyFlagsEnumsShouldHavePluralNamesDescription)), isPortedFxCopRule: true, isDataflowRule: false); diff --git a/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs b/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs index de882a28c0..e2475e9f3f 100644 --- a/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs +++ b/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs @@ -13,6 +13,8 @@ namespace Text.Analyzers { + using static TextAnalyzersResources; + /// /// CA1704: Identifiers should be spelled correctly /// @@ -21,27 +23,8 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal { internal const string RuleId = "CA1704"; - private static readonly LocalizableString s_localizableTitle = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyTitle), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - - private static readonly LocalizableString s_localizableMessageFileParse = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyFileParse), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageAssembly = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageAssembly), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNamespace = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageNamespace), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageType = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageType), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageVariable = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageVariable), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMember = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageMember), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberParameter = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageMemberParameter), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDelegateParameter = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageDelegateParameter), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeTypeParameter = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageTypeTypeParameter), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMethodTypeParameter = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageMethodTypeParameter), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageAssemblyMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageAssemblyMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageNamespaceMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageNamespaceMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageTypeMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageMemberMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMemberParameterMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageMemberParameterMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageDelegateParameterMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageDelegateParameterMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageTypeTypeParameterMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageTypeTypeParameterMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableMessageMethodTypeParameterMoreMeaningfulName = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyMessageMethodTypeParameterMoreMeaningfulName), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); - private static readonly LocalizableString s_localizableDescription = new LocalizableResourceString(nameof(TextAnalyzersResources.IdentifiersShouldBeSpelledCorrectlyDescription), TextAnalyzersResources.ResourceManager, typeof(TextAnalyzersResources)); + private static readonly LocalizableString s_localizableTitle = CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyTitle)); + private static readonly LocalizableString s_localizableDescription = CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyDescription)); private static readonly SourceTextValueProvider s_xmlDictionaryProvider = new(ParseXmlDictionary); private static readonly SourceTextValueProvider s_dicDictionaryProvider = new(ParseDicDictionary); @@ -50,7 +33,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor FileParseRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageFileParse, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyFileParse)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -60,7 +43,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor AssemblyRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageAssembly, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageAssembly)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -70,7 +53,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor NamespaceRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageNamespace, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageNamespace)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -80,7 +63,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor TypeRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageType, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageType)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -90,7 +73,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor VariableRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageVariable, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageVariable)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -100,7 +83,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor MemberRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageMember, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageMember)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -110,7 +93,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor MemberParameterRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageMemberParameter, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageMemberParameter)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -120,7 +103,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor DelegateParameterRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageDelegateParameter, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageDelegateParameter)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -130,7 +113,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor TypeTypeParameterRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageTypeTypeParameter, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageTypeTypeParameter)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -140,7 +123,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor MethodTypeParameterRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageMethodTypeParameter, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageMethodTypeParameter)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -150,7 +133,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor AssemblyMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageAssemblyMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageAssemblyMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -160,7 +143,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor NamespaceMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageNamespaceMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageNamespaceMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -170,7 +153,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor TypeMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageTypeMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageTypeMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -180,7 +163,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor MemberMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageMemberMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageMemberMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -190,7 +173,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor MemberParameterMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageMemberParameterMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageMemberParameterMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -200,7 +183,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor DelegateParameterMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageDelegateParameterMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageDelegateParameterMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -210,7 +193,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor TypeTypeParameterMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageTypeTypeParameterMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageTypeTypeParameterMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, @@ -220,7 +203,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal internal static DiagnosticDescriptor MethodTypeParameterMoreMeaningfulNameRule = DiagnosticDescriptorHelper.Create( RuleId, s_localizableTitle, - s_localizableMessageMethodTypeParameterMoreMeaningfulName, + CreateLocalizableResourceString(nameof(IdentifiersShouldBeSpelledCorrectlyMessageMethodTypeParameterMoreMeaningfulName)), DiagnosticCategory.Naming, RuleLevel.BuildWarning, description: s_localizableDescription, diff --git a/src/Text.Analyzers/Core/TextAnalyzersResources.cs b/src/Text.Analyzers/Core/TextAnalyzersResources.cs new file mode 100644 index 0000000000..fe09fae13d --- /dev/null +++ b/src/Text.Analyzers/Core/TextAnalyzersResources.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. + +using System; +using Microsoft.CodeAnalysis; + +namespace Text.Analyzers +{ + internal partial class TextAnalyzersResources + { + private static readonly Type s_resourcesType = typeof(TextAnalyzersResources); + + 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); + } +} From 564a7417a6e01652d698295960f86547f2185cc5 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 17:12:13 -0700 Subject: [PATCH 13/16] Use cached diagnostic tags array --- .../CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs | 2 +- src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs | 2 +- ...InvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs index fce5173fc1..44de3a5cb5 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs @@ -35,7 +35,7 @@ public sealed class CSharpAvoidOptSuffixForNullableEnableCode : DiagnosticAnalyz isEnabledByDefault: true, description: CreateLocalizableResourceString(nameof(AvoidOptSuffixForNullableEnableCodeDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs index e82ee848f8..ff412afe75 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs @@ -23,7 +23,7 @@ public sealed class PreferNullLiteral : DiagnosticAnalyzer isEnabledByDefault: true, description: CreateLocalizableResourceString(nameof(PreferNullLiteralDescription)), helpLinkUri: null, - customTags: WellKnownDiagnosticTags.Telemetry); + customTags: WellKnownDiagnosticTagsExtensions.Telemetry); public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); diff --git a/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb b/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb index 69bc6c5f33..23f2fa8cfa 100644 --- a/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb +++ b/src/Roslyn.Diagnostics.Analyzers/VisualBasic/BasicInvokeTheCorrectPropertyToEnsureCorrectUseSiteDiagnostics.vb @@ -23,7 +23,7 @@ Namespace Roslyn.Diagnostics.VisualBasic.Analyzers False, Nothing, Nothing, - WellKnownDiagnosticTags.Telemetry) + WellKnownDiagnosticTagsExtensions.Telemetry) Private Shared ReadOnly s_propertiesToValidateMap As ImmutableDictionary(Of String, String) = New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) From { From 6fa2b6098750406dc1de0f866c8d9d6626f17756 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 17:26:32 -0700 Subject: [PATCH 14/16] Clean up a few more static fields --- .../FixAnalyzers/FixerWithFixAllAnalyzer.cs | 28 +++++++------------ .../InternalImplementationOnlyAnalyzer.cs | 19 ++++++------- 2 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs index bd0c2b84c2..bbfeb43244 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs @@ -11,6 +11,8 @@ namespace Microsoft.CodeAnalysis.Analyzers.FixAnalyzers { + using static CodeAnalysisDiagnosticsResources; + /// /// A 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 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. @@ -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 = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CreateCodeActionWithEquivalenceKeyTitle)); - private static readonly LocalizableString s_localizableCreateCodeActionWithEquivalenceKeyMessage = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CreateCodeActionWithEquivalenceKeyMessage)); - - private static readonly LocalizableString s_localizableOverrideCodeActionEquivalenceKeyTitle = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideCodeActionEquivalenceKeyTitle)); - private static readonly LocalizableString s_localizableOverrideCodeActionEquivalenceKeyMessage = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideCodeActionEquivalenceKeyMessage)); - - private static readonly LocalizableString s_localizableOverrideGetFixAllProviderTitle = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderTitle)); - private static readonly LocalizableString s_localizableOverrideGetFixAllProviderMessage = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderMessage)); - - private static readonly LocalizableString s_localizableCodeActionNeedsEquivalenceKeyDescription = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.CodeActionNeedsEquivalenceKeyDescription)); - private static readonly LocalizableString s_localizableOverrideGetFixAllProviderDescription = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.OverrideGetFixAllProviderDescription)); + 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, @@ -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, @@ -60,11 +52,11 @@ 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); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs index 8b2f86d83c..a47d6658ab 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs @@ -9,23 +9,22 @@ 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 = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyTitle)); - private static readonly LocalizableString s_localizableMessageFormat = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyMessage)); - private static readonly LocalizableString s_localizableDescription = CodeAnalysisDiagnosticsResources.CreateLocalizableResourceString(nameof(CodeAnalysisDiagnosticsResources.InternalImplementationOnlyDescription)); 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 SupportedDiagnostics => ImmutableArray.Create(Rule); From 36bb3a560ae6e7ae11dfdbf9c2925c0112e6f2de Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 18:17:52 -0700 Subject: [PATCH 15/16] Use read-only property for SupportedDiagnostics rather than computed property --- .../CSharp/CSharpImmutableObjectMethodAnalyzer.cs | 2 +- .../Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs | 2 +- .../Core/InternalImplementationOnlyAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs | 2 +- .../MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs | 2 +- .../MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs | 2 +- .../DoNotUseCompilationGetSemanticModelAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/PreferIsKindAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/RegisterActionAnalyzer.cs | 2 +- .../Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs | 2 +- .../Core/RestrictedInternalsVisibleToAnalyzer.cs | 2 +- .../Core/SymbolIsBannedAnalyzer.cs | 2 +- .../AbstractTypesShouldNotHaveConstructors.cs | 2 +- .../ApiDesignGuidelines/AvoidEmptyInterfaces.cs | 2 +- .../AvoidExcessiveParametersOnGenericTypes.cs | 2 +- .../ApiDesignGuidelines/AvoidOutParameters.cs | 2 +- .../CancellationTokenParametersMustComeLast.cs | 2 +- .../CollectionPropertiesShouldBeReadOnly.cs | 2 +- .../CollectionsShouldImplementGenericInterface.cs | 2 +- .../ApiDesignGuidelines/DeclareTypesInNamespaces.cs | 2 +- .../DefineAccessorsForAttributeArguments.cs | 2 +- .../ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs | 2 +- .../DoNotDeclareProtectedMembersInSealedTypes.cs | 2 +- .../DoNotDeclareStaticMembersOnGenericTypes.cs | 2 +- .../ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs | 2 +- .../ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs | 2 +- .../ApiDesignGuidelines/DoNotExposeGenericLists.cs | 2 +- .../ApiDesignGuidelines/DoNotHideBaseClassMethods.cs | 2 +- .../ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs | 2 +- .../DoNotOverloadOperatorEqualsOnReferenceTypes.cs | 2 +- .../ApiDesignGuidelines/DoNotPassTypesByReference.cs | 2 +- .../ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs | 2 +- .../DoNotRaiseExceptionsInUnexpectedLocations.cs | 4 ++-- .../ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs | 2 +- .../ApiDesignGuidelines/EnumStorageShouldBeInt32.cs | 2 +- .../ApiDesignGuidelines/EnumWithFlagsAttribute.cs | 2 +- .../ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs | 2 +- .../ApiDesignGuidelines/EquatableAnalyzer.cs | 2 +- .../EventsShouldNotHaveBeforeOrAfterPrefix.cs | 2 +- .../ApiDesignGuidelines/ExceptionsShouldBePublic.cs | 2 +- .../IdentifiersShouldDifferByMoreThanCase.cs | 2 +- .../ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs | 2 +- .../ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs | 2 +- .../IdentifiersShouldNotContainTypeNames.cs | 2 +- .../IdentifiersShouldNotContainUnderscores.cs | 2 +- .../IdentifiersShouldNotHaveIncorrectSuffix.cs | 2 +- .../ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs | 2 +- .../ApiDesignGuidelines/ImplementIDisposableCorrectly.cs | 2 +- .../ImplementStandardExceptionConstructors.cs | 2 +- .../InterfaceMethodsShouldBeCallableByChildTypes.cs | 2 +- .../MarkAssembliesWithAttributesDiagnosticAnalyzer.cs | 2 +- .../ApiDesignGuidelines/MarkAssembliesWithComVisible.cs | 2 +- .../ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs | 2 +- .../ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs | 2 +- .../ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs | 2 +- .../NonConstantFieldsShouldNotBeVisible.cs | 2 +- .../OperatorOverloadsHaveNamedAlternates.cs | 2 +- .../OperatorsShouldHaveSymmetricalOverloads.cs | 2 +- .../OverloadOperatorEqualsOnOverridingValueTypeEquals.cs | 2 +- .../OverrideEqualsAndOperatorEqualsOnValueTypes.cs | 2 +- .../ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs | 2 +- .../ParameterNamesShouldMatchBaseDeclaration.cs | 2 +- .../PassSystemUriObjectsInsteadOfStrings.cs | 2 +- .../ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs | 2 +- .../ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs | 2 +- .../PropertyNamesShouldNotMatchGetMethods.cs | 2 +- .../ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs | 2 +- .../ApiDesignGuidelines/StaticHolderTypes.cs | 2 +- .../ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs | 2 +- .../TypesThatOwnDisposableFieldsShouldBeDisposable.cs | 2 +- .../ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs | 2 +- .../ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs | 2 +- .../ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs | 2 +- .../ApiDesignGuidelines/UseEventsWhereAppropriate.cs | 2 +- .../ApiDesignGuidelines/UseGenericEventHandlerInstances.cs | 2 +- .../UseIntegralOrStringArgumentForIndexers.cs | 2 +- .../ApiDesignGuidelines/UsePreferredTerms.cs | 2 +- .../ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs | 2 +- .../ApiReview/AvoidCallingProblematicMethods.cs | 2 +- .../Documentation/AvoidUsingCrefTagsWithAPrefix.cs | 2 +- .../Maintainability/AvoidDeadConditionalCode.cs | 2 +- .../Maintainability/AvoidUninstantiatedInternalClasses.cs | 2 +- .../Maintainability/AvoidUnusedPrivateFields.cs | 2 +- .../Maintainability/CodeMetricsAnalyzer.cs | 2 +- .../Maintainability/DoNotIgnoreMethodResults.cs | 2 +- .../Maintainability/ReviewUnusedParameters.cs | 2 +- .../Maintainability/UseNameofInPlaceOfString.cs | 2 +- .../Maintainability/VariableNamesShouldNotMatchFieldNames.cs | 2 +- .../AssigningSymbolAndItsMemberInSameStatement.cs | 2 +- .../QualityGuidelines/AvoidDuplicateElementInitialization.cs | 2 +- .../QualityGuidelines/AvoidInfiniteRecursion.cs | 2 +- .../QualityGuidelines/AvoidPropertySelfAssignment.cs | 2 +- .../DoNotCallOverridableMethodsInConstructors.cs | 2 +- .../QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs | 2 +- .../QualityGuidelines/DoNotInitializeUnnecessarily.cs | 2 +- .../DoNotRaiseExceptionsInExceptionClauses.cs | 2 +- .../QualityGuidelines/MarkMembersAsStatic.cs | 2 +- .../PreferJaggedArraysOverMultidimensional.cs | 2 +- .../QualityGuidelines/RemoveEmptyFinalizers.cs | 2 +- .../QualityGuidelines/RethrowToPreserveStackDetails.cs | 2 +- .../QualityGuidelines/ReviewVisibleEventHandlers.cs | 2 +- .../SealMethodsThatSatisfyPrivateInterfaces.cs | 2 +- .../QualityGuidelines/UseLiteralsWhereAppropriate.cs | 2 +- .../QualityGuidelines/ValidateArgumentsOfPublicMethods.cs | 2 +- .../Data/ReviewSqlQueriesForSecurityVulnerabilities.cs | 2 +- ...otCallToImmutableCollectionOnAnImmutableCollectionValue.cs | 2 +- .../InteropServices/AvoidStringBuilderPInvokeParameters.cs | 2 +- .../DoNotUseOutAttributeStringPInvokeParameters.cs | 2 +- .../MarkBooleanPInvokeArgumentsWithMarshalAs.cs | 2 +- .../InteropServices/PInvokeDiagnosticAnalyzer.cs | 2 +- .../InteropServices/PlatformCompatibilityAnalyzer.cs | 2 +- .../InteropServices/UseManagedEquivalentsOfWin32Api.cs | 2 +- .../Performance/UseCountProperly.cs | 4 ++-- .../Publish/AvoidAssemblyLocationInSingleFile.cs | 2 +- .../Resources/MarkAssembliesWithNeutralResourcesLanguage.cs | 2 +- .../Runtime/AttributeStringLiteralsShouldParseCorrectly.cs | 2 +- .../Runtime/AvoidUnsealedAttributes.cs | 2 +- .../Runtime/AvoidZeroLengthArrayAllocations.cs | 2 +- .../Runtime/CallGCSuppressFinalizeCorrectly.cs | 2 +- .../Runtime/DisposableFieldsShouldBeDisposed.cs | 2 +- .../Runtime/DisposableTypesShouldDeclareFinalizer.cs | 2 +- .../Runtime/DisposeMethodsShouldCallBaseClassDispose.cs | 2 +- .../Runtime/DisposeObjectsBeforeLosingScope.cs | 4 ++-- .../DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs | 2 +- .../Runtime/DoNotLockOnObjectsWithWeakIdentity.cs | 2 +- .../Runtime/DoNotPassLiteralsAsLocalizedParameters.cs | 2 +- .../Runtime/DoNotRaiseReservedExceptionTypes.cs | 2 +- ...dsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs | 2 +- .../Runtime/DoNotUseReferenceEqualsWithValueTypes.cs | 2 +- .../Runtime/DoNotUseStackallocInLoopsAnalyzer.cs | 2 +- .../Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs | 2 +- .../Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs | 2 +- .../Runtime/ImplementISerializableCorrectly.cs | 2 +- .../Runtime/ImplementSerializationMethodsCorrectly.cs | 2 +- .../Runtime/InitializeStaticFieldsInline.cs | 2 +- .../Runtime/InstantiateArgumentExceptionsCorrectly.cs | 2 +- .../Runtime/NormalizeStringsToUppercase.cs | 2 +- .../Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs | 2 +- .../Runtime/PreferStreamAsyncMemoryOverloads.cs | 2 +- .../Runtime/PreferStringContainsOverIndexOfAnalyzer.cs | 2 +- .../Runtime/PreferTypedStringBuilderAppendOverloads.cs | 2 +- .../Runtime/ProvideCorrectArgumentsToFormattingMethods.cs | 2 +- .../Runtime/ProvideDeserializationMethodsForOptionalFields.cs | 2 +- .../Runtime/SerializationRulesDiagnosticAnalyzer.cs | 2 +- .../Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs | 2 +- .../Runtime/SpecifyIFormatProvider.cs | 2 +- .../Runtime/SpecifyStringComparison.cs | 2 +- .../Runtime/TestForEmptyStringsUsingStringLength.cs | 2 +- .../Runtime/TestForNaNCorrectly.cs | 2 +- .../Runtime/UseEnvironmentProcessId.cs | 2 +- .../Runtime/UseOrdinalStringComparison.cs | 2 +- .../Security/ApprovedCipherModeAnalyzer.cs | 2 +- ...SetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs | 2 +- .../DataSetDataTableInSerializableObjectGraphAnalyzer.cs | 2 +- .../Security/DataSetDataTableInSerializableTypeAnalyzer.cs | 2 +- .../DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs | 2 +- .../Security/DoNotAddSchemaByURL.cs | 2 +- .../Security/DoNotCallDangerousMethodsInDeserialization.cs | 2 +- .../Security/DoNotDisableCertificateValidation.cs | 2 +- .../Security/DoNotDisableHttpClientCRLCheck.cs | 2 +- .../Security/DoNotDisableHttpHeaderChecking.cs | 2 +- .../Security/DoNotDisableRequestValidation.cs | 2 +- .../Security/DoNotInstallRootCert.cs | 2 +- .../Security/DoNotSerializeTypeWithPointerFields.cs | 2 +- .../Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs | 2 +- .../Security/DoNotUseAccountSAS.cs | 2 +- .../Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs | 2 +- .../Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs | 2 +- .../Security/DoNotUseDataSetReadXml.cs | 2 +- .../Security/DoNotUseDeprecatedSecurityProtocols.cs | 2 +- .../Security/DoNotUseInsecureCryptographicAlgorithms.cs | 2 +- ...eDeserializerJavascriptSerializerWithSimpleTypeResolver.cs | 2 +- .../DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs | 2 +- .../Security/DoNotUseInsecureDeserializerMethodsBase.cs | 2 +- .../Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs | 2 +- .../Security/DoNotUseInsecureRandomness.cs | 2 +- .../Security/DoNotUseInsecureSettingsForJsonNet.cs | 2 +- .../Security/DoNotUseObsoleteKDFAlgorithm.cs | 2 +- .../Security/DoNotUseWeakKDFAlgorithm.cs | 2 +- .../Security/DoNotUseWeakKDFInsufficientIterationCount.cs | 2 +- .../Security/DoNotUseXslTransform.cs | 2 +- .../Security/JsonNetTypeNameHandling.cs | 2 +- .../PotentialReferenceCycleInDeserializedObjectGraph.cs | 2 +- .../Security/SetHttpOnlyForHttpCookie.cs | 2 +- .../Security/SetViewStateUserKey.cs | 2 +- .../Security/SourceTriggeredTaintedDataAnalyzerBase.cs | 2 +- .../Security/SslProtocolsAnalyzer.cs | 2 +- .../Security/UseAutoValidateAntiforgeryToken.cs | 2 +- .../Security/UseContainerLevelAccessPolicy.cs | 2 +- .../Security/UseDefaultDllImportSearchPathsAttribute.cs | 2 +- .../Security/UseRSAWithSufficientKeySize.cs | 2 +- .../Security/UseSecureCookiesASPNetCore.cs | 2 +- .../Security/UseSharedAccessProtocolHttpsOnly.cs | 2 +- .../Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs | 2 +- .../DoNotCreateTaskCompletionSourceWithWrongArguments.cs | 2 +- .../Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs | 2 +- .../Tasks/UseValueTasksCorrectly.cs | 2 +- .../Usage/ProvideCorrectArgumentToEnumHasFlag.cs | 2 +- .../AvoidDuplicateAccelerators.cs | 2 +- .../CallBaseClassMethodsOnISerializableTypes.cs | 2 +- .../DoNotCatchCorruptedStateExceptions.cs | 2 +- .../DoNotMarkServicedComponentsWithWebMethod.cs | 2 +- .../DoNotUseInsecureDtdProcessing.cs | 4 ++-- .../DoNotUseInsecureDtdProcessingInApiDesign.cs | 4 ++-- .../DoNotUseInsecureXSLTScriptExecution.cs | 2 +- .../MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs | 2 +- .../MarkWindowsFormsEntryPointsWithStaThread.cs | 2 +- .../Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs | 2 +- .../SpecifyMessageBoxOptions.cs | 2 +- .../TypesShouldNotExtendCertainBaseTypes.cs | 2 +- .../CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs | 2 +- .../CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs | 2 +- .../CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs | 2 +- .../CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs | 2 +- .../CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs | 2 +- .../Core/ExplicitAllocationAnalyzer.cs | 2 +- .../Core/Analyzers/DeclarePublicApiAnalyzer.cs | 2 +- .../CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs | 2 +- src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs | 2 +- .../Core/AbstractDoNotCopyValue.cs | 2 +- .../DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs | 2 +- .../Core/DoNotCallGetTestAccessor.cs | 2 +- .../Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs | 2 +- .../Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs | 2 +- .../Core/ExportedPartsShouldHaveImportingConstructor.cs | 2 +- .../Core/ImportingConstructorShouldBeObsolete.cs | 2 +- .../Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs | 2 +- .../Core/SpecializedEnumerableCreationAnalyzer.cs | 4 ++-- .../SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs | 2 +- .../Core/TemporaryArrayAsRefAnalyzer.cs | 2 +- .../Core/TestExportsShouldNotBeDiscoverable.cs | 2 +- src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs | 2 +- .../Core/IdentifiersShouldBeSpelledCorrectly.cs | 2 +- 238 files changed, 244 insertions(+), 244 deletions(-) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs index d25e2405a3..3a10ec7191 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/CSharp/CSharpImmutableObjectMethodAnalyzer.cs @@ -26,7 +26,7 @@ public class CSharpImmutableObjectMethodAnalyzer : DiagnosticAnalyzer description: CreateLocalizableResourceString(nameof(DoNotIgnoreReturnValueOnImmutableObjectMethodInvocationDescription)), customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DoNotIgnoreReturnValueDiagnosticRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DoNotIgnoreReturnValueDiagnosticRule); private const string SolutionFullName = @"Microsoft.CodeAnalysis.Solution"; private const string ProjectFullName = @"Microsoft.CodeAnalysis.Project"; diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs index bbfeb43244..fe037cf1c1 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.cs @@ -60,7 +60,7 @@ public sealed class FixerWithFixAllAnalyzer : DiagnosticAnalyzer isEnabledByDefault: true, customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(CreateCodeActionEquivalenceKeyRule, OverrideCodeActionEquivalenceKeyRule, OverrideGetFixAllProviderRule); public override void Initialize(AnalysisContext context) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs index a47d6658ab..07af18d434 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/InternalImplementationOnlyAnalyzer.cs @@ -26,7 +26,7 @@ public class InternalImplementationOnlyAnalyzer : DiagnosticAnalyzer isEnabledByDefault: true, description: CreateLocalizableResourceString(nameof(InternalImplementationOnlyDescription))); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs index c65de40db4..f942173685 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ClassIsNotDiagnosticAnalyzer.cs @@ -21,7 +21,7 @@ public sealed class ClassIsNotDiagnosticAnalyzer : DiagnosticAnalyzer isEnabledByDefault: true, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs index 618d2333cf..cc433d65a6 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs @@ -55,7 +55,7 @@ public class CompareSymbolsCorrectlyAnalyzer : DiagnosticAnalyzer description: s_localizableDescription, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(EqualityRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(EqualityRule); public override void Initialize(AnalysisContext context) { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs index 8f1df49753..c7fb8ea65f 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ConfigureGeneratedCodeAnalysisAnalyzer.cs @@ -23,7 +23,7 @@ public class ConfigureGeneratedCodeAnalysisAnalyzer : DiagnosticAnalyzerCorrectn isEnabledByDefault: true, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis public override void Initialize(AnalysisContext context) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs index 8acad2ea2f..bc3fd48a05 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAPIUsageAnalyzer.cs @@ -49,7 +49,7 @@ public abstract class DiagnosticAnalyzerApiUsageAnalyzer : Diagnost customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); protected abstract bool IsNamedTypeDeclarationBlock(SyntaxNode syntax); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DoNotUseTypesFromAssemblyDirectRule, DoNotUseTypesFromAssemblyIndirectRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DoNotUseTypesFromAssemblyDirectRule, DoNotUseTypesFromAssemblyIndirectRule); public override void Initialize(AnalysisContext context) { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs index d42b66e684..72413a48c2 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerAttributeAnalyzer.cs @@ -33,7 +33,7 @@ public sealed class DiagnosticAnalyzerAttributeAnalyzer : DiagnosticAnalyzerCorr description: CreateLocalizableResourceString(nameof(AddLanguageSupportToAnalyzerDescription)), customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(MissingDiagnosticAnalyzerAttributeRule, AddLanguageSupportToAnalyzerRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(MissingDiagnosticAnalyzerAttributeRule, AddLanguageSupportToAnalyzerRule); #pragma warning disable RS1025 // Configure generated code analysis public override void Initialize(AnalysisContext context) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs index cd5fb32492..247fc4df7f 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticAnalyzerFieldsAnalyzer.cs @@ -33,7 +33,7 @@ public abstract class DiagnosticAnalyzerFieldsAnalyzer SupportedDiagnostics => ImmutableArray.Create(DoNotStorePerCompilationDataOntoFieldsRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DoNotStorePerCompilationDataOntoFieldsRule); #pragma warning disable RS1025 // Configure generated code analysis public override void Initialize(AnalysisContext context) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs index b790926e16..1551f85ee5 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs @@ -172,7 +172,7 @@ public sealed partial class DiagnosticDescriptorCreationAnalyzer : DiagnosticAna isEnabledByDefault: true, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( UseLocalizableStringsInDescriptorRule, ProvideHelpUriInDescriptorRule, DiagnosticIdMustBeAConstantRule, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs index 023f42f3e5..6f847bba79 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DoNotUseCompilationGetSemanticModelAnalyzer.cs @@ -24,7 +24,7 @@ public sealed class DoNotUseCompilationGetSemanticModelAnalyzer : DiagnosticAnal description: CreateLocalizableResourceString(nameof(DoNotUseCompilationGetSemanticModelDescription)), customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs index d7aba946f4..8b8578db3d 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/EnableConcurrentExecutionAnalyzer.cs @@ -23,7 +23,7 @@ public sealed class EnableConcurrentExecutionAnalyzer : DiagnosticAnalyzerCorrec isEnabledByDefault: true, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis public override void Initialize(AnalysisContext context) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs index 494575c3e6..76d522a2f2 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/PreferIsKindAnalyzer.cs @@ -25,7 +25,7 @@ public sealed class PreferIsKindAnalyzer : DiagnosticAnalyzer helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs index 7b4d54684d..ac4a261de9 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/RegisterActionAnalyzer.cs @@ -96,7 +96,7 @@ public abstract class RegisterActionAnalyzer SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( MissingSymbolKindArgumentRule, MissingSyntaxKindArgumentRule, MissingOperationKindArgumentRule, diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs index e2498712d0..4c5d238417 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/ReportDiagnosticAnalyzer.cs @@ -32,7 +32,7 @@ public abstract class ReportDiagnosticAnalyzer SupportedDiagnostics => ImmutableArray.Create(InvalidReportDiagnosticRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(InvalidReportDiagnosticRule); [SuppressMessage("AnalyzerPerformance", "RS1012:Start action has no registered actions.", Justification = "Method returns an analyzer that is registered by the caller.")] protected override DiagnosticAnalyzerSymbolAnalyzer? GetDiagnosticAnalyzerSymbolAnalyzer(CompilationStartAnalysisContext compilationContext, INamedTypeSymbol diagnosticAnalyzer, INamedTypeSymbol diagnosticAnalyzerAttribute) diff --git a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs index 6f7d783452..587fd3b42a 100644 --- a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/RestrictedInternalsVisibleToAnalyzer.cs @@ -31,7 +31,7 @@ public abstract class RestrictedInternalsVisibleToAnalyzer SupportedDiagnostics => ImmutableArray.Create(Rule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); protected abstract ImmutableArray NameSyntaxKinds { get; } diff --git a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs index 9ac397c866..c4a53d99fc 100644 --- a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/SymbolIsBannedAnalyzer.cs @@ -48,7 +48,7 @@ internal static class SymbolIsBannedAnalyzer public abstract class SymbolIsBannedAnalyzer : DiagnosticAnalyzer where TSyntaxKind : struct { - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(SymbolIsBannedAnalyzer.SymbolIsBannedRule, SymbolIsBannedAnalyzer.DuplicateBannedSymbolRule); protected abstract TSyntaxKind XmlCrefSyntaxKind { get; } diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs index 84ca50ed6c..db11e37084 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.cs @@ -29,7 +29,7 @@ public sealed class AbstractTypesShouldNotHaveConstructorsAnalyzer : DiagnosticA isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs index b267e924a5..b26dc5030b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.cs @@ -29,7 +29,7 @@ public sealed class AvoidEmptyInterfacesAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs index 2cd2666e90..7a99916a01 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidExcessiveParametersOnGenericTypes.cs @@ -27,7 +27,7 @@ public sealed class AvoidExcessiveParametersOnGenericTypes : DiagnosticAnalyzer isDataflowRule: false, isEnabledByDefaultInAggressiveMode: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs index 90033cec50..25fb5e35f2 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidOutParameters.cs @@ -28,7 +28,7 @@ public sealed class AvoidOutParameters : DiagnosticAnalyzer isDataflowRule: false, isEnabledByDefaultInAggressiveMode: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs index 4768a6e7fd..e2b022d152 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CancellationTokenParametersMustComeLast.cs @@ -29,7 +29,7 @@ public sealed class CancellationTokenParametersMustComeLastAnalyzer : Diagnostic isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs index ff51f21930..920f797a02 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionPropertiesShouldBeReadOnly.cs @@ -46,7 +46,7 @@ public class CollectionPropertiesShouldBeReadOnlyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs index 67b351bdb8..5462c2616d 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.cs @@ -33,7 +33,7 @@ public sealed class CollectionsShouldImplementGenericInterfaceAnalyzer : Diagnos isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs index 04c021aab8..22f8e1e30f 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.cs @@ -28,7 +28,7 @@ public sealed class DeclareTypesInNamespacesAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs index 9cba648c8b..95c88ddd13 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.cs @@ -59,7 +59,7 @@ public sealed class DefineAccessorsForAttributeArgumentsAnalyzer : DiagnosticAna isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, IncreaseVisibilityRule, RemoveSetterRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, IncreaseVisibilityRule, RemoveSetterRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs index 5ed86408c5..fcccd71e62 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotCatchGeneralExceptionTypes.cs @@ -29,7 +29,7 @@ internal sealed class DoNotCatchGeneralExceptionTypesAnalyzer : DoNotCatchGenera isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public DoNotCatchGeneralExceptionTypesAnalyzer() : base(shouldCheckLambdas: true, allowExcludedSymbolNames: true) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs index 567ba6df26..91315728f1 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareProtectedMembersInSealedTypes.cs @@ -30,7 +30,7 @@ public sealed class DoNotDeclareProtectedMembersInSealedTypes : DiagnosticAnalyz isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs index 28e56e92f0..6941428409 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareStaticMembersOnGenericTypes.cs @@ -28,7 +28,7 @@ public sealed class DoNotDeclareStaticMembersOnGenericTypesAnalyzer : Diagnostic isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs index c07e158ad1..2ededa9507 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDeclareVisibleInstanceFields.cs @@ -29,7 +29,7 @@ public sealed class DoNotDeclareVisibleInstanceFieldsAnalyzer : DiagnosticAnalyz isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs index 4d4e627eba..3a634619b2 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.cs @@ -31,7 +31,7 @@ public sealed class DoNotDirectlyAwaitATaskAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs index 0dd807a399..baff44419c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotExposeGenericLists.cs @@ -25,7 +25,7 @@ public sealed class DoNotExposeGenericLists : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs index d330db3e63..2193acf5d2 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.cs @@ -30,7 +30,7 @@ public sealed class DoNotHideBaseClassMethodsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs index 98b8e6e2eb..5b5f4e2511 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs @@ -27,7 +27,7 @@ public sealed class DoNotNameEnumValuesReserved : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs index 3d1fb07cd4..b76cbf1017 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotOverloadOperatorEqualsOnReferenceTypes.cs @@ -25,7 +25,7 @@ public sealed class DoNotOverloadOperatorEqualsOnReferenceTypes : DiagnosticAnal isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs index baef2fb1b2..0aacf71dde 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPassTypesByReference.cs @@ -26,7 +26,7 @@ public sealed class DoNotPassTypesByReference : DiagnosticAnalyzer isDataflowRule: false, isEnabledByDefaultInAggressiveMode: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs index 2f94990d3a..4a5aa38691 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotPrefixEnumValuesWithTypeName.cs @@ -34,7 +34,7 @@ public sealed class DoNotPrefixEnumValuesWithTypeNameAnalyzer : DiagnosticAnalyz isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs index bc3bd2df1e..7d31db6212 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotRaiseExceptionsInUnexpectedLocations.cs @@ -55,8 +55,8 @@ public sealed class DoNotRaiseExceptionsInUnexpectedLocationsAnalyzer : Diagnost isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics - => ImmutableArray.Create(PropertyGetterRule, HasAllowedExceptionsRule, NoAllowedExceptionsRule); + public override ImmutableArray SupportedDiagnostics { get; } = + ImmutableArray.Create(PropertyGetterRule, HasAllowedExceptionsRule, NoAllowedExceptionsRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs index d951a4da9c..53242469f2 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumShouldNotHaveDuplicatedValues.cs @@ -40,7 +40,7 @@ public class EnumShouldNotHaveDuplicatedValues : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleDuplicatedValue, RuleDuplicatedBitwiseValuePart); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleDuplicatedValue, RuleDuplicatedBitwiseValuePart); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs index a09c7a3b41..d8711ab0c4 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.cs @@ -31,7 +31,7 @@ public sealed class EnumStorageShouldBeInt32Analyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs index abecc598d5..d4cfd0477e 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.cs @@ -58,7 +58,7 @@ public sealed class EnumWithFlagsAttributeAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule1027, Rule2217); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule1027, Rule2217); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs index 472df45003..179101a24e 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.cs @@ -79,7 +79,7 @@ public sealed class EnumsShouldHaveZeroValueAnalyzer : DiagnosticAnalyzer isDataflowRule: false, additionalCustomTags: RuleNoZeroCustomTag); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleRename, RuleMultipleZero, RuleNoZero); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleRename, RuleMultipleZero, RuleNoZero); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs index 4c828e8ca0..1b1446937b 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.cs @@ -37,7 +37,7 @@ public sealed class EquatableAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ImplementIEquatableDescriptor, OverridesObjectEqualsDescriptor); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ImplementIEquatableDescriptor, OverridesObjectEqualsDescriptor); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs index 0573acac48..9617c82cf8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EventsShouldNotHaveBeforeOrAfterPrefix.cs @@ -29,7 +29,7 @@ public sealed class EventsShouldNotHaveBeforeOrAfterPrefix : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); private static readonly ImmutableHashSet s_invalidPrefixes = ImmutableHashSet.Create(AfterKeyword, BeforeKeyword); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs index ae2a0a08ad..577c341e44 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.cs @@ -30,7 +30,7 @@ public sealed class ExceptionsShouldBePublicAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); private static readonly List s_exceptionTypeNames = new() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs index 5002c10c44..6d62df7743 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldDifferByMoreThanCase.cs @@ -33,7 +33,7 @@ public sealed class IdentifiersShouldDifferByMoreThanCaseAnalyzer : DiagnosticAn isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs index 9765eebbcb..5742d456d6 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.cs @@ -40,7 +40,7 @@ public sealed class IdentifiersShouldHaveCorrectPrefixAnalyzer : DiagnosticAnaly isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(InterfaceRule, TypeParameterRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(InterfaceRule, TypeParameterRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs index 6f11ca86d1..9304aa71ac 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.cs @@ -45,7 +45,7 @@ public sealed class IdentifiersShouldHaveCorrectSuffixAnalyzer : DiagnosticAnaly isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, SpecialCollectionRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, SpecialCollectionRule); // Tuple says s // The bool values are as mentioned in the Uri diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs index dab9b66605..5840a87b7c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainTypeNames.cs @@ -76,7 +76,7 @@ public class IdentifiersShouldNotContainTypeNames : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs index 24ea36b6e3..19f666616f 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotContainUnderscores.cs @@ -114,7 +114,7 @@ public sealed class IdentifiersShouldNotContainUnderscoresAnalyzer : DiagnosticA isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(AssemblyRule, NamespaceRule, TypeRule, MemberRule, TypeTypeParameterRule, MethodTypeParameterRule, MemberParameterRule, DelegateParameterRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(AssemblyRule, NamespaceRule, TypeRule, MemberRule, TypeTypeParameterRule, MethodTypeParameterRule, MemberParameterRule, DelegateParameterRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs index c7eaa1bd0f..b4dd8709de 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.cs @@ -63,7 +63,7 @@ public sealed class IdentifiersShouldNotHaveIncorrectSuffixAnalyzer : Diagnostic isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( TypeNoAlternateRule, MemberNewerVersionRule, TypeNewerVersionRule, diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs index 058d03a794..1f1a997ed1 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.cs @@ -82,7 +82,7 @@ public sealed class IdentifiersShouldNotMatchKeywordsAnalyzer : DiagnosticAnalyz SymbolKind.Parameter ); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(MemberParameterRule, MemberRule, TypeRule, NamespaceRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(MemberParameterRule, MemberRule, TypeRule, NamespaceRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs index 17f27a44f6..68079a2010 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.cs @@ -119,7 +119,7 @@ public sealed class ImplementIDisposableCorrectlyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(IDisposableReimplementationRule, FinalizeOverrideRule, DisposeOverrideRule, DisposeSignatureRule, RenameDisposeRule, DisposeBoolSignatureRule, DisposeImplementationRule, FinalizeImplementationRule, ProvideDisposeBoolRule); public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs index fd4f6a510f..7eac9d1e55 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.cs @@ -42,7 +42,7 @@ internal enum MissingCtorSignature { CtorWithNoParameter, CtorWithStringParamete isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(MissingConstructorRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(MissingConstructorRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs index 3673727f12..8cb9418dfa 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.cs @@ -39,7 +39,7 @@ public sealed class InterfaceMethodsShouldBeCallableByChildTypesAnalyzer : Diagn isPortedFxCopRule: true, isDataflowRule: false); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs index a37aa893cc..abf2a12fc5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAttributesDiagnosticAnalyzer.cs @@ -38,7 +38,7 @@ public sealed class MarkAssembliesWithAttributesDiagnosticAnalyzer : DiagnosticA isDataflowRule: false, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(CA1016Rule, CA1014Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(CA1016Rule, CA1014Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs index 52517ade50..6ca14b04f8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.cs @@ -42,7 +42,7 @@ public sealed class MarkAssembliesWithComVisibleAnalyzer : DiagnosticAnalyzer isEnabledByDefaultInAggressiveMode: false, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleChangeComVisible, RuleAddComVisible); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleChangeComVisible, RuleAddComVisible); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs index 370c3d4ba5..06f5b82213 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.cs @@ -29,7 +29,7 @@ public sealed class MarkAttributesWithAttributeUsageAnalyzer : DiagnosticAnalyze isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs index 1618a15a05..262ee09200 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.cs @@ -34,7 +34,7 @@ public sealed class MovePInvokesToNativeMethodsClassAnalyzer : DiagnosticAnalyze private const string SafeNativeMethodsText = "SafeNativeMethods"; private const string UnsafeNativeMethodsText = "UnsafeNativeMethods"; - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs index c514f46fda..1d274aa909 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NestedTypesShouldNotBeVisible.cs @@ -43,7 +43,7 @@ public sealed class NestedTypesShouldNotBeVisibleAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, VisualBasicModuleRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, VisualBasicModuleRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs index 532b0a46b5..245080c86e 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.cs @@ -28,7 +28,7 @@ public sealed class NonConstantFieldsShouldNotBeVisibleAnalyzer : DiagnosticAnal isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs index b33a47ba58..6dd564734d 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.cs @@ -69,7 +69,7 @@ public sealed class OperatorOverloadsHaveNamedAlternatesAnalyzer : DiagnosticAna isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, PropertyRule, MultipleRule, VisibilityRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, PropertyRule, MultipleRule, VisibilityRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs index 3ab418e565..272ac051c9 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.cs @@ -28,7 +28,7 @@ public sealed class OperatorsShouldHaveSymmetricalOverloadsAnalyzer : Diagnostic isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs index 45b5b0e121..3c1d5a0d68 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.cs @@ -28,7 +28,7 @@ public sealed class OverloadOperatorEqualsOnOverridingValueTypeEqualsAnalyzer : isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs index e1c733c265..30edabe538 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.cs @@ -42,7 +42,7 @@ public class OverrideEqualsAndOperatorEqualsOnValueTypesAnalyzer : DiagnosticAna isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(EqualsRule, OpEqualityRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(EqualsRule, OpEqualityRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs index b4f4577efd..0c19c3b745 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.cs @@ -56,7 +56,7 @@ public sealed class OverrideMethodsOnComparableTypesAnalyzer : DiagnosticAnalyze isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleBoth, RuleEquals, RuleOperator); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleBoth, RuleEquals, RuleOperator); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs index 490de11601..19b0db36af 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ParameterNamesShouldMatchBaseDeclaration.cs @@ -31,7 +31,7 @@ public sealed class ParameterNamesShouldMatchBaseDeclarationAnalyzer : Diagnosti isDataflowRule: false); /// - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); /// public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs index 11342bbb23..6f713228b9 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PassSystemUriObjectsInsteadOfStrings.cs @@ -31,7 +31,7 @@ public abstract class PassSystemUriObjectsInsteadOfStringsAnalyzer : DiagnosticA isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs index 9e111c112a..0810d61132 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.cs @@ -42,7 +42,7 @@ public sealed class PropertiesShouldNotBeWriteOnlyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(AddGetterRule, MakeMoreAccessibleRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(AddGetterRule, MakeMoreAccessibleRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs index 02aee5fea8..6ed389647c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotReturnArrays.cs @@ -28,7 +28,7 @@ public sealed class PropertiesShouldNotReturnArraysAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs index a02534507b..4f55cb76c8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.cs @@ -32,7 +32,7 @@ public sealed class PropertyNamesShouldNotMatchGetMethodsAnalyzer : DiagnosticAn isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs index 18ed5d8822..28a28e9876 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ProvideObsoleteAttributeMessage.cs @@ -29,7 +29,7 @@ public sealed class ProvideObsoleteAttributeMessageAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs index 16a398d51c..a693c3c3de 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/StaticHolderTypes.cs @@ -52,7 +52,7 @@ public sealed class StaticHolderTypesAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs index 40c579a800..a6368bbbbd 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.cs @@ -46,7 +46,7 @@ public sealed class TypeNamesShouldNotMatchNamespacesAnalyzer : DiagnosticAnalyz isDataflowRule: false, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, SystemRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, SystemRule); private static readonly object s_lock = new(); private static ImmutableDictionary? s_wellKnownSystemNamespaceTable; diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs index ca433febd3..2af0c99091 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.cs @@ -32,7 +32,7 @@ public abstract class TypesThatOwnDisposableFieldsShouldBeDisposableAnalyzer SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs index 0b907ed4c9..9dc8df4b03 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.cs @@ -29,7 +29,7 @@ public class UriParametersShouldNotBeStringsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs index d1032c6934..9afbb671ba 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriPropertiesShouldNotBeStrings.cs @@ -28,7 +28,7 @@ public class UriPropertiesShouldNotBeStringsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs index 0e3ef9f93b..94a8a000d2 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriReturnValuesShouldNotBeStrings.cs @@ -28,7 +28,7 @@ public class UriReturnValuesShouldNotBeStringsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs index 519371debf..47b5538215 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.cs @@ -36,7 +36,7 @@ public sealed class UseEventsWhereAppropriateAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs index b3e9ae3b43..7ef5871e62 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseGenericEventHandlerInstances.cs @@ -58,7 +58,7 @@ public sealed class UseGenericEventHandlerInstancesAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleForDelegates, RuleForEvents, RuleForEvents2); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleForDelegates, RuleForEvents, RuleForEvents2); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs index aea446feea..aaff9f8ea3 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseIntegralOrStringArgumentForIndexers.cs @@ -45,7 +45,7 @@ public sealed class UseIntegralOrStringArgumentForIndexersAnalyzer : DiagnosticA SpecialType.System_UInt64 ); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs index 04311aac8b..9b44d78622 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.cs @@ -192,7 +192,7 @@ public abstract class UsePreferredTermsAnalyzer : DiagnosticAnalyzer isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(AssemblyRule, NamespaceRule, MemberParameterRule, DelegateParameterRule, TypeTypeParameterRule, MethodTypeParameterRule, TypeRule, MemberRule, AssemblyNoAlternateRule, NamespaceNoAlternateRule, MemberParameterNoAlternateRule, DelegateParameterNoAlternateRule, TypeTypeParameterNoAlternateRule, MethodTypeParameterNoAlternateRule, TypeNoAlternateRule, MemberNoAlternateRule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs index 219e3b9fd9..b0e92483f5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.cs @@ -36,7 +36,7 @@ public sealed class UsePropertiesWhereAppropriateAnalyzer : DiagnosticAnalyzer private const string GetEnumeratorName = "GetEnumerator"; private const string GetPinnableReferenceName = "GetPinnableReference"; - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs index 0cac944764..37adc708fc 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.cs @@ -126,7 +126,7 @@ public abstract class AvoidCallingProblematicMethodsAnalyzer : DiagnosticAnalyze isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; // ImmutableArray.Create(SystemGCCollectRule, SystemThreadingThreadResumeRule, SystemThreadingThreadSuspendRule, SystemTypeInvokeMemberRule, CoInitializeSecurityRule, CoSetProxyBlanketRule, SystemRuntimeInteropServicesSafeHandleDangerousGetHandleRule, SystemReflectionAssemblyLoadFromRule, SystemReflectionAssemblyLoadFileRule, SystemReflectionAssemblyLoadWithPartialNameRule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs index 5807088641..51ed75d403 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.cs @@ -26,7 +26,7 @@ public abstract class AvoidUsingCrefTagsWithAPrefixAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); protected static void ProcessAttribute(SyntaxNodeAnalysisContext context, SyntaxTokenList textTokens) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs index 8651ce448b..daa42f0553 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidDeadConditionalCode.cs @@ -49,7 +49,7 @@ public sealed class AvoidDeadConditionalCode : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(AlwaysTrueFalseOrNullRule, NeverNullRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(AlwaysTrueFalseOrNullRule, NeverNullRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs index 702feed831..98ccc0f003 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.cs @@ -33,7 +33,7 @@ public abstract class AvoidUninstantiatedInternalClassesAnalyzer : DiagnosticAna isDataflowRule: false, isReportedAtCompilationEnd: true); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public abstract void RegisterLanguageSpecificChecks(CompilationStartAnalysisContext context, ConcurrentDictionary instantiatedTypes); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs index 5c6980c7d1..41eaa4820a 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.cs @@ -31,7 +31,7 @@ public sealed class AvoidUnusedPrivateFieldsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs index e0be1eb5f6..50963fdcff 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/CodeMetricsAnalyzer.cs @@ -108,7 +108,7 @@ public sealed class CodeMetricsAnalyzer : DiagnosticAnalyzer isEnabledByDefaultInAggressiveMode: false, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(CA1501Rule, CA1502Rule, CA1505Rule, CA1506Rule, InvalidEntryInCodeMetricsConfigFileRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(CA1501Rule, CA1502Rule, CA1505Rule, CA1506Rule, InvalidEntryInCodeMetricsConfigFileRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs index 3b07afe1cd..6be3c385e8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/DoNotIgnoreMethodResults.cs @@ -135,7 +135,7 @@ public sealed class DoNotIgnoreMethodResultsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ObjectCreationRule, StringCreationRule, HResultOrErrorCodeRule, TryParseRule, PureMethodRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ObjectCreationRule, StringCreationRule, HResultOrErrorCodeRule, TryParseRule, PureMethodRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs index 075e4207a9..c5a7be617e 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.cs @@ -31,7 +31,7 @@ public abstract class ReviewUnusedParametersAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs index 23b726de08..956ac67a22 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.cs @@ -32,7 +32,7 @@ public abstract class UseNameofInPlaceOfStringAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleWithSuggestion); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleWithSuggestion); protected abstract bool IsApplicableToLanguageVersion(ParseOptions options); diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs index cd9c7f31f5..3f41c5ed34 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.cs @@ -38,7 +38,7 @@ public abstract class VariableNamesShouldNotMatchFieldNamesAnalyzer : Diagnostic isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(LocalRule, ParameterRule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs index e3ed29f9e0..5b986db100 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs @@ -32,7 +32,7 @@ public sealed class AssigningSymbolAndItsMemberInSameStatement : DiagnosticAnaly isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs index ede177f23a..31e230b2cd 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidDuplicateElementInitialization.cs @@ -32,7 +32,7 @@ public sealed class AvoidDuplicateElementInitialization : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs index 4fbb12a7f8..630ba80349 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidInfiniteRecursion.cs @@ -34,7 +34,7 @@ public sealed class AvoidInfiniteRecursion : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule, MaybeRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule, MaybeRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs index 914d3b4349..44e360e326 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/AvoidPropertySelfAssignment.cs @@ -29,7 +29,7 @@ public sealed class AvoidPropertySelfAssignment : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs index 94d7caafd5..069327d9b5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotCallOverridableMethodsInConstructors.cs @@ -36,7 +36,7 @@ public sealed class DoNotCallOverridableMethodsInConstructorsAnalyzer : Diagnost isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs index 33030f2c6b..58a32bf350 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotDeclareEventFieldsAsVirtual.cs @@ -27,7 +27,7 @@ public sealed class DoNotDeclareEventFieldsAsVirtual : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs index dc0efb5910..d079de91ee 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotInitializeUnnecessarily.cs @@ -26,7 +26,7 @@ public abstract class DoNotInitializeUnnecessarilyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule); /// /// Special-case `null!`/`default!` to not warn about it, as it's often used to suppress nullable warnings on fields. diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs index 17a73dca15..93ae425c64 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/DoNotRaiseExceptionsInExceptionClauses.cs @@ -36,7 +36,7 @@ public sealed class DoNotRaiseExceptionsInExceptionClausesAnalyzer : DiagnosticA isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs index 499e451e7b..ea6b4018ae 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.cs @@ -32,7 +32,7 @@ public sealed class MarkMembersAsStaticAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs index 502bdae0fe..3cb183293e 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.cs @@ -52,7 +52,7 @@ public sealed class PreferJaggedArraysOverMultidimensionalAnalyzer : DiagnosticA isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, ReturnRule, BodyRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, ReturnRule, BodyRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs index b8031a7490..f096f2bcba 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.cs @@ -26,7 +26,7 @@ public sealed class RemoveEmptyFinalizersAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs index 3ef1510749..337cdde6e3 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.cs @@ -26,7 +26,7 @@ public sealed class RethrowToPreserveStackDetailsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs index 417d0eb0e7..3dcfb15392 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.cs @@ -28,7 +28,7 @@ public sealed class ReviewVisibleEventHandlersAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs index c69dfd9030..b913ca84a8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.cs @@ -29,7 +29,7 @@ public sealed class SealMethodsThatSatisfyPrivateInterfacesAnalyzer : Diagnostic isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs index dd83be4200..69f5a3514e 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.cs @@ -42,7 +42,7 @@ public abstract class UseLiteralsWhereAppropriateAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, EmptyStringRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, EmptyStringRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs index 438ca082fa..68b8c22d36 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ValidateArgumentsOfPublicMethods.cs @@ -28,7 +28,7 @@ public sealed class ValidateArgumentsOfPublicMethods : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs index 45b1038801..8f04ed069e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Data/ReviewSqlQueriesForSecurityVulnerabilities.cs @@ -30,7 +30,7 @@ public sealed class ReviewSqlQueriesForSecurityVulnerabilities : DiagnosticAnaly isPortedFxCopRule: true, isDataflowRule: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs index f9ceb89eef..6fae7ee372 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.cs @@ -45,7 +45,7 @@ public sealed class DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAn public static ImmutableArray ToImmutableMethodNames => ImmutableCollectionMetadataNames.Keys.ToImmutableArray(); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs index 8b1da33e42..fdfad15c01 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/AvoidStringBuilderPInvokeParameters.cs @@ -28,7 +28,7 @@ public sealed class AvoidStringBuilderPInvokeParametersAnalyzer : DiagnosticAnal isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs index 0ba855db51..04eac77d82 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/DoNotUseOutAttributeStringPInvokeParameters.cs @@ -28,7 +28,7 @@ public sealed class DoNotUseOutAttributeStringPInvokeParametersAnalyzer : Diagno isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs index fd18b2e996..a6031f78a2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.cs @@ -35,7 +35,7 @@ public abstract class MarkBooleanPInvokeArgumentsWithMarshalAsAnalyzer : Diagnos isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(DefaultRule, ReturnRule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs index ca3f7fdd84..ea7927151e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PInvokeDiagnosticAnalyzer.cs @@ -40,7 +40,7 @@ public sealed class PInvokeDiagnosticAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleCA1401, RuleCA2101); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleCA1401, RuleCA2101); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs index 399355920d..353c1ace81 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/PlatformCompatibilityAnalyzer.cs @@ -120,7 +120,7 @@ public sealed partial class PlatformCompatibilityAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(OnlySupportedCsReachable, OnlySupportedCsUnreachable, + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(OnlySupportedCsReachable, OnlySupportedCsUnreachable, OnlySupportedCsAllPlatforms, SupportedCsAllPlatforms, SupportedCsReachable, UnsupportedCsAllPlatforms, UnsupportedCsReachable); public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs index 9af78f27b2..14d1c7d5f5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.cs @@ -24,7 +24,7 @@ public abstract class UseManagedEquivalentsOfWin32ApiAnalyzer : DiagnosticAnalyz isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs index 9f525083ac..11546b7556 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseCountProperly.cs @@ -88,8 +88,8 @@ public sealed class UseCountProperlyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics - => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } + = ImmutableArray.Create( s_rule_CA1827, s_rule_CA1828, s_rule_CA1829, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs index 837e6fc79c..763d439f58 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Publish/AvoidAssemblyLocationInSingleFile.cs @@ -44,7 +44,7 @@ public sealed class AvoidAssemblyLocationInSingleFile : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(LocationRule, GetFilesRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(LocationRule, GetFilesRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs index 18a3859ccd..675658b207 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Resources/MarkAssembliesWithNeutralResourcesLanguage.cs @@ -38,7 +38,7 @@ public abstract class MarkAssembliesWithNeutralResourcesLanguageAnalyzer : Diagn protected abstract void RegisterAttributeAnalyzer(CompilationStartAnalysisContext context, Action onResourceFound, INamedTypeSymbol generatedCode); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs index 298afe4ae0..2627aa75fd 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AttributeStringLiteralsShouldParseCorrectly.cs @@ -47,7 +47,7 @@ public sealed class AttributeStringLiteralsShouldParseCorrectlyAnalyzer : Diagno isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DefaultRule, EmptyRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DefaultRule, EmptyRule); private static readonly List s_tokensToValueValidator = new( diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs index d2bd6ff79c..fd70b51cac 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.cs @@ -30,7 +30,7 @@ public sealed class AvoidUnsealedAttributesAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs index 3a8f22a829..f5de9ddbe6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.cs @@ -41,7 +41,7 @@ public abstract class AvoidZeroLengthArrayAllocationsAnalyzer : DiagnosticAnalyz isDataflowRule: false); /// Gets the set of supported diagnostic descriptors from this analyzer. - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(UseArrayEmptyDescriptor); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(UseArrayEmptyDescriptor); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs index 718ecdf5c1..f615624abe 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.cs @@ -63,7 +63,7 @@ public sealed class CallGCSuppressFinalizeCorrectlyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(NotCalledWithFinalizerRule, NotCalledRule, NotPassedThisRule, OutsideDisposeRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(NotCalledWithFinalizerRule, NotCalledRule, NotPassedThisRule, OutsideDisposeRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs index d957cf0581..4e95c9b995 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableFieldsShouldBeDisposed.cs @@ -33,7 +33,7 @@ public sealed class DisposableFieldsShouldBeDisposed : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs index 47431fd591..167cc477d8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.cs @@ -31,7 +31,7 @@ public sealed class DisposableTypesShouldDeclareFinalizerAnalyzer : DiagnosticAn isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs index 77b385e26c..cabcf3e669 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.cs @@ -34,7 +34,7 @@ public sealed class DisposeMethodsShouldCallBaseClassDispose : DiagnosticAnalyze isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs index 3d4917fed1..02a37eae07 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeObjectsBeforeLosingScope.cs @@ -66,8 +66,8 @@ public sealed class DisposeObjectsBeforeLosingScope : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: true); - public override ImmutableArray SupportedDiagnostics - => ImmutableArray.Create(NotDisposedRule, MayBeDisposedRule, NotDisposedOnExceptionPathsRule, MayBeDisposedOnExceptionPathsRule); + public override ImmutableArray SupportedDiagnostics { get; } = + ImmutableArray.Create(NotDisposedRule, MayBeDisposedRule, NotDisposedOnExceptionPathsRule, MayBeDisposedOnExceptionPathsRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs index 437c4495a6..8853222d9a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotDefineFinalizersForTypesDerivedFromMemoryManager.cs @@ -29,7 +29,7 @@ public sealed class DoNotDefineFinalizersForTypesDerivedFromMemoryManager : Diag isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs index 866085d6dc..232658ed5c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.cs @@ -37,7 +37,7 @@ public sealed class DoNotLockOnObjectsWithWeakIdentityAnalyzer : DiagnosticAnaly isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs index 912b08034e..91392dbe88 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotPassLiteralsAsLocalizedParameters.cs @@ -44,7 +44,7 @@ public sealed class DoNotPassLiteralsAsLocalizedParameters : AbstractGlobalizati isPortedFxCopRule: true, isDataflowRule: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); protected override void InitializeWorker(CompilationStartAnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs index 513ca828f2..9c8d199c17 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotRaiseReservedExceptionTypes.cs @@ -76,7 +76,7 @@ public sealed class DoNotRaiseReservedExceptionTypesAnalyzer : DiagnosticAnalyze private static readonly SymbolDisplayFormat s_symbolDisplayFormat = new(typeQualificationStyle: SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(TooGenericRule, ReservedRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(TooGenericRule, ReservedRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs index 6bc0fd4521..54faa3c63f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.cs @@ -38,7 +38,7 @@ public sealed class DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseThe isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs index e1e92b452e..c69eab6624 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseReferenceEqualsWithValueTypes.cs @@ -42,7 +42,7 @@ public sealed class DoNotUseReferenceEqualsWithValueTypesAnalyzer : DiagnosticAn isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(MethodRule, ComparerRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(MethodRule, ComparerRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs index b9ec38f03a..11f7b9ea94 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseStackallocInLoopsAnalyzer.cs @@ -23,6 +23,6 @@ public abstract class DoNotUseStackallocInLoopsAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); } } diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs index e99662c36c..31b0c01c3a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs @@ -24,7 +24,7 @@ public abstract class DoNotUseTimersThatPreventPowerStateChangesAnalyzer : Diagn isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs index de8014432e..8b8f55a9a3 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Analyzer.cs @@ -56,7 +56,7 @@ public abstract class ForwardCancellationTokenToInvocationsAnalyzer : Diagnostic internal const string ArgumentName = "ArgumentName"; internal const string ParameterName = "ParameterName"; - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ForwardCancellationTokenToInvocationsRule); public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs index 44563ff1ce..b1af08359a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.cs @@ -49,7 +49,7 @@ public abstract class ImplementISerializableCorrectlyAnalyzer : DiagnosticAnalyz isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //DiagnosticHelpers.EnabledByDefaultIfNotBuildingVSIX ? ImmutableArray.Create(DefaultRule, MakeVisibleRule, MakeOverridableRule) : ImmutableArray.Empty; #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs index 75892a3196..0a926ffdf5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.cs @@ -71,7 +71,7 @@ public abstract class ImplementSerializationMethodsCorrectlyAnalyzer : Diagnosti isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //DiagnosticHelpers.EnabledByDefaultIfNotBuildingVSIX ? ImmutableArray.Create(VisibilityRule, ReturnTypeRule, ParametersRule, GenericRule, StaticRule) : ImmutableArray.Empty; #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs index 9aaf3ffc40..b123a15cd9 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.cs @@ -44,7 +44,7 @@ public sealed class InitializeStaticFieldsInlineAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(CA1810Rule, CA2207Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(CA1810Rule, CA2207Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs index 5e4e5bf14d..02107ec338 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.cs @@ -54,7 +54,7 @@ public sealed class InstantiateArgumentExceptionsCorrectlyAnalyzer : DiagnosticA isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleNoArguments, RuleIncorrectMessage, RuleIncorrectParameterName); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleNoArguments, RuleIncorrectMessage, RuleIncorrectParameterName); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs index 4f77d3c583..12d2bb1437 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.cs @@ -36,7 +36,7 @@ public sealed class NormalizeStringsToUppercaseAnalyzer : AbstractGlobalizationD isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ToUpperRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ToUpperRule); protected override void InitializeWorker(CompilationStartAnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs index af9a12d928..a02ab8ea30 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitStringAnalyzer.cs @@ -30,7 +30,7 @@ public sealed class PreferConstCharOverConstUnitStringAnalyzer : DiagnosticAnaly isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs index d939ab04c5..a3ccb9d8a2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.cs @@ -58,7 +58,7 @@ public sealed class PreferStreamAsyncMemoryOverloads : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(PreferStreamReadAsyncMemoryOverloadsRule, PreferStreamWriteAsyncMemoryOverloadsRule); public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs index e1958c05e7..1c819966ec 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOfAnalyzer.cs @@ -30,7 +30,7 @@ public sealed class PreferStringContainsOverIndexOfAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs index 8aefaae32e..732f4ae503 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.cs @@ -28,7 +28,7 @@ public sealed class PreferTypedStringBuilderAppendOverloads : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs index ad2a179089..244ae92372 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideCorrectArgumentsToFormattingMethods.cs @@ -32,7 +32,7 @@ public class ProvideCorrectArgumentsToFormattingMethodsAnalyzer : DiagnosticAnal isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs index b62750b606..a56bba4bda 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.cs @@ -38,7 +38,7 @@ public abstract class ProvideDeserializationMethodsForOptionalFieldsAnalyzer : D isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(OnDeserializedRule, OnDeserializingRule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs index c468d3cfce..8543a49d8a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SerializationRulesDiagnosticAnalyzer.cs @@ -76,7 +76,7 @@ public sealed class SerializationRulesDiagnosticAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleCA2229Default, RuleCA2229Sealed, RuleCA2229Unsealed, RuleCA2235, RuleCA2237); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleCA2229Default, RuleCA2229Sealed, RuleCA2229Unsealed, RuleCA2235, RuleCA2237); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs index 47cdbd0f31..9554470ab8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.cs @@ -32,7 +32,7 @@ public sealed class SpecifyCultureInfoAnalyzer : AbstractGlobalizationDiagnostic isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); protected override void InitializeWorker(CompilationStartAnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs index 6e68e5c668..6ca00136f7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.cs @@ -67,7 +67,7 @@ public sealed class SpecifyIFormatProviderAnalyzer : AbstractGlobalizationDiagno private static readonly ImmutableArray s_dateInvariantFormats = ImmutableArray.Create("o", "O", "r", "R", "s", "u"); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(IFormatProviderAlternateStringRule, IFormatProviderAlternateRule, UICultureStringRule, UICultureRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(IFormatProviderAlternateStringRule, IFormatProviderAlternateRule, UICultureStringRule, UICultureRule); protected override void InitializeWorker(CompilationStartAnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs index 69f6492f3f..d9a44c68cb 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.cs @@ -46,7 +46,7 @@ public sealed class SpecifyStringComparisonAnalyzer : AbstractGlobalizationDiagn isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule_CA1307, Rule_CA1310); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule_CA1307, Rule_CA1310); protected override void InitializeWorker(CompilationStartAnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs index bebba571ec..2f757f2877 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.cs @@ -39,7 +39,7 @@ public sealed class TestForEmptyStringsUsingStringLengthAnalyzer : DiagnosticAna isPortedFxCopRule: true, isDataflowRule: false); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(s_rule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(s_rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs index a0ae2a890d..91ca9b0f66 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.cs @@ -30,7 +30,7 @@ public sealed class TestForNaNCorrectlyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); private readonly BinaryOperatorKind[] _comparisonOperators = new[] { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs index 830eacb4bb..d46a9900d0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessId.cs @@ -28,7 +28,7 @@ public sealed class UseEnvironmentProcessId : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs index 471644917e..da608400af 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.cs @@ -39,7 +39,7 @@ public abstract class UseOrdinalStringComparisonAnalyzer : AbstractGlobalization protected abstract Location GetMethodNameLocation(SyntaxNode invocationNode); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); protected override void InitializeWorker(CompilationStartAnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs index d0187c76c6..077646831f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ApprovedCipherModeAnalyzer.cs @@ -27,7 +27,7 @@ public sealed class ApprovedCipherModeAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); internal static ImmutableHashSet UnsafeCipherModes = ImmutableHashSet.Create( StringComparer.Ordinal, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs index 87bbfd42b0..a552676e79 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs @@ -30,7 +30,7 @@ public abstract class DataSetDataTableInIFormatterSerializableObjectGraphAnalyze isDataflowRule: false, isReportedAtCompilationEnd: false); - public sealed override ImmutableArray SupportedDiagnostics => + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ObjectGraphContainsDangerousTypeDescriptor); protected abstract string ToString(TypedConstant typedConstant); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs index 7ffe32d596..2f65e56bf8 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableObjectGraphAnalyzer.cs @@ -40,7 +40,7 @@ public abstract class DataSetDataTableInSerializableObjectGraphAnalyzer : Diagno isDataflowRule: false, isReportedAtCompilationEnd: false); - public sealed override ImmutableArray SupportedDiagnostics => + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ObjectGraphContainsDangerousTypeDescriptor); protected abstract string ToString(TypedConstant typedConstant); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs index ff83c27a89..8e598681a3 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInSerializableTypeAnalyzer.cs @@ -53,7 +53,7 @@ public abstract class DataSetDataTableInSerializableTypeAnalyzer : DiagnosticAna isDataflowRule: false, isReportedAtCompilationEnd: false); - public sealed override ImmutableArray SupportedDiagnostics => + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( RceSerializableContainsDangerousType, SerializableContainsDangerousType, diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs index fb6127cdc5..1320471849 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DataSetDataTableInWebSerializableObjectGraphAnalyzer.cs @@ -30,7 +30,7 @@ public abstract class DataSetDataTableInWebSerializableObjectGraphAnalyzer : Dia isDataflowRule: false, isReportedAtCompilationEnd: false); - public sealed override ImmutableArray SupportedDiagnostics => + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ObjectGraphContainsDangerousTypeDescriptor); protected abstract string ToString(TypedConstant typedConstant); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs index 4ac068f7e8..53e9708ad4 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotAddSchemaByURL.cs @@ -26,7 +26,7 @@ public sealed class DoNotAddSchemaByURL : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs index f2c1b864bc..6e8c9f4086 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotCallDangerousMethodsInDeserialization.cs @@ -43,7 +43,7 @@ public sealed class DoNotCallDangerousMethodsInDeserialization : DiagnosticAnaly isDataflowRule: false, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs index ae21a050f8..f0d138503c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableCertificateValidation.cs @@ -27,7 +27,7 @@ public sealed class DoNotDisableCertificateValidation : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs index f26434fd5e..8cd77611f7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpClientCRLCheck.cs @@ -43,7 +43,7 @@ internal class DoNotDisableHttpClientCRLCheck : DiagnosticAnalyzer isReportedAtCompilationEnd: true, descriptionResourceStringName: nameof(DoNotDisableHttpClientCRLCheckDescription)); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyDisableHttpClientCRLCheckRule, MaybeDisableHttpClientCRLCheckRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs index 05bcc638f7..1562e06aee 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableHttpHeaderChecking.cs @@ -26,7 +26,7 @@ public sealed class DoNotDisableHTTPHeaderChecking : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs index 63a3c6c927..4bd5499ada 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs @@ -26,7 +26,7 @@ public sealed class DoNotDisableRequestValidation : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs index 36ed661ce7..6355a9befa 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotInstallRootCert.cs @@ -44,7 +44,7 @@ public sealed class DoNotInstallRootCert : DiagnosticAnalyzer isReportedAtCompilationEnd: true, descriptionResourceStringName: nameof(DoNotInstallRootCertDescription)); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyInstallRootCertRule, MaybeInstallRootCertRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs index 1fef9bbf6d..a734bda43d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSerializeTypeWithPointerFields.cs @@ -28,7 +28,7 @@ public sealed class DoNotSerializeTypeWithPointerFields : DiagnosticAnalyzer isDataflowRule: false, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs index 5fa5f76e85..8fe1833cd6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotSetSwitch.cs @@ -54,7 +54,7 @@ public sealed class DoNotSetSwitch : DiagnosticAnalyzer }.Select( (o) => new KeyValuePair(o.Item1, o.Item2))); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DoNotDisableSchUseStrongCryptoRule, DoNotDisableSpmSecurityProtocolsRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs index d4db8da1ad..c039706275 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseAccountSAS.cs @@ -26,7 +26,7 @@ public sealed class DoNotUseAccountSAS : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs index 7ad81444cf..eb96a2f3ca 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseCreateEncryptorWithNonDefaultIV.cs @@ -42,7 +42,7 @@ public sealed class DoNotUseCreateEncryptorWithNonDefaultIV : DiagnosticAnalyzer isReportedAtCompilationEnd: true, descriptionResourceStringName: nameof(DoNotUseCreateEncryptorWithNonDefaultIVDescription)); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyUseCreateEncryptorWithNonDefaultIVRule, MaybeUseCreateEncryptorWithNonDefaultIVRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs index 45b625c436..500abd444f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDSA.cs @@ -34,7 +34,7 @@ public sealed class DoNotUseDSA : DiagnosticAnalyzer "DSA", "System.Security.Cryptography.DSA"); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs index 31dbf792b8..99b0ba5843 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataSetReadXml.cs @@ -38,7 +38,7 @@ internal class DoNotUseDataSetReadXml : DoNotUseInsecureDeserializerMethodsBase isDataflowRule: false, isReportedAtCompilationEnd: false); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RealMethodUsedDescriptor, RealMethodUsedInAutogeneratedDescriptor); protected override DiagnosticDescriptor? ChooseDiagnosticDescriptor(OperationAnalysisContext operationAnalysisContext, WellKnownTypeProvider wellKnownTypeProvider) diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs index 4fded33068..37ef45b8ce 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDeprecatedSecurityProtocols.cs @@ -45,7 +45,7 @@ public sealed class DoNotUseDeprecatedSecurityProtocols : DiagnosticAnalyzer private const int HardCodedBits = 3072 | 12288; // SecurityProtocolType Tls12 Tls13 - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DeprecatedRule, HardCodedRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DeprecatedRule, HardCodedRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs index 628634eceb..b649f666d0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureCryptographicAlgorithms.cs @@ -41,7 +41,7 @@ public sealed class DoNotUseInsecureCryptographicAlgorithmsAnalyzer : Diagnostic isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DoNotUseBrokenCryptographyRule, DoNotUseWeakCryptographyRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DoNotUseBrokenCryptographyRule, DoNotUseWeakCryptographyRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs index 3bbf683061..bf091cd9ef 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJavascriptSerializerWithSimpleTypeResolver.cs @@ -47,7 +47,7 @@ internal class DoNotUseInsecureDeserializerJavaScriptSerializerWithSimpleTypeRes isDataflowRule: true, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyWithSimpleTypeResolver, MaybeWithSimpleTypeResolver); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs index 31e44f8ad7..1c548a9bf7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerJsonNetWithoutBinder.cs @@ -49,7 +49,7 @@ internal class DoNotUseInsecureDeserializerJsonNetWithoutBinder : DiagnosticAnal isDataflowRule: true, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyInsecureSerializer, MaybeInsecureSerializer); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs index 951cb5f0cf..cd10ae072f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs @@ -53,7 +53,7 @@ public abstract class DoNotUseInsecureDeserializerMethodsBase : DiagnosticAnalyz return MethodUsedDescriptor; } - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( this.MethodUsedDescriptor); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs index defd5ca2cc..381bead543 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs @@ -54,7 +54,7 @@ public abstract class DoNotUseInsecureDeserializerWithoutBinderBase : Diagnostic /// The string format message argument is the method signature. protected abstract DiagnosticDescriptor BinderMaybeNotSetDescriptor { get; } - public sealed override ImmutableArray SupportedDiagnostics => + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( this.BinderDefinitelyNotSetDescriptor, this.BinderMaybeNotSetDescriptor); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs index 0d9d0bbb68..715bbeabd6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureRandomness.cs @@ -26,7 +26,7 @@ public sealed class DoNotUseInsecureRandomness : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs index 5b28a899f8..82c778916b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureSettingsForJsonNet.cs @@ -48,7 +48,7 @@ public sealed class DoNotUseInsecureSettingsForJsonNet : DiagnosticAnalyzer isDataflowRule: true, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyInsecureSettings, MaybeInsecureSettings); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs index a64e4b9c5d..6bf72ff7ff 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseObsoleteKDFAlgorithm.cs @@ -26,7 +26,7 @@ public sealed class DoNotUseObsoleteKDFAlgorithm : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs index cd1cbd93dd..f77aa42ac2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFAlgorithm.cs @@ -27,7 +27,7 @@ public sealed class DoNotUseWeakKDFAlgorithm : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); private static readonly ImmutableHashSet s_WeakHashAlgorithmNames = ImmutableHashSet.Create("MD5", "SHA1"); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs index 8d11a9e9d8..032ae9ae7a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseWeakKDFInsufficientIterationCount.cs @@ -45,7 +45,7 @@ public sealed class DoNotUseWeakKDFInsufficientIterationCount : DiagnosticAnalyz isReportedAtCompilationEnd: true, descriptionResourceStringName: nameof(DoNotUseWeakKDFInsufficientIterationCountDescription)); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyUseWeakKDFInsufficientIterationCountRule, MaybeUseWeakKDFInsufficientIterationCountRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs index c46b34ba86..b8e715ca7d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseXslTransform.cs @@ -26,7 +26,7 @@ public sealed class DoNotUseXslTransform : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs index 497ae359b4..c282f45af2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/JsonNetTypeNameHandling.cs @@ -31,7 +31,7 @@ internal class JsonNetTypeNameHandling : DiagnosticAnalyzer isReportedAtCompilationEnd: false, descriptionResourceStringName: nameof(JsonNetTypeNameHandlingDescription)); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs index dc6382cc17..3df8635004 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/PotentialReferenceCycleInDeserializedObjectGraph.cs @@ -29,7 +29,7 @@ public sealed class PotentialReferenceCycleInDeserializedObjectGraph : Diagnosti isDataflowRule: false, isReportedAtCompilationEnd: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs index 39769cc0fe..d58e9927da 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetHttpOnlyForHttpCookie.cs @@ -31,7 +31,7 @@ internal class SetHttpOnlyForHttpCookie : DiagnosticAnalyzer isReportedAtCompilationEnd: true, descriptionResourceStringName: nameof(SetHttpOnlyForHttpCookieDescription)); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( Rule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs index 41899b0036..3385d1b982 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SetViewStateUserKey.cs @@ -27,7 +27,7 @@ public sealed class SetViewStateUserKey : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs index aac770aabd..34a2cd40f6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs @@ -41,7 +41,7 @@ public abstract class SourceTriggeredTaintedDataAnalyzerBase : DiagnosticAnalyze /// protected abstract SinkKind SinkKind { get; } - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(TaintedDataEnteringSinkDescriptor); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(TaintedDataEnteringSinkDescriptor); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs index 3a91bfcf52..0b4ffcba10 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SslProtocolsAnalyzer.cs @@ -46,7 +46,7 @@ public sealed class SslProtocolsAnalyzer : DiagnosticAnalyzer private const int HardcodedBits = 3072 | 12288; // SslProtocols Tls12 Tls13 - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DeprecatedRule, HardcodedRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DeprecatedRule, HardcodedRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs index 64030d203b..f5003f8dc1 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseAutoValidateAntiforgeryToken.cs @@ -54,7 +54,7 @@ public sealed class UseAutoValidateAntiforgeryToken : DiagnosticAnalyzer // It is used to translate ConcurrentDictionary into ConcurrentHashset, which is not provided. private const bool placeholder = true; - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( UseAutoValidateAntiforgeryTokenRule, MissHttpVerbAttributeRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs index f38304742a..098c2cbf7c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseContainerLevelAccessPolicy.cs @@ -37,7 +37,7 @@ public sealed class UseContainerLevelAccessPolicy : DiagnosticAnalyzer ("Queue", "accessPolicyIdentifier"), ("Table", "accessPolicyIdentifier")); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs index 6b4ad5d9a7..34180817ee 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseDefaultDllImportSearchPathsAttribute.cs @@ -43,7 +43,7 @@ public sealed class UseDefaultDllImportSearchPathsAttribute : DiagnosticAnalyzer private const int UnsafeBits = 2 | 256 | 512; private const int LegacyBehavior = 0; - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( UseDefaultDllImportSearchPathsAttributeRule, DoNotUseUnsafeDllImportSearchPathRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs index 951ed9caab..8de88da0db 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseRSAWithSufficientKeySize.cs @@ -36,7 +36,7 @@ public sealed class UseRSAWithSufficientKeySize : DiagnosticAnalyzer "System.Security.Cryptography.RSA", "System.Security.Cryptography.AsymmetricAlgorithm"); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs index 23aed4a018..52b1e2b69d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSecureCookiesASPNetCore.cs @@ -42,7 +42,7 @@ public sealed class UseSecureCookiesASPNetCore : DiagnosticAnalyzer isReportedAtCompilationEnd: true, descriptionResourceStringName: nameof(UseSecureCookiesASPNetCoreDescription)); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( DefinitelyUseSecureCookiesASPNetCoreRule, MaybeUseSecureCookiesASPNetCoreRule); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs index bda13aab43..c89a876c4f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseSharedAccessProtocolHttpsOnly.cs @@ -30,7 +30,7 @@ public sealed class UseSharedAccessProtocolHttpsOnly : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); /// /// SharedAccessProtocol.HttpsOnly = 1, SharedAccessProtocol.HttpsOrHttp = 2. diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs index 906295e3f6..73520f83ea 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs @@ -26,7 +26,7 @@ public abstract class UseXmlReaderBase : DiagnosticAnalyzer protected abstract DiagnosticDescriptor Rule { get; } - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); protected static LocalizableString Description { get; } = CreateLocalizableResourceString(nameof(UseXmlReaderDescription)); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs index 1b6cd06c41..9a829866c7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.cs @@ -26,7 +26,7 @@ public sealed class DoNotCreateTaskCompletionSourceWithWrongArguments : Diagnost isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs index f867f54b0b..94eac5bc1d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.cs @@ -30,7 +30,7 @@ public sealed class DoNotCreateTasksWithoutPassingATaskSchedulerAnalyzer : Diagn isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs index d2b09951d3..7ea3788264 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/UseValueTasksCorrectly.cs @@ -66,7 +66,7 @@ public sealed class UseValueTasksCorrectlyAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(GeneralRule, UnconsumedRule, DoubleConsumptionRule, AccessingIncompleteResultRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(GeneralRule, UnconsumedRule, DoubleConsumptionRule, AccessingIncompleteResultRule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs index 022e83b98c..c1478387bd 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Usage/ProvideCorrectArgumentToEnumHasFlag.cs @@ -26,7 +26,7 @@ public sealed class ProvideCorrectArgumentToEnumHasFlag : DiagnosticAnalyzer isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DifferentTypeRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DifferentTypeRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs index 7044cf3b98..4ac169ff9e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.cs @@ -24,7 +24,7 @@ public abstract class AvoidDuplicateAcceleratorsAnalyzer : DiagnosticAnalyzer isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs index 3add586dc0..367905a420 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs @@ -24,7 +24,7 @@ public abstract class CallBaseClassMethodsOnISerializableTypesAnalyzer : Diagnos isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs index b4bf0b3e08..adb5bcbd51 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotCatchCorruptedStateExceptions.cs @@ -26,7 +26,7 @@ internal sealed class DoNotCatchCorruptedStateExceptionsAnalyzer : DoNotCatchGen isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); // for now there doesn't seem to be any way to annotate lambdas with attributes, so there is no way for them to catch corrupted state exceptions public DoNotCatchCorruptedStateExceptionsAnalyzer() : base(shouldCheckLambdas: false, enablingMethodAttributeFullyQualifiedName: MethodAttributeTypeName) diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs index 6ae5d2ced1..aba8c9912e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.cs @@ -24,7 +24,7 @@ public abstract class DoNotMarkServicedComponentsWithWebMethodAnalyzer : Diagnos isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs index 425bfb82c4..25b1136f7a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessing.cs @@ -61,8 +61,8 @@ public sealed class DoNotUseInsecureDtdProcessingAnalyzer : DiagnosticAnalyzer internal static readonly DiagnosticDescriptor RuleReviewDtdProcessingProperties = CreateDiagnosticDescriptor(CreateLocalizableResourceString(nameof(ReviewDtdProcessingPropertiesMessage))); - public override ImmutableArray SupportedDiagnostics - => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } + = ImmutableArray.Create( RuleXmlDocumentWithNoSecureResolver, RuleXmlTextReaderConstructedWithNoSecureResolution, RuleDoNotUseDtdProcessingOverloads, diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs index 0f1468ae1b..e5bc76b9e4 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingInApiDesign.cs @@ -32,8 +32,8 @@ public sealed class DoNotUseInsecureDtdProcessingInApiDesignAnalyzer : Diagnosti isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics - => ImmutableArray.Create(RuleDoNotUseInsecureDtdProcessingInApiDesign); + public override ImmutableArray SupportedDiagnostics { get; } = + ImmutableArray.Create(RuleDoNotUseInsecureDtdProcessingInApiDesign); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs index 1167be7093..d4b2485967 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotUseInsecureXSLTScriptExecution.cs @@ -30,7 +30,7 @@ public sealed class DoNotUseInsecureXSLTScriptExecutionAnalyzer : DiagnosticAnal isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(RuleDoNotUseInsecureXSLTScriptExecution); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(RuleDoNotUseInsecureXSLTScriptExecution); #pragma warning disable RS1026 // Enable concurrent execution public override void Initialize(AnalysisContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs index cf8532c39b..f515c188d4 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs @@ -67,7 +67,7 @@ public partial class MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer : Diag isPortedFxCopRule: false, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(NoVerbsRule, NoVerbsNoTokenRule, GetAndTokenRule, GetAndOtherAndTokenRule, VerbsAndNoTokenRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(NoVerbsRule, NoVerbsNoTokenRule, GetAndTokenRule, GetAndOtherAndTokenRule, VerbsAndNoTokenRule); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs index d819e23602..bd6743ebb5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.cs @@ -24,7 +24,7 @@ public abstract class MarkWindowsFormsEntryPointsWithStaThreadAnalyzer : Diagnos isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs index cb4a2b5bbd..39ec05bef1 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs @@ -24,7 +24,7 @@ public abstract class SetLocaleForDataTypesAnalyzer : DiagnosticAnalyzer isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs index b8a4143545..ed6b51d559 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.cs @@ -24,7 +24,7 @@ public abstract class SpecifyMessageBoxOptionsAnalyzer : DiagnosticAnalyzer isDataflowRule: false, isEnabledByDefaultInFxCopAnalyzers: false);*/ - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Empty; + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Empty; //ImmutableArray.Create(Rule); #pragma warning disable RS1025 // Configure generated code analysis diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs index 2e4cc06ede..be36a18961 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.cs @@ -32,7 +32,7 @@ public sealed class TypesShouldNotExtendCertainBaseTypesAnalyzer : DiagnosticAna isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); private static readonly ImmutableDictionary s_badBaseTypesToMessage = new Dictionary { diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs index a9ac40cb44..84587f4df2 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/CallSiteImplicitAllocationAnalyzer.cs @@ -34,7 +34,7 @@ internal sealed class CallSiteImplicitAllocationAnalyzer : AbstractAllocationAna DiagnosticSeverity.Warning, isEnabledByDefault: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ParamsParameterRule, ValueTypeNonOverridenCallRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ParamsParameterRule, ValueTypeNonOverridenCallRule); protected override ImmutableArray Expressions => ImmutableArray.Create(SyntaxKind.InvocationExpression); diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs index e4b865cc1d..5eb910f4d5 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs @@ -37,7 +37,7 @@ internal sealed class ConcatenationAllocationAnalyzer : AbstractAllocationAnalyz isEnabledByDefault: true, helpLinkUri: "http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx"); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(StringConcatenationAllocationRule, ValueTypeToReferenceTypeInAStringConcatenationRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(StringConcatenationAllocationRule, ValueTypeToReferenceTypeInAStringConcatenationRule); protected override ImmutableArray Expressions => ImmutableArray.Create(SyntaxKind.AddExpression, SyntaxKind.AddAssignmentExpression); diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs index c9576159df..03b2b4ccfe 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/DisplayClassAllocationAnalyzer.cs @@ -45,7 +45,7 @@ internal sealed class DisplayClassAllocationAnalyzer : AbstractAllocationAnalyze DiagnosticSeverity.Warning, isEnabledByDefault: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ClosureCaptureRule, ClosureDriverRule, LambaOrAnonymousMethodInGenericMethodRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ClosureCaptureRule, ClosureDriverRule, LambaOrAnonymousMethodInGenericMethodRule); protected override ImmutableArray Expressions => ImmutableArray.Create(SyntaxKind.ParenthesizedLambdaExpression, SyntaxKind.SimpleLambdaExpression, SyntaxKind.AnonymousMethodExpression); diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs index d4156ca96b..a094f8093e 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/EnumeratorAllocationAnalyzer.cs @@ -26,7 +26,7 @@ internal sealed class EnumeratorAllocationAnalyzer : AbstractAllocationAnalyzer< DiagnosticSeverity.Warning, isEnabledByDefault: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ReferenceTypeEnumeratorRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ReferenceTypeEnumeratorRule); protected override ImmutableArray Expressions => ImmutableArray.Create(SyntaxKind.ForEachStatement, SyntaxKind.InvocationExpression); diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs index 7d39f6dd2e..9b75f72d73 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/TypeConversionAllocationAnalyzer.cs @@ -53,7 +53,7 @@ internal sealed class TypeConversionAllocationAnalyzer : AbstractAllocationAnaly DiagnosticSeverity.Info, isEnabledByDefault: true); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(ValueTypeToReferenceTypeConversionRule, DelegateOnStructInstanceRule, MethodGroupAllocationRule, ReadonlyMethodGroupAllocationRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(ValueTypeToReferenceTypeConversionRule, DelegateOnStructInstanceRule, MethodGroupAllocationRule, ReadonlyMethodGroupAllocationRule); protected override ImmutableArray Expressions => ImmutableArray.Create( SyntaxKind.SimpleAssignmentExpression, diff --git a/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs b/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs index 241ffc998f..31a85b41c3 100644 --- a/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs +++ b/src/PerformanceSensitiveAnalyzers/Core/ExplicitAllocationAnalyzer.cs @@ -61,7 +61,7 @@ internal sealed class ExplicitAllocationAnalyzer : AbstractAllocationAnalyzer private static readonly object[] EmptyMessageArgs = Array.Empty(); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( ArrayCreationRule, ObjectCreationRule, AnonymousObjectCreationRule, diff --git a/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs b/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs index 80676ba56f..781e76b88a 100644 --- a/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs +++ b/src/PublicApiAnalyzers/Core/Analyzers/DeclarePublicApiAnalyzer.cs @@ -209,7 +209,7 @@ public sealed partial class DeclarePublicApiAnalyzer : DiagnosticAnalyzer (SymbolDisplayMiscellaneousOptions)IncludeNullableReferenceTypeModifier | (SymbolDisplayMiscellaneousOptions)IncludeNonNullableReferenceTypeModifier); - public override ImmutableArray SupportedDiagnostics => + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DeclareNewApiRule, AnnotateApiRule, ObliviousApiRule, RemoveDeletedApiRule, ExposedNoninstantiableType, PublicApiFilesInvalid, PublicApiFileMissing, DuplicateSymbolInApiFiles, AvoidMultipleOverloadsWithOptionalParameters, OverloadWithOptionalParametersShouldHaveMostParameters, ShouldAnnotateApiFilesRule, RemovedApiIsNotActuallyRemovedRule); diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs index 44de3a5cb5..eb83987c38 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCode.cs @@ -37,7 +37,7 @@ public sealed class CSharpAvoidOptSuffixForNullableEnableCode : DiagnosticAnalyz helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs index ff412afe75..e1f24a932c 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteral.cs @@ -25,7 +25,7 @@ public sealed class PreferNullLiteral : DiagnosticAnalyzer helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs b/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs index 36d094afa0..997960238f 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/AbstractDoNotCopyValue.cs @@ -122,7 +122,7 @@ public abstract class AbstractDoNotCopyValue : DiagnosticAnalyzer helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule, UnsupportedUseRule, NoBoxingRule, NoUnboxingRule, NoFieldOfCopyableTypeRule, NoAutoPropertyRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule, UnsupportedUseRule, NoBoxingRule, NoUnboxingRule, NoFieldOfCopyableTypeRule, NoAutoPropertyRule); protected abstract NonCopyableWalker CreateWalker(OperationBlockAnalysisContext context, NonCopyableTypesCache cache); diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs index fc73f934e4..c7b14fada4 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DefaultableTypeShouldHaveDefaultableFieldsAnalyzer.cs @@ -31,7 +31,7 @@ public class DefaultableTypeShouldHaveDefaultableFieldsAnalyzer : DiagnosticAnal helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs index f4182d0233..d1ef4174c4 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotCallGetTestAccessor.cs @@ -25,7 +25,7 @@ public sealed class DoNotCallGetTestAccessor : DiagnosticAnalyzer description: CreateLocalizableResourceString(nameof(DoNotCallGetTestAccessorDescription)), customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DoNotCallGetTestAccessorRule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DoNotCallGetTestAccessorRule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs index de4cb04e1d..6f5144d291 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs @@ -32,7 +32,7 @@ public sealed class DoNotMixAttributesFromDifferentVersionsOfMEFAnalyzer : Diagn helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs index 9c4a015158..dfbd8f2d23 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotUseGenericCodeActionCreateToCreateCodeAction.cs @@ -26,7 +26,7 @@ public sealed class CodeActionCreateAnalyzer : DiagnosticAnalyzer isEnabledByDefault: true, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(DoNotUseCodeActionCreateRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DoNotUseCodeActionCreateRule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs b/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs index 0aa09f39d9..4b20c187f1 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructor.cs @@ -34,7 +34,7 @@ public sealed class ExportedPartsShouldHaveImportingConstructor : DiagnosticAnal helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs b/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs index b7aac9d3ea..5d057c391e 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsolete.cs @@ -35,7 +35,7 @@ public sealed class ImportingConstructorShouldBeObsolete : DiagnosticAnalyzer helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs b/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs index 9b8f0616f8..5e02fc2e91 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.cs @@ -30,7 +30,7 @@ public sealed class PartsExportedWithMEFv2MustBeMarkedAsSharedAnalyzer : Diagnos helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs index a68095f1f6..41be38e3f0 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/SpecializedEnumerableCreationAnalyzer.cs @@ -42,7 +42,7 @@ public abstract class SpecializedEnumerableCreationAnalyzer : DiagnosticAnalyzer isEnabledByDefault: true, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(UseEmptyEnumerableRule, UseSingletonEnumerableRule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(UseEmptyEnumerableRule, UseSingletonEnumerableRule); public override void Initialize(AnalysisContext context) { @@ -121,7 +121,7 @@ protected AbstractSyntaxAnalyzer(INamedTypeSymbol genericEnumerableSymbol, IMeth _genericEmptyEnumerableSymbol = genericEmptyEnumerableSymbol; } - public static ImmutableArray SupportedDiagnostics => ImmutableArray.Create(UseEmptyEnumerableRule, UseSingletonEnumerableRule); + public static ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(UseEmptyEnumerableRule, UseSingletonEnumerableRule); protected bool ShouldAnalyzeArrayCreationExpression(SyntaxNode expression, SemanticModel semanticModel, CancellationToken cancellationToken) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs b/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs index fcb5218fde..70120d88d5 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/SymbolDeclaredEventMustBeGeneratedForSourceSymbols.cs @@ -31,7 +31,7 @@ public abstract class SymbolDeclaredEventAnalyzer : DiagnosticAnaly description: CreateLocalizableResourceString(nameof(SymbolDeclaredEventMustBeGeneratedForSourceSymbolsDescription)), customTags: WellKnownDiagnosticTagsExtensions.CompilationEndAndTelemetry); - public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(SymbolDeclaredEventRule); + public sealed override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(SymbolDeclaredEventRule); public sealed override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs index e44df9d8ac..20e7ba3f6a 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/TemporaryArrayAsRefAnalyzer.cs @@ -26,7 +26,7 @@ public class TemporaryArrayAsRefAnalyzer : DiagnosticAnalyzer helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs b/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs index 43b103bfd4..68d7b8eabd 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverable.cs @@ -34,7 +34,7 @@ public sealed class TestExportsShouldNotBeDiscoverable : DiagnosticAnalyzer helpLinkUri: null, customTags: WellKnownDiagnosticTagsExtensions.Telemetry); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); public override void Initialize(AnalysisContext context) { diff --git a/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs b/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs index e6a08d4b93..fe25223197 100644 --- a/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs +++ b/src/Text.Analyzers/Core/EnumsShouldHavePluralNames.cs @@ -48,7 +48,7 @@ public sealed class EnumsShouldHavePluralNamesAnalyzer : DiagnosticAnalyzer isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule_CA1714, Rule_CA1717); + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule_CA1714, Rule_CA1717); public override void Initialize(AnalysisContext context) { diff --git a/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs b/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs index e2475e9f3f..a08a0728f9 100644 --- a/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs +++ b/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.cs @@ -210,7 +210,7 @@ public sealed class IdentifiersShouldBeSpelledCorrectlyAnalyzer : DiagnosticAnal isPortedFxCopRule: true, isDataflowRule: false); - public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create( FileParseRule, AssemblyRule, NamespaceRule, From 8478f2bcdc6bf83400d647418f4491bab94aba82 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 25 Aug 2021 18:23:56 -0700 Subject: [PATCH 16/16] Use read-only property for FixableDiagnosticIds rather than computed property --- .../Core/FixAnalyzers/FixerWithFixAllAnalyzer.Fixer.cs | 2 +- .../Core/MetaAnalyzers/Fixers/AnalyzerReleaseTrackingFix.cs | 2 +- .../Fixers/ApplyDiagnosticAnalyzerAttributeFix.cs | 2 +- .../Core/MetaAnalyzers/Fixers/CompareSymbolsCorrectlyFix.cs | 4 ++-- .../MetaAnalyzers/Fixers/ConfigureGeneratedCodeAnalysisFix.cs | 2 +- .../Fixers/DefineDiagnosticDescriptorArgumentsCorrectlyFix.cs | 2 +- .../Core/MetaAnalyzers/Fixers/EnableConcurrentExecutionFix.cs | 2 +- .../Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs | 2 +- .../ApiDesignGuidelines/CSharpStaticHolderTypes.Fixer.cs | 2 +- .../CSharpAvoidDuplicateElementInitializationFixer.cs | 4 ++-- .../CSharpDoNotInitializeUnnecessarily.Fixer.cs | 2 +- .../AbstractTypesShouldNotHaveConstructors.Fixer.cs | 2 +- .../ApiDesignGuidelines/AvoidEmptyInterfaces.Fixer.cs | 2 +- .../CollectionsShouldImplementGenericInterface.Fixer.cs | 2 +- .../ApiDesignGuidelines/DeclareTypesInNamespaces.Fixer.cs | 2 +- .../DefineAccessorsForAttributeArguments.Fixer.cs | 2 +- .../ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs | 2 +- .../ApiDesignGuidelines/DoNotHideBaseClassMethods.Fixer.cs | 2 +- .../ApiDesignGuidelines/EnumStorageShouldBeInt32.Fixer.cs | 2 +- .../ApiDesignGuidelines/EnumWithFlagsAttribute.Fixer.cs | 2 +- .../ApiDesignGuidelines/EnumsShouldHaveZeroValue.Fixer.cs | 2 +- .../ApiDesignGuidelines/EquatableAnalyzer.Fixer.cs | 2 +- .../ApiDesignGuidelines/ExceptionsShouldBePublic.Fixer.cs | 2 +- .../IdentifiersShouldHaveCorrectPrefix.Fixer.cs | 2 +- .../IdentifiersShouldHaveCorrectSuffix.Fixer.cs | 2 +- .../IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs | 2 +- .../IdentifiersShouldNotMatchKeywords.Fixer.cs | 2 +- .../ImplementIDisposableCorrectly.Fixer.cs | 2 +- .../ImplementStandardExceptionConstructors.Fixer.cs | 2 +- .../InterfaceMethodsShouldBeCallableByChildTypes.Fixer.cs | 2 +- .../MarkAssembliesWithAssemblyVersion.Fixer.cs | 2 +- .../MarkAssembliesWithClsCompliant.Fixer.cs | 2 +- .../ApiDesignGuidelines/MarkAssembliesWithComVisible.Fixer.cs | 2 +- .../MarkAttributesWithAttributeUsage.Fixer.cs | 2 +- .../MovePInvokesToNativeMethodsClass.Fixer.cs | 2 +- .../NonConstantFieldsShouldNotBeVisible.Fixer.cs | 2 +- .../OperatorOverloadsHaveNamedAlternates.Fixer.cs | 2 +- .../OperatorsShouldHaveSymmetricalOverloads.Fixer.cs | 2 +- ...OverloadOperatorEqualsOnOverridingValueTypeEquals.Fixer.cs | 2 +- .../OverrideEqualsAndOperatorEqualsOnValueTypes.Fixer.cs | 2 +- .../OverrideMethodsOnComparableTypes.Fixer.cs | 2 +- .../PropertiesShouldNotBeWriteOnly.Fixer.cs | 2 +- .../PropertyNamesShouldNotMatchGetMethods.Fixer.cs | 2 +- .../TypeNamesShouldNotMatchNamespaces.Fixer.cs | 2 +- .../TypesThatOwnDisposableFieldsShouldBeDisposable.Fixer.cs | 2 +- .../UriParametersShouldNotBeStrings.Fixer.cs | 2 +- .../ApiDesignGuidelines/UseEventsWhereAppropriate.Fixer.cs | 2 +- .../ApiDesignGuidelines/UsePreferredTerms.Fixer.cs | 2 +- .../UsePropertiesWhereAppropriate.Fixer.cs | 2 +- .../ApiReview/AvoidCallingProblematicMethods.Fixer.cs | 2 +- .../Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs | 2 +- .../AvoidUninstantiatedInternalClasses.Fixer.cs | 2 +- .../Maintainability/AvoidUnusedPrivateFields.Fixer.cs | 2 +- .../Maintainability/ReviewUnusedParameters.Fixer.cs | 2 +- .../Maintainability/UseNameofInPlaceOfString.Fixer.cs | 2 +- .../VariableNamesShouldNotMatchFieldNames.Fixer.cs | 2 +- .../QualityGuidelines/MarkMembersAsStatic.Fixer.cs | 2 +- .../PreferJaggedArraysOverMultidimensional.Fixer.cs | 2 +- .../QualityGuidelines/RemoveEmptyFinalizers.Fixer.cs | 2 +- .../QualityGuidelines/RethrowToPreserveStackDetails.Fixer.cs | 2 +- .../QualityGuidelines/ReviewVisibleEventHandlers.Fixer.cs | 2 +- .../SealMethodsThatSatisfyPrivateInterfaces.Fixer.cs | 2 +- .../QualityGuidelines/UseLiteralsWhereAppropriate.Fixer.cs | 2 +- ...ToImmutableCollectionOnAnImmutableCollectionValue.Fixer.cs | 2 +- .../MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs | 2 +- .../SpecifyMarshalingForPInvokeStringArguments.Fixer.cs | 2 +- .../InteropServices/UseManagedEquivalentsOfWin32Api.Fixer.cs | 2 +- .../Performance/PreferIsEmptyOverCount.Fixer.cs | 2 +- .../Runtime/AvoidUnsealedAttributes.Fixer.cs | 2 +- .../Runtime/AvoidZeroLengthArrayAllocations.Fixer.cs | 2 +- .../Runtime/CallGCSuppressFinalizeCorrectly.Fixer.cs | 2 +- .../Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs | 2 +- .../Runtime/DisposeMethodsShouldCallBaseClassDispose.Fixer.cs | 2 +- .../Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs | 2 +- ...dexableCollectionsInsteadUseTheCollectionDirectly.Fixer.cs | 2 +- .../DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs | 2 +- .../Runtime/ForwardCancellationTokenToInvocations.Fixer.cs | 2 +- .../Runtime/ImplementISerializableCorrectly.Fixer.cs | 2 +- .../Runtime/ImplementSerializationConstructors.Fixer.cs | 2 +- .../Runtime/ImplementSerializationMethodsCorrectly.Fixer.cs | 2 +- .../Runtime/InitializeStaticFieldsInline.Fixer.cs | 2 +- .../Runtime/InstantiateArgumentExceptionsCorrectly.Fixer.cs | 2 +- .../Runtime/MarkAllNonSerializableFields.Fixer.cs | 2 +- .../Runtime/MarkISerializableTypesWithSerializable.Fixer.cs | 2 +- .../Runtime/NormalizeStringsToUppercase.Fixer.cs | 2 +- .../Runtime/PreferConstCharOverConstUnitString.Fixer.cs | 2 +- .../Runtime/PreferStreamAsyncMemoryOverloads.Fixer.cs | 2 +- .../Runtime/PreferStringContainsOverIndexOf.Fixer.cs | 2 +- .../Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs | 2 +- .../ProvideDeserializationMethodsForOptionalFields.Fixer.cs | 2 +- .../Runtime/SpecifyCultureInfo.Fixer.cs | 2 +- .../Runtime/SpecifyIFormatProvider.Fixer.cs | 2 +- .../Runtime/SpecifyStringComparison.Fixer.cs | 2 +- .../Runtime/TestForEmptyStringsUsingStringLength.Fixer.cs | 2 +- .../Runtime/TestForNaNCorrectly.Fixer.cs | 2 +- .../Runtime/UseEnvironmentProcessIdFixer.cs | 2 +- .../Runtime/UseOrdinalStringComparison.Fixer.cs | 2 +- .../Security/DoNotUseInsecureDeserializerMethodsBase.cs | 2 +- .../Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs | 2 +- .../Security/SourceTriggeredTaintedDataAnalyzerBase.cs | 2 +- .../Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs | 2 +- ...DoNotCreateTaskCompletionSourceWithWrongArguments.Fixer.cs | 2 +- .../DoNotCreateTasksWithoutPassingATaskScheduler.Fixer.cs | 2 +- .../AvoidDuplicateAccelerators.Fixer.cs | 2 +- .../CallBaseClassMethodsOnISerializableTypes.Fixer.cs | 2 +- .../DoNotMarkServicedComponentsWithWebMethod.Fixer.cs | 2 +- .../MarkWindowsFormsEntryPointsWithStaThread.Fixer.cs | 2 +- .../SetLocaleForDataTypes.Fixer.cs | 2 +- .../SpecifyMessageBoxOptions.Fixer.cs | 2 +- .../TypesShouldNotExtendCertainBaseTypes.Fixer.cs | 2 +- .../CSharp/CodeFixes/AvoidAllocationWithArrayEmptyCodeFix.cs | 4 ++-- src/PublicApiAnalyzers/Core/CodeFixes/AnnotatePublicApiFix.cs | 4 ++-- src/PublicApiAnalyzers/Core/CodeFixes/DeclarePublicApiFix.cs | 2 +- .../Core/CodeFixes/NullableEnablePublicApiFix.cs | 4 ++-- ...SharpAvoidOptSuffixForNullableEnableCodeCodeFixProvider.cs | 2 +- .../CSharp/PreferNullLiteralCodeFixProvider.cs | 2 +- .../DoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs | 2 +- ...ortedPartsShouldHaveImportingConstructorCodeFixProvider.cs | 2 +- .../ImportingConstructorShouldBeObsoleteCodeFixProvider.cs | 2 +- .../Core/PartsExportedWithMEFv2MustBeMarkedAsShared.Fixer.cs | 2 +- .../Core/TestExportsShouldNotBeDiscoverableCodeFixProvider.cs | 2 +- .../Core/IdentifiersShouldBeSpelledCorrectly.Fixer.cs | 2 +- 122 files changed, 127 insertions(+), 127 deletions(-) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.Fixer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.Fixer.cs index 14a8d4cb42..0c9b53739e 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.Fixer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/FixAnalyzers/FixerWithFixAllAnalyzer.Fixer.cs @@ -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 FixableDiagnosticIds => ImmutableArray.Create(DiagnosticIds.OverrideGetFixAllProviderRuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DiagnosticIds.OverrideGetFixAllProviderRuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/AnalyzerReleaseTrackingFix.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/AnalyzerReleaseTrackingFix.cs index f4657c45af..d0be29a929 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/AnalyzerReleaseTrackingFix.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/AnalyzerReleaseTrackingFix.cs @@ -33,7 +33,7 @@ public sealed partial class AnalyzerReleaseTrackingFix : CodeFixProvider "; - public override ImmutableArray FixableDiagnosticIds => + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DiagnosticIds.DeclareDiagnosticIdInAnalyzerReleaseRuleId, DiagnosticIds.UpdateDiagnosticIdInAnalyzerReleaseRuleId, DiagnosticIds.EnableAnalyzerReleaseTrackingRuleId); public override FixAllProvider GetFixAllProvider() diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ApplyDiagnosticAnalyzerAttributeFix.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ApplyDiagnosticAnalyzerAttributeFix.cs index b9c72370c5..7cbac982bf 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ApplyDiagnosticAnalyzerAttributeFix.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ApplyDiagnosticAnalyzerAttributeFix.cs @@ -13,7 +13,7 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.Fixers { public abstract class ApplyDiagnosticAnalyzerAttributeFix : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DiagnosticIds.MissingDiagnosticAnalyzerAttributeRuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DiagnosticIds.MissingDiagnosticAnalyzerAttributeRuleId); public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/CompareSymbolsCorrectlyFix.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/CompareSymbolsCorrectlyFix.cs index 8ab76c25e2..9098975396 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/CompareSymbolsCorrectlyFix.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/CompareSymbolsCorrectlyFix.cs @@ -17,8 +17,8 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.Fixers { public abstract class CompareSymbolsCorrectlyFix : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds - => ImmutableArray.Create(CompareSymbolsCorrectlyAnalyzer.EqualityRule.Id); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = + ImmutableArray.Create(CompareSymbolsCorrectlyAnalyzer.EqualityRule.Id); protected abstract SyntaxNode CreateConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ConfigureGeneratedCodeAnalysisFix.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ConfigureGeneratedCodeAnalysisFix.cs index 2475492c89..40d002f55e 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ConfigureGeneratedCodeAnalysisFix.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/ConfigureGeneratedCodeAnalysisFix.cs @@ -17,7 +17,7 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.Fixers { public abstract class ConfigureGeneratedCodeAnalysisFix : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(ConfigureGeneratedCodeAnalysisAnalyzer.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(ConfigureGeneratedCodeAnalysisAnalyzer.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/DefineDiagnosticDescriptorArgumentsCorrectlyFix.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/DefineDiagnosticDescriptorArgumentsCorrectlyFix.cs index d6193ffdef..4176c3cf2d 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/DefineDiagnosticDescriptorArgumentsCorrectlyFix.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/DefineDiagnosticDescriptorArgumentsCorrectlyFix.cs @@ -21,7 +21,7 @@ public sealed partial class DefineDiagnosticDescriptorArgumentsCorrectlyFix : Co private const string SourceDocumentEquivalenceKeySuffix = nameof(SourceDocumentEquivalenceKeySuffix); private const string AdditionalDocumentEquivalenceKeySuffix = nameof(AdditionalDocumentEquivalenceKeySuffix); - public override ImmutableArray FixableDiagnosticIds => + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DiagnosticIds.DefineDiagnosticTitleCorrectlyRuleId, DiagnosticIds.DefineDiagnosticMessageCorrectlyRuleId, DiagnosticIds.DefineDiagnosticDescriptionCorrectlyRuleId); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/EnableConcurrentExecutionFix.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/EnableConcurrentExecutionFix.cs index c9c6babe08..2f17a53114 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/EnableConcurrentExecutionFix.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/EnableConcurrentExecutionFix.cs @@ -16,7 +16,7 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.Fixers { public abstract class EnableConcurrentExecutionFix : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(EnableConcurrentExecutionAnalyzer.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(EnableConcurrentExecutionAnalyzer.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs index 6903cf9104..7a6877e0ea 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs @@ -13,7 +13,7 @@ namespace Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.Fixers { public abstract class PreferIsKindFix : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(PreferIsKindAnalyzer.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(PreferIsKindAnalyzer.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpStaticHolderTypes.Fixer.cs b/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpStaticHolderTypes.Fixer.cs index 4f6f9cabd4..1c58783890 100644 --- a/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpStaticHolderTypes.Fixer.cs +++ b/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpStaticHolderTypes.Fixer.cs @@ -20,7 +20,7 @@ namespace Microsoft.CodeQuality.CSharp.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp), Shared] public class CSharpStaticHolderTypesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(StaticHolderTypesAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() => diff --git a/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidDuplicateElementInitializationFixer.cs b/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidDuplicateElementInitializationFixer.cs index 84460b18de..499a9ee34c 100644 --- a/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidDuplicateElementInitializationFixer.cs +++ b/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidDuplicateElementInitializationFixer.cs @@ -21,8 +21,8 @@ namespace Microsoft.CodeQuality.CSharp.Analyzers.QualityGuidelines [ExportCodeFixProvider(LanguageNames.CSharp), Shared] public sealed class CSharpAvoidDuplicateElementInitializationFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds - => ImmutableArray.Create(AvoidDuplicateElementInitialization.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = + ImmutableArray.Create(AvoidDuplicateElementInitialization.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpDoNotInitializeUnnecessarily.Fixer.cs b/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpDoNotInitializeUnnecessarily.Fixer.cs index e18391a269..61d18af611 100644 --- a/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpDoNotInitializeUnnecessarily.Fixer.cs +++ b/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpDoNotInitializeUnnecessarily.Fixer.cs @@ -17,7 +17,7 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines [ExportCodeFixProvider(LanguageNames.CSharp), Shared] public sealed class CSharpDoNotInitializeUnnecessarilyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DoNotInitializeUnnecessarilyAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DoNotInitializeUnnecessarilyAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.Fixer.cs index cb2b9cd420..5891f4f0f5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AbstractTypesShouldNotHaveConstructors.Fixer.cs @@ -21,7 +21,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class AbstractTypesShouldNotHaveConstructorsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(AbstractTypesShouldNotHaveConstructorsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(AbstractTypesShouldNotHaveConstructorsAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.Fixer.cs index 9190763e8c..9e40837296 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/AvoidEmptyInterfaces.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class AvoidEmptyInterfacesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.Fixer.cs index 554d3a2b95..bce288456c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CollectionsShouldImplementGenericInterface.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class CollectionsShouldImplementGenericInterfaceFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.Fixer.cs index a4af02509c..27231304d7 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DeclareTypesInNamespaces.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class DeclareTypesInNamespacesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.Fixer.cs index 433b3f04cb..f2b40219d3 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DefineAccessorsForAttributeArguments.Fixer.cs @@ -17,7 +17,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class DefineAccessorsForAttributeArgumentsFixer : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DefineAccessorsForAttributeArgumentsAnalyzer.RuleId); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DefineAccessorsForAttributeArgumentsAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs index 206596441b..738fdebf2c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotDirectlyAwaitATask.Fixer.cs @@ -22,7 +22,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class DoNotDirectlyAwaitATaskFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DoNotDirectlyAwaitATaskAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DoNotDirectlyAwaitATaskAnalyzer.RuleId); public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.Fixer.cs index b7632efc16..1a3bcafadb 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotHideBaseClassMethods.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class DoNotHideBaseClassMethodsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.Fixer.cs index 1f4c87845c..417439e676 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumStorageShouldBeInt32.Fixer.cs @@ -18,7 +18,7 @@ public abstract class EnumStorageShouldBeInt32Fixer : CodeFixProvider { protected abstract SyntaxNode? GetTargetNode(SyntaxNode node); - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(EnumStorageShouldBeInt32Analyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(EnumStorageShouldBeInt32Analyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.Fixer.cs index 376ed12b38..496ef69457 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumWithFlagsAttribute.Fixer.cs @@ -22,7 +22,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class EnumWithFlagsAttributeFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(EnumWithFlagsAttributeAnalyzer.RuleIdMarkEnumsWithFlags, + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(EnumWithFlagsAttributeAnalyzer.RuleIdMarkEnumsWithFlags, EnumWithFlagsAttributeAnalyzer.RuleIdDoNotMarkEnumsWithFlags); public override async Task RegisterCodeFixesAsync(CodeFixContext context) diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.Fixer.cs index 450ca454e9..afc4f6dece 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EnumsShouldHaveZeroValue.Fixer.cs @@ -19,7 +19,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class EnumsShouldHaveZeroValueFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(EnumsShouldHaveZeroValueAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(EnumsShouldHaveZeroValueAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.Fixer.cs index 60a9287aa2..14b0f99b98 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/EquatableAnalyzer.Fixer.cs @@ -21,7 +21,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class EquatableFixer : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(EquatableAnalyzer.ImplementIEquatableRuleId, EquatableAnalyzer.OverrideObjectEqualsRuleId); public override FixAllProvider GetFixAllProvider() diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.Fixer.cs index b30829f93b..910cba1acc 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ExceptionsShouldBePublic.Fixer.cs @@ -17,7 +17,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class ExceptionsShouldBePublicFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(ExceptionsShouldBePublicAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(ExceptionsShouldBePublicAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs index 5010fb41b9..22fe2f1095 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class IdentifiersShouldHaveCorrectPrefixFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.Fixer.cs index da01c87de0..3c2d5d07a6 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectSuffix.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class IdentifiersShouldHaveCorrectSuffixFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs index a71614698e..2a5c62c488 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class IdentifiersShouldNotHaveIncorrectSuffixFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.Fixer.cs index 917af09c34..9ae1defdbd 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywords.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class IdentifiersShouldNotMatchKeywordsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.Fixer.cs index c605d495a1..0823d9d9e0 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementIDisposableCorrectly.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class ImplementIDisposableCorrectlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.Fixer.cs index 5faf868b71..3b21d18369 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/ImplementStandardExceptionConstructors.Fixer.cs @@ -32,7 +32,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class ImplementStandardExceptionConstructorsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(ImplementStandardExceptionConstructorsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(ImplementStandardExceptionConstructorsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.Fixer.cs index a8e126c326..65d71f358c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/InterfaceMethodsShouldBeCallableByChildTypes.Fixer.cs @@ -22,7 +22,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class InterfaceMethodsShouldBeCallableByChildTypesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(InterfaceMethodsShouldBeCallableByChildTypesAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(InterfaceMethodsShouldBeCallableByChildTypesAnalyzer.RuleId); public override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAssemblyVersion.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAssemblyVersion.Fixer.cs index 777b259d5c..9fd96be76c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAssemblyVersion.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithAssemblyVersion.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class MarkAssembliesWithAssemblyVersionFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithClsCompliant.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithClsCompliant.Fixer.cs index 1d010727e7..45ad2789fd 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithClsCompliant.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithClsCompliant.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class MarkAssembliesWithClsCompliantFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.Fixer.cs index 995dc4054b..c74084acb8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAssembliesWithComVisible.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public sealed class MarkAssembliesWithComVisibleFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.Fixer.cs index 5f97e75f31..863dd09776 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MarkAttributesWithAttributeUsage.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class MarkAttributesWithAttributeUsageFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(MarkAttributesWithAttributeUsageAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(MarkAttributesWithAttributeUsageAnalyzer.RuleId); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs index 4e14f001ab..071a131df2 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class MovePInvokesToNativeMethodsClassFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.Fixer.cs index 82a17f2cd5..b84ac14222 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/NonConstantFieldsShouldNotBeVisible.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class NonConstantFieldsShouldNotBeVisibleFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.Fixer.cs index 3ec893ef7d..3ec18663d9 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorOverloadsHaveNamedAlternates.Fixer.cs @@ -20,7 +20,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class OperatorOverloadsHaveNamedAlternatesFixer : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(OperatorOverloadsHaveNamedAlternatesAnalyzer.RuleId); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(OperatorOverloadsHaveNamedAlternatesAnalyzer.RuleId); public override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs index 65025090fa..ac564c2abc 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OperatorsShouldHaveSymmetricalOverloads.Fixer.cs @@ -25,7 +25,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class OperatorsShouldHaveSymmetricalOverloadsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(OperatorsShouldHaveSymmetricalOverloadsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(OperatorsShouldHaveSymmetricalOverloadsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.Fixer.cs index c9b77d750b..2683310e92 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverloadOperatorEqualsOnOverridingValueTypeEquals.Fixer.cs @@ -19,7 +19,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class OverloadOperatorEqualsOnOverridingValueTypeEqualsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(OverloadOperatorEqualsOnOverridingValueTypeEqualsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(OverloadOperatorEqualsOnOverridingValueTypeEqualsAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.Fixer.cs index 50c65a8d65..af5fccc3a7 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideEqualsAndOperatorEqualsOnValueTypes.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class OverrideEqualsAndOperatorEqualsOnValueTypesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(OverrideEqualsAndOperatorEqualsOnValueTypesAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(OverrideEqualsAndOperatorEqualsOnValueTypesAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.Fixer.cs index 64091f5340..6f74f771f3 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/OverrideMethodsOnComparableTypes.Fixer.cs @@ -16,7 +16,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class OverrideMethodsOnComparableTypesFixer : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(OverrideMethodsOnComparableTypesAnalyzer.RuleId); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(OverrideMethodsOnComparableTypesAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.Fixer.cs index 9c4e7f1a5e..9ec764385f 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertiesShouldNotBeWriteOnly.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public sealed class PropertiesShouldNotBeWriteOnlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.Fixer.cs index e4e3679710..97b7b86af1 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/PropertyNamesShouldNotMatchGetMethods.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class PropertyNamesShouldNotMatchGetMethodsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.Fixer.cs index 25832f0299..c23658e4a5 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypeNamesShouldNotMatchNamespaces.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class TypeNamesShouldNotMatchNamespacesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.Fixer.cs index f3a0847ead..d77562c2e6 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/TypesThatOwnDisposableFieldsShouldBeDisposable.Fixer.cs @@ -20,7 +20,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class TypesThatOwnDisposableFieldsShouldBeDisposableFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(TypesThatOwnDisposableFieldsShouldBeDisposableAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(TypesThatOwnDisposableFieldsShouldBeDisposableAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.Fixer.cs index 891148fa0c..39db9664bc 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UriParametersShouldNotBeStrings.Fixer.cs @@ -21,7 +21,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public class UriParametersShouldNotBeStringsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(UriParametersShouldNotBeStringsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(UriParametersShouldNotBeStringsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.Fixer.cs index 5cd5f5e3f5..9462aaed6d 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UseEventsWhereAppropriate.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class UseEventsWhereAppropriateFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.Fixer.cs index de81cedb50..1066bd1ed6 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePreferredTerms.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class UsePreferredTermsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(UsePreferredTermsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(UsePreferredTermsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.Fixer.cs index 198efe285b..de32693130 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/UsePropertiesWhereAppropriate.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines /// public abstract class UsePropertiesWhereAppropriateFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.Fixer.cs index ed0ef8503c..5d3084344d 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiReview/AvoidCallingProblematicMethods.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.ApiReview /// public abstract class AvoidCallingProblematicMethodsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs index 6d3edf036b..3f7fdb560c 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.Documentation /// public abstract class AvoidUsingCrefTagsWithAPrefixFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.Fixer.cs index d2b9919f0f..25d191e0f6 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUninstantiatedInternalClasses.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability /// public abstract class AvoidUninstantiatedInternalClassesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.Fixer.cs index 67660f090f..a6435b6841 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/AvoidUnusedPrivateFields.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic, Name = AvoidUnusedPrivateFieldsAnalyzer.RuleId), Shared] public sealed class AvoidUnusedPrivateFieldsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(AvoidUnusedPrivateFieldsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(AvoidUnusedPrivateFieldsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.Fixer.cs index 6da8a2ee10..ee1cc76cd0 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/ReviewUnusedParameters.Fixer.cs @@ -20,7 +20,7 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability /// public abstract class ReviewUnusedParametersFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(ReviewUnusedParametersAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(ReviewUnusedParametersAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.Fixer.cs index 78230f112b..803134ac15 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/UseNameofInPlaceOfString.Fixer.cs @@ -17,7 +17,7 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class UseNameOfInPlaceOfStringFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(UseNameofInPlaceOfStringAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(UseNameofInPlaceOfStringAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.Fixer.cs index f63b8a7414..ddd66b5aba 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Maintainability/VariableNamesShouldNotMatchFieldNames.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.Maintainability /// public abstract class VariableNamesShouldNotMatchFieldNamesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.Fixer.cs index 3515691ae9..14c19b4903 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/MarkMembersAsStatic.Fixer.cs @@ -31,7 +31,7 @@ public abstract class MarkMembersAsStaticFixer : CodeFixProvider protected virtual SyntaxNode GetSyntaxNodeToReplace(IMemberReferenceOperation memberReference) => memberReference.Syntax; - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(MarkMembersAsStaticAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(MarkMembersAsStaticAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.Fixer.cs index 82e8046899..e6598cbcc8 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/PreferJaggedArraysOverMultidimensional.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines /// public abstract class PreferJaggedArraysOverMultidimensionalFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.Fixer.cs index d8e19abff8..4d77d6e890 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RemoveEmptyFinalizers.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic, Name = RemoveEmptyFinalizersAnalyzer.RuleId), Shared] public sealed class RemoveEmptyFinalizersFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(RemoveEmptyFinalizersAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(RemoveEmptyFinalizersAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.Fixer.cs index 0a8febb5a0..a45f6bc8cc 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/RethrowToPreserveStackDetails.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic, Name = RethrowToPreserveStackDetailsAnalyzer.RuleId), Shared] public sealed class RethrowToPreserveStackDetailsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(RethrowToPreserveStackDetailsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(RethrowToPreserveStackDetailsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.Fixer.cs index 20ae55ef45..62681cfdca 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/ReviewVisibleEventHandlers.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines /// public abstract class ReviewVisibleEventHandlersFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.Fixer.cs index 87d954585b..6c521a88ac 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/SealMethodsThatSatisfyPrivateInterfaces.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines [ExportCodeFixProvider(LanguageNames.CSharp /*, LanguageNames.VisualBasic*/), Shared] // note: disabled VB until SyntaxGenerator.WithStatements works public sealed class SealMethodsThatSatisfyPrivateInterfacesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(SealMethodsThatSatisfyPrivateInterfacesAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(SealMethodsThatSatisfyPrivateInterfacesAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.Fixer.cs index 00b49054b9..13dd7913af 100644 --- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/QualityGuidelines/UseLiteralsWhereAppropriate.Fixer.cs @@ -17,7 +17,7 @@ namespace Microsoft.CodeQuality.Analyzers.QualityGuidelines /// public abstract class UseLiteralsWhereAppropriateFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(UseLiteralsWhereAppropriateAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(UseLiteralsWhereAppropriateAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.Fixer.cs index 67c9e27275..564187109c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/ImmutableCollections/DoNotCallToImmutableCollectionOnAnImmutableCollectionValue.Fixer.cs @@ -20,7 +20,7 @@ namespace Microsoft.NetCore.Analyzers.ImmutableCollections [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class DoNotCallToImmutableCollectionOnAnImmutableCollectionValueFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs index 63e5515f1d..3fddd1b08a 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAs.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.InteropServices /// public abstract class MarkBooleanPInvokeArgumentsWithMarshalAsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/SpecifyMarshalingForPInvokeStringArguments.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/SpecifyMarshalingForPInvokeStringArguments.Fixer.cs index 891b118e72..0786b66767 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/SpecifyMarshalingForPInvokeStringArguments.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/SpecifyMarshalingForPInvokeStringArguments.Fixer.cs @@ -19,7 +19,7 @@ public abstract class SpecifyMarshalingForPInvokeStringArgumentsFixer : CodeFixP protected const string LPWStrText = "LPWStr"; protected const string UnicodeText = "Unicode"; - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(PInvokeDiagnosticAnalyzer.RuleCA2101Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(PInvokeDiagnosticAnalyzer.RuleCA2101Id); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.Fixer.cs index 5022058d4d..caf4ab8f7d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/InteropServices/UseManagedEquivalentsOfWin32Api.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.InteropServices /// public abstract class UseManagedEquivalentsOfWin32ApiFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/PreferIsEmptyOverCount.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/PreferIsEmptyOverCount.Fixer.cs index c89d7324e0..b788248bc0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/PreferIsEmptyOverCount.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/PreferIsEmptyOverCount.Fixer.cs @@ -14,7 +14,7 @@ namespace Microsoft.NetCore.Analyzers.Performance /// public abstract class PreferIsEmptyOverCountFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(UseCountProperlyAnalyzer.CA1836); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(UseCountProperlyAnalyzer.CA1836); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.Fixer.cs index 8d9aaf15f9..72a977f01d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public class AvoidUnsealedAttributesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(AvoidUnsealedAttributesAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(AvoidUnsealedAttributesAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.Fixer.cs index ae836c835f..729c669fe2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidZeroLengthArrayAllocations.Fixer.cs @@ -19,7 +19,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class AvoidZeroLengthArrayAllocationsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(AvoidZeroLengthArrayAllocationsAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(AvoidZeroLengthArrayAllocationsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.Fixer.cs index 39481018b9..0aae3defa7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/CallGCSuppressFinalizeCorrectly.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class CallGCSuppressFinalizeCorrectlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs index 02f1db8777..3733c7d36f 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class DisposableTypesShouldDeclareFinalizerFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.Fixer.cs index 48c8b47714..9f0670d199 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposeMethodsShouldCallBaseClassDispose.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class DisposeMethodsShouldCallBaseClassDisposeFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DisposeMethodsShouldCallBaseClassDispose.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DisposeMethodsShouldCallBaseClassDispose.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs index 0279aa829b..f469f95d00 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotLockOnObjectsWithWeakIdentity.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class DoNotLockOnObjectsWithWeakIdentityFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.Fixer.cs index 3aec5b2dca..d1f41b04ef 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.Fixer.cs @@ -26,7 +26,7 @@ public class DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollect private const string LastPropertyName = "Last"; private const string CountPropertyName = "Count"; - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectlyAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs index 45a0f630d8..40fe3633d5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class DoNotUseTimersThatPreventPowerStateChangesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Fixer.cs index 8b9053578a..20531d8e13 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ForwardCancellationTokenToInvocations.Fixer.cs @@ -41,7 +41,7 @@ protected abstract bool TryGetExpressionAndArguments( protected abstract IEnumerable GetExpressions(ImmutableArray newArguments); protected abstract SyntaxNode GetArrayCreationExpression(SyntaxGenerator generator, SyntaxNode typeSyntax, IEnumerable expressions); - public override ImmutableArray FixableDiagnosticIds => + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(ForwardCancellationTokenToInvocationsAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() => diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.Fixer.cs index 0a2c63c54f..5b74beee01 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementISerializableCorrectly.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class ImplementISerializableCorrectlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationConstructors.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationConstructors.Fixer.cs index 85984333b9..ad6dbcbd49 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationConstructors.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationConstructors.Fixer.cs @@ -21,7 +21,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic, Name = "CA2229 CodeFix provider"), Shared] public sealed class ImplementSerializationConstructorsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(SerializationRulesDiagnosticAnalyzer.RuleCA2229Id); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(SerializationRulesDiagnosticAnalyzer.RuleCA2229Id); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.Fixer.cs index c348f6fc91..1d27f765dc 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ImplementSerializationMethodsCorrectly.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class ImplementSerializationMethodsCorrectlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.Fixer.cs index 4d663303fa..4d20976db1 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InitializeStaticFieldsInline.Fixer.cs @@ -12,7 +12,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime public abstract class InitializeStaticFieldsInlineFixer : CodeFixProvider where TLanguageKindEnum : struct { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.Fixer.cs index 6055b3facd..1c13032339 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/InstantiateArgumentExceptionsCorrectly.Fixer.cs @@ -20,7 +20,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class InstantiateArgumentExceptionsCorrectlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(InstantiateArgumentExceptionsCorrectlyAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(InstantiateArgumentExceptionsCorrectlyAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkAllNonSerializableFields.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkAllNonSerializableFields.Fixer.cs index ed04c6b9f1..17cbf56de7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkAllNonSerializableFields.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkAllNonSerializableFields.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class MarkAllNonSerializableFieldsFixer : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(SerializationRulesDiagnosticAnalyzer.RuleCA2235Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(SerializationRulesDiagnosticAnalyzer.RuleCA2235Id); protected abstract SyntaxNode? GetFieldDeclarationNode(SyntaxNode node); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkISerializableTypesWithSerializable.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkISerializableTypesWithSerializable.Fixer.cs index c179fa43b6..f5716b129c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkISerializableTypesWithSerializable.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/MarkISerializableTypesWithSerializable.Fixer.cs @@ -19,7 +19,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic, Name = "CA2237 CodeFix provider"), Shared] public sealed class MarkTypesWithSerializableFixer : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(SerializationRulesDiagnosticAnalyzer.RuleCA2237Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(SerializationRulesDiagnosticAnalyzer.RuleCA2237Id); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs index 5f40e39d6b..362a2215c7 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class NormalizeStringsToUppercaseFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs index ed590ab717..5925449905 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferConstCharOverConstUnitString.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public class PreferConstCharOverConstUnitStringFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(PreferConstCharOverConstUnitStringAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(PreferConstCharOverConstUnitStringAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.Fixer.cs index d2d1b92e95..80d45a36e5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStreamAsyncMemoryOverloads.Fixer.cs @@ -50,7 +50,7 @@ public abstract class PreferStreamAsyncMemoryOverloadsFixer : CodeFixProvider // Ensures the member invocation is retrieved with the name and nullability. protected abstract SyntaxNode GetNamedMemberInvocation(SyntaxGenerator generator, SyntaxNode node, string memberName); - public sealed override ImmutableArray FixableDiagnosticIds => + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(PreferStreamAsyncMemoryOverloads.RuleId); public sealed override FixAllProvider GetFixAllProvider() => diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOf.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOf.Fixer.cs index 63a8609328..a103bccfb2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOf.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferStringContainsOverIndexOf.Fixer.cs @@ -16,7 +16,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class PreferStringContainsOverIndexOfFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(PreferStringContainsOverIndexOfAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(PreferStringContainsOverIndexOfAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs index 29fb810ce6..245e87b460 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class PreferTypedStringBuilderAppendOverloadsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(PreferTypedStringBuilderAppendOverloads.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(PreferTypedStringBuilderAppendOverloads.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs index 903b1bed3f..1447bcc673 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class ProvideDeserializationMethodsForOptionalFieldsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs index ccdad76232..3bd0994f4c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class SpecifyCultureInfoFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.Fixer.cs index e01b4ce3df..3cb4f9dec0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyIFormatProvider.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class SpecifyIFormatProviderFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.Fixer.cs index 319fc73fbe..ae05fbd25c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyStringComparison.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class SpecifyStringComparisonFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.Fixer.cs index d268db513c..24f9e582e0 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForEmptyStringsUsingStringLength.Fixer.cs @@ -17,7 +17,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class TestForEmptyStringsUsingStringLengthFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(TestForEmptyStringsUsingStringLengthAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(TestForEmptyStringsUsingStringLengthAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.Fixer.cs index 72343dbde9..9dc9de9ddb 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/TestForNaNCorrectly.Fixer.cs @@ -16,7 +16,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime /// public abstract class TestForNaNCorrectlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(TestForNaNCorrectlyAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(TestForNaNCorrectlyAnalyzer.RuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessIdFixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessIdFixer.cs index 2ff0371913..b3e84e354d 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessIdFixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseEnvironmentProcessIdFixer.cs @@ -18,7 +18,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class UseEnvironmentProcessIdFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(UseEnvironmentProcessId.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(UseEnvironmentProcessId.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.Fixer.cs index f0817be559..8ef0f520b1 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/UseOrdinalStringComparison.Fixer.cs @@ -14,7 +14,7 @@ namespace Microsoft.NetCore.Analyzers.Runtime { public abstract class UseOrdinalStringComparisonFixerBase : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(UseOrdinalStringComparisonAnalyzer.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(UseOrdinalStringComparisonAnalyzer.RuleId); public override async Task RegisterCodeFixesAsync(CodeFixContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs index cd10ae072f..951cb5f0cf 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerMethodsBase.cs @@ -53,7 +53,7 @@ public abstract class DoNotUseInsecureDeserializerMethodsBase : DiagnosticAnalyz return MethodUsedDescriptor; } - public override ImmutableArray SupportedDiagnostics { get; } = + public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( this.MethodUsedDescriptor); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs index 381bead543..defd5ca2cc 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseInsecureDeserializerWithoutBinderBase.cs @@ -54,7 +54,7 @@ public abstract class DoNotUseInsecureDeserializerWithoutBinderBase : Diagnostic /// The string format message argument is the method signature. protected abstract DiagnosticDescriptor BinderMaybeNotSetDescriptor { get; } - public sealed override ImmutableArray SupportedDiagnostics { get; } = + public sealed override ImmutableArray SupportedDiagnostics => ImmutableArray.Create( this.BinderDefinitelyNotSetDescriptor, this.BinderMaybeNotSetDescriptor); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs index 34a2cd40f6..aac770aabd 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/SourceTriggeredTaintedDataAnalyzerBase.cs @@ -41,7 +41,7 @@ public abstract class SourceTriggeredTaintedDataAnalyzerBase : DiagnosticAnalyze /// protected abstract SinkKind SinkKind { get; } - public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(TaintedDataEnteringSinkDescriptor); + public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(TaintedDataEnteringSinkDescriptor); public override void Initialize(AnalysisContext context) { diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs index 73520f83ea..906295e3f6 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/UseXmlReaderBase.cs @@ -26,7 +26,7 @@ public abstract class UseXmlReaderBase : DiagnosticAnalyzer protected abstract DiagnosticDescriptor Rule { get; } - public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(Rule); + public override ImmutableArray SupportedDiagnostics => ImmutableArray.Create(Rule); protected static LocalizableString Description { get; } = CreateLocalizableResourceString(nameof(UseXmlReaderDescription)); diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.Fixer.cs index 985b75c02f..19829327ff 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTaskCompletionSourceWithWrongArguments.Fixer.cs @@ -19,7 +19,7 @@ namespace Microsoft.NetCore.Analyzers.Tasks [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic), Shared] public sealed class DoNotCreateTaskCompletionSourceWithWrongArgumentsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DoNotCreateTaskCompletionSourceWithWrongArguments.RuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DoNotCreateTaskCompletionSourceWithWrongArguments.RuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.Fixer.cs index 6d3736eb42..fe67ba91b5 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Tasks/DoNotCreateTasksWithoutPassingATaskScheduler.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetCore.Analyzers.Tasks /// public abstract class DoNotCreateTasksWithoutPassingATaskSchedulerFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.Fixer.cs index cce725a078..ffad5198e2 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/AvoidDuplicateAccelerators.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetFramework.Analyzers /// public abstract class AvoidDuplicateAcceleratorsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.Fixer.cs index f860306204..f1ebbe8c90 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetFramework.Analyzers /// public abstract class CallBaseClassMethodsOnISerializableTypesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.Fixer.cs index fab9d8f35f..458f8f8d7b 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/DoNotMarkServicedComponentsWithWebMethod.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetFramework.Analyzers /// public abstract class DoNotMarkServicedComponentsWithWebMethodFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.Fixer.cs index 98a467a5f1..1d7a06bc3c 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/MarkWindowsFormsEntryPointsWithStaThread.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetFramework.Analyzers /// public abstract class MarkWindowsFormsEntryPointsWithStaThreadFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.Fixer.cs index b5224bafff..eee4341a38 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetFramework.Analyzers /// public abstract class SetLocaleForDataTypesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.Fixer.cs index f36a9d228c..ce93da1d8e 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SpecifyMessageBoxOptions.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetFramework.Analyzers /// public abstract class SpecifyMessageBoxOptionsFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.Fixer.cs b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.Fixer.cs index 61091557bc..1bb6fe9404 100644 --- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.Fixer.cs +++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/TypesShouldNotExtendCertainBaseTypes.Fixer.cs @@ -11,7 +11,7 @@ namespace Microsoft.NetFramework.Analyzers /// public abstract class TypesShouldNotExtendCertainBaseTypesFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/PerformanceSensitiveAnalyzers/CSharp/CodeFixes/AvoidAllocationWithArrayEmptyCodeFix.cs b/src/PerformanceSensitiveAnalyzers/CSharp/CodeFixes/AvoidAllocationWithArrayEmptyCodeFix.cs index 58b211dd8b..6c04c2ff8c 100644 --- a/src/PerformanceSensitiveAnalyzers/CSharp/CodeFixes/AvoidAllocationWithArrayEmptyCodeFix.cs +++ b/src/PerformanceSensitiveAnalyzers/CSharp/CodeFixes/AvoidAllocationWithArrayEmptyCodeFix.cs @@ -21,8 +21,8 @@ internal sealed class AvoidAllocationWithArrayEmptyCodeFix : CodeFixProvider { private readonly string _title = CodeFixesResources.AvoidAllocationByUsingArrayEmpty; - public sealed override ImmutableArray FixableDiagnosticIds - => ImmutableArray.Create(ExplicitAllocationAnalyzer.ObjectCreationRuleId, ExplicitAllocationAnalyzer.ArrayCreationRuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = + ImmutableArray.Create(ExplicitAllocationAnalyzer.ObjectCreationRuleId, ExplicitAllocationAnalyzer.ArrayCreationRuleId); public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/PublicApiAnalyzers/Core/CodeFixes/AnnotatePublicApiFix.cs b/src/PublicApiAnalyzers/Core/CodeFixes/AnnotatePublicApiFix.cs index 897a82bfc3..ecee97d4db 100644 --- a/src/PublicApiAnalyzers/Core/CodeFixes/AnnotatePublicApiFix.cs +++ b/src/PublicApiAnalyzers/Core/CodeFixes/AnnotatePublicApiFix.cs @@ -23,8 +23,8 @@ public sealed class AnnotatePublicApiFix : CodeFixProvider { private const char ObliviousMarker = '~'; - public sealed override ImmutableArray FixableDiagnosticIds - => ImmutableArray.Create(DiagnosticIds.AnnotatePublicApiRuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = + ImmutableArray.Create(DiagnosticIds.AnnotatePublicApiRuleId); public sealed override FixAllProvider GetFixAllProvider() => new PublicSurfaceAreaFixAllProvider(); diff --git a/src/PublicApiAnalyzers/Core/CodeFixes/DeclarePublicApiFix.cs b/src/PublicApiAnalyzers/Core/CodeFixes/DeclarePublicApiFix.cs index 26118fe499..1674969880 100644 --- a/src/PublicApiAnalyzers/Core/CodeFixes/DeclarePublicApiFix.cs +++ b/src/PublicApiAnalyzers/Core/CodeFixes/DeclarePublicApiFix.cs @@ -21,7 +21,7 @@ namespace Microsoft.CodeAnalysis.PublicApiAnalyzers [ExportCodeFixProvider(LanguageNames.CSharp, LanguageNames.VisualBasic, Name = "DeclarePublicApiFix"), Shared] public sealed class DeclarePublicApiFix : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(DiagnosticIds.DeclarePublicApiRuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(DiagnosticIds.DeclarePublicApiRuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/PublicApiAnalyzers/Core/CodeFixes/NullableEnablePublicApiFix.cs b/src/PublicApiAnalyzers/Core/CodeFixes/NullableEnablePublicApiFix.cs index efbdfbcd99..9c384712e1 100644 --- a/src/PublicApiAnalyzers/Core/CodeFixes/NullableEnablePublicApiFix.cs +++ b/src/PublicApiAnalyzers/Core/CodeFixes/NullableEnablePublicApiFix.cs @@ -20,8 +20,8 @@ namespace Microsoft.CodeAnalysis.PublicApiAnalyzers [ExportCodeFixProvider(LanguageNames.CSharp, Name = "NullableEnablePublicApiFix"), Shared] public sealed class NullableEnablePublicApiFix : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds - => ImmutableArray.Create(DiagnosticIds.ShouldAnnotateApiFilesRuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = + ImmutableArray.Create(DiagnosticIds.ShouldAnnotateApiFilesRuleId); public sealed override FixAllProvider GetFixAllProvider() => new PublicSurfaceAreaFixAllProvider(); diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCodeCodeFixProvider.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCodeCodeFixProvider.cs index 3d385e5bd2..046462c444 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCodeCodeFixProvider.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpAvoidOptSuffixForNullableEnableCodeCodeFixProvider.cs @@ -18,7 +18,7 @@ namespace Roslyn.Diagnostics.CSharp.Analyzers [Shared] public sealed class CSharpAvoidOptSuffixForNullableEnableCodeCodeFixProvider : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(CSharpAvoidOptSuffixForNullableEnableCode.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(CSharpAvoidOptSuffixForNullableEnableCode.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteralCodeFixProvider.cs b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteralCodeFixProvider.cs index 72363b4eec..bdf34c5a3e 100644 --- a/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteralCodeFixProvider.cs +++ b/src/Roslyn.Diagnostics.Analyzers/CSharp/PreferNullLiteralCodeFixProvider.cs @@ -21,7 +21,7 @@ namespace Roslyn.Diagnostics.CSharp.Analyzers [Shared] public class PreferNullLiteralCodeFixProvider : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(PreferNullLiteral.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(PreferNullLiteral.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs index 4c921cdcac..cb3cf3e913 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs @@ -11,7 +11,7 @@ namespace Roslyn.Diagnostics.Analyzers /// public abstract class DoNotMixAttributesFromDifferentVersionsOfMEFFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructorCodeFixProvider.cs b/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructorCodeFixProvider.cs index 613d7ca4d0..81a6d28ad4 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructorCodeFixProvider.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/ExportedPartsShouldHaveImportingConstructorCodeFixProvider.cs @@ -22,7 +22,7 @@ namespace Roslyn.Diagnostics.Analyzers [Shared] public class ExportedPartsShouldHaveImportingConstructorCodeFixProvider : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(ExportedPartsShouldHaveImportingConstructor.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(ExportedPartsShouldHaveImportingConstructor.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs b/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs index af2785e897..36bcb2b533 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs @@ -22,7 +22,7 @@ namespace Roslyn.Diagnostics.Analyzers [Shared] public class ImportingConstructorShouldBeObsoleteCodeFixProvider : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(ImportingConstructorShouldBeObsolete.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(ImportingConstructorShouldBeObsolete.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.Fixer.cs b/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.Fixer.cs index 7f5cb961df..84c5b22a37 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.Fixer.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/PartsExportedWithMEFv2MustBeMarkedAsShared.Fixer.cs @@ -17,7 +17,7 @@ namespace Roslyn.Diagnostics.Analyzers public abstract class PartsExportedWithMEFv2MustBeMarkedAsSharedFixer : CodeFixProvider where TTypeSyntax : SyntaxNode { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(RoslynDiagnosticIds.MissingSharedAttributeRuleId); + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(RoslynDiagnosticIds.MissingSharedAttributeRuleId); public sealed override FixAllProvider GetFixAllProvider() { diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverableCodeFixProvider.cs b/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverableCodeFixProvider.cs index b4816c0fff..dce10ae5d4 100644 --- a/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverableCodeFixProvider.cs +++ b/src/Roslyn.Diagnostics.Analyzers/Core/TestExportsShouldNotBeDiscoverableCodeFixProvider.cs @@ -21,7 +21,7 @@ namespace Roslyn.Diagnostics.Analyzers [Shared] public class TestExportsShouldNotBeDiscoverableCodeFixProvider : CodeFixProvider { - public override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create(TestExportsShouldNotBeDiscoverable.Rule.Id); + public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(TestExportsShouldNotBeDiscoverable.Rule.Id); public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; diff --git a/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.Fixer.cs b/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.Fixer.cs index 4b7b4c201e..89b8a96fbe 100644 --- a/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.Fixer.cs +++ b/src/Text.Analyzers/Core/IdentifiersShouldBeSpelledCorrectly.Fixer.cs @@ -11,7 +11,7 @@ namespace Text.Analyzers /// public abstract class IdentifiersShouldBeSpelledCorrectlyFixer : CodeFixProvider { - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Empty; + public sealed override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Empty; public sealed override FixAllProvider GetFixAllProvider() {