internal static string[] Create( bool isUnnecessary, bool isConfigurable, EnforceOnBuild enforceOnBuild ) { Debug.Assert(isConfigurable || enforceOnBuild == EnforceOnBuild.Never); var customTagsBuilder = ImmutableArray.CreateBuilder <string>(); customTagsBuilder.AddRange(Microsoft); customTagsBuilder.Add(enforceOnBuild.ToCustomTag()); if (!isConfigurable) { customTagsBuilder.Add(WellKnownDiagnosticTags.NotConfigurable); } if (isUnnecessary) { customTagsBuilder.Add(WellKnownDiagnosticTags.Unnecessary); } return(customTagsBuilder.ToArray()); }
protected AbstractPopulateSwitchDiagnosticAnalyzer(string diagnosticId, EnforceOnBuild enforceOnBuild) : base(diagnosticId, enforceOnBuild, option: null, s_localizableTitle, s_localizableMessage) { }
protected CSharpTypeStyleDiagnosticAnalyzerBase( string diagnosticId, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString message) : base(diagnosticId, enforceOnBuild, ImmutableHashSet.Create <IOption2>(CSharpCodeStyleOptions.VarForBuiltInTypes, CSharpCodeStyleOptions.VarWhenTypeIsApparent, CSharpCodeStyleOptions.VarElsewhere), title, message) { }
protected static DiagnosticDescriptor CreateDescriptorWithId( string id, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString messageFormat, bool isUnnecessary = false, bool isConfigurable = true, LocalizableString?description = null) => new(
protected AbstractParenthesesDiagnosticAnalyzer( string descriptorId, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString message, bool isUnnecessary = false) : base(descriptorId, enforceOnBuild, options: ImmutableHashSet.Create <IPerLanguageOption>(CodeStyleOptions2.ArithmeticBinaryParentheses, CodeStyleOptions2.RelationalBinaryParentheses, CodeStyleOptions2.OtherBinaryParentheses, CodeStyleOptions2.OtherParentheses), title, message, isUnnecessary: isUnnecessary) { }
protected static DiagnosticDescriptor CreateDescriptor( string id, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString messageFormat, bool isUnnecessary, bool isEnabledByDefault = true, bool isConfigurable = true, LocalizableString description = null) => new(
protected static DiagnosticDescriptor CreateDescriptorWithId( string id, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString?messageFormat = null, bool isUnnecessary = false, bool isConfigurable = true, LocalizableString?description = null) #pragma warning disable RS0030 // Do not used banned APIs => new(
protected static DiagnosticDescriptor CreateDescriptor( string id, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString messageFormat, bool isUnnecessary, bool isEnabledByDefault = true, bool isConfigurable = true, LocalizableString description = null) #pragma warning disable RS0030 // Do not used banned APIs => new(
/// <summary> /// Constructor for an unnecessary code style analyzer with a single diagnostic descriptor and /// unique <see cref="IPerLanguageValuedOption"/> code style option. /// </summary> /// <param name="diagnosticId">Diagnostic ID reported by this analyzer</param> /// <param name="enforceOnBuild">Build enforcement recommendation for this analyzer</param> /// <param name="option"> /// Per-language option that can be used to configure the given <paramref name="diagnosticId"/>. /// <see langword="null"/>, if there is no such unique option. /// </param> /// <param name="fadingOption"> /// Per-language fading option that can be used to configure if the diagnostic should be faded in the IDE or not. /// <see langword="null"/>, if there is no such unique fading option. /// </param> /// <param name="title">Title for the diagnostic descriptor</param> /// <param name="messageFormat"> /// Message for the diagnostic descriptor. /// <see langword="null"/> if the message is identical to the title. /// </param> /// <param name="configurable">Flag indicating if the reported diagnostics are configurable by the end users</param> protected AbstractBuiltInUnnecessaryCodeStyleDiagnosticAnalyzer( string diagnosticId, EnforceOnBuild enforceOnBuild, IPerLanguageValuedOption?option, PerLanguageOption2 <bool>?fadingOption, LocalizableString title, LocalizableString?messageFormat = null, bool configurable = true) : base(diagnosticId, enforceOnBuild, option, title, messageFormat, isUnnecessary: true, configurable) { AddDiagnosticIdToFadingOptionMapping(diagnosticId, fadingOption); }
/// <summary> /// Constructor for a code style analyzer with a single diagnostic descriptor and /// unique <see cref="IPerLanguageOption"/> code style option. /// </summary> /// <param name="diagnosticId">Diagnostic ID reported by this analyzer</param> /// <param name="enforceOnBuild">Build enforcement recommendation for this analyzer</param> /// <param name="option"> /// Per-language option that can be used to configure the given <paramref name="diagnosticId"/>. /// <see langword="null"/>, if there is no such unique option. /// </param> /// <param name="title">Title for the diagnostic descriptor</param> /// <param name="messageFormat"> /// Message for the diagnostic descriptor. /// <see langword="null"/> if the message is identical to the title. /// </param> /// <param name="isUnnecessary"><see langword="true"/> if the diagnostic is reported on unnecessary code; otherwise, <see langword="false"/>.</param> /// <param name="configurable">Flag indicating if the reported diagnostics are configurable by the end users</param> protected AbstractBuiltInCodeStyleDiagnosticAnalyzer( string diagnosticId, EnforceOnBuild enforceOnBuild, IPerLanguageOption?option, LocalizableString title, LocalizableString?messageFormat = null, bool isUnnecessary = false, bool configurable = true) : this(diagnosticId, enforceOnBuild, title, messageFormat, isUnnecessary, configurable) { AddDiagnosticIdToOptionMapping(diagnosticId, option); }
protected AbstractUseConditionalExpressionDiagnosticAnalyzer( string descriptorId, EnforceOnBuild enforceOnBuild, LocalizableResourceString message, PerLanguageOption2 <CodeStyleOption2 <bool> > option) : base(descriptorId, enforceOnBuild, option, new LocalizableResourceString(nameof(AnalyzersResources.Convert_to_conditional_expression), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)), message) { }
/// <summary> /// Constructor for a code style analyzer with a single diagnostic descriptor and /// two or more <see cref="IPerLanguageOption"/> code style options. /// </summary> /// <param name="diagnosticId">Diagnostic ID reported by this analyzer</param> /// <param name="enforceOnBuild">Build enforcement recommendation for this analyzer</param> /// <param name="options"> /// Set of two or more per-language options that can be used to configure the diagnostic severity of the given diagnosticId. /// </param> /// <param name="title">Title for the diagnostic descriptor</param> /// <param name="messageFormat"> /// Message for the diagnostic descriptor. /// Null if the message is identical to the title. /// </param> /// <param name="isUnnecessary"><see langword="true"/> if the diagnostic is reported on unnecessary code; otherwise, <see langword="false"/>.</param> /// <param name="configurable">Flag indicating if the reported diagnostics are configurable by the end users</param> protected AbstractBuiltInCodeStyleDiagnosticAnalyzer( string diagnosticId, EnforceOnBuild enforceOnBuild, ImmutableHashSet <IPerLanguageOption> options, LocalizableString title, LocalizableString?messageFormat = null, bool isUnnecessary = false, bool configurable = true) : this(diagnosticId, enforceOnBuild, title, messageFormat, isUnnecessary, configurable) { RoslynDebug.Assert(options != null); Debug.Assert(options.Count > 1); AddDiagnosticIdToOptionMapping(diagnosticId, options); }
private AbstractBuiltInCodeStyleDiagnosticAnalyzer( string descriptorId, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString?messageFormat, bool isUnnecessary, bool configurable) { // 'isUnnecessary' should be true only for sub-types of AbstractBuiltInUnnecessaryCodeStyleDiagnosticAnalyzer. Debug.Assert(!isUnnecessary || this is AbstractBuiltInUnnecessaryCodeStyleDiagnosticAnalyzer); Descriptor = CreateDescriptorWithId(descriptorId, enforceOnBuild, title, messageFormat ?? title, isUnnecessary: isUnnecessary, isConfigurable: configurable); SupportedDiagnostics = ImmutableArray.Create(Descriptor); }
protected UseExpressionBodyHelper( string diagnosticId, EnforceOnBuild enforceOnBuild, LocalizableString useExpressionBodyTitle, LocalizableString useBlockBodyTitle, Option2 <CodeStyleOption2 <ExpressionBodyPreference> > option, ImmutableArray <SyntaxKind> syntaxKinds) { DiagnosticId = diagnosticId; EnforceOnBuild = enforceOnBuild; Option = option; UseExpressionBodyTitle = useExpressionBodyTitle; UseBlockBodyTitle = useBlockBodyTitle; SyntaxKinds = syntaxKinds; }
private AbstractBuiltInCodeStyleDiagnosticAnalyzer( string descriptorId, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString?messageFormat, bool isUnnecessary, bool configurable) { DescriptorId = descriptorId; _localizableTitle = title; _localizableMessageFormat = messageFormat ?? title; Descriptor = CreateDescriptorWithId(DescriptorId, enforceOnBuild, _localizableTitle, _localizableMessageFormat, isUnnecessary: isUnnecessary, isConfigurable: configurable); SupportedDiagnostics = ImmutableArray.Create(Descriptor); }
protected AbstractCodeStyleProvider( Option2 <CodeStyleOption2 <TOptionValue> > option, string language, string descriptorId, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString message) { _option = option; _language = language; _descriptorId = descriptorId; _enforceOnBuild = enforceOnBuild; _title = title; _message = message; }
private AbstractBuiltInCodeStyleDiagnosticAnalyzer( string descriptorId, EnforceOnBuild enforceOnBuild, LocalizableString title, LocalizableString?messageFormat, bool isUnnecessary, bool configurable) { // 'isUnnecessary' should be true only for sub-types of AbstractBuiltInUnnecessaryCodeStyleDiagnosticAnalyzer. // NOTE: AbstractParenthesesDiagnosticAnalyzer is an exception as it is a common sub-type for // AbstractRemoveUnnecessaryParenthesesDiagnosticAnalyzer (unnecessary code analyzer) and // AbstractAddRequiredParenthesesDiagnosticAnalyzer (non-unnecessary code analyzer). Debug.Assert(!isUnnecessary || this is AbstractBuiltInUnnecessaryCodeStyleDiagnosticAnalyzer || this is AbstractParenthesesDiagnosticAnalyzer); Descriptor = CreateDescriptorWithId(descriptorId, enforceOnBuild, title, messageFormat ?? title, isUnnecessary: isUnnecessary, isConfigurable: configurable); SupportedDiagnostics = ImmutableArray.Create(Descriptor); }
public static string ToCustomTag(this EnforceOnBuild enforceOnBuild) => $"{nameof(EnforceOnBuild)}_{enforceOnBuild}";