From d9302b6dbe1b4ad7fd996492e07e9b60bc77343c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaury=20Lev=C3=A9?= Date: Sun, 9 Aug 2020 23:10:12 +0200 Subject: [PATCH] Apply suggestion --- .../DiagnosticDescriptorCreationAnalyzer.cs | 26 +++-- ...agnosticDescriptorCreationAnalyzerTests.cs | 104 +++++++++++++----- 2 files changed, 94 insertions(+), 36 deletions(-) diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs index d9e5b8a4a0..a538e23633 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzer.cs @@ -501,18 +501,22 @@ bool IsCreateHelper(IMethodSymbol method) private static void AnalyzeTitleCore(string title, IArgumentOperation argumentOperation, Location fixLocation, Action reportDiagnostic) { + var hasLeadingOrTrailingWhitespaces = HasLeadingOrTrailingWhitespaces(title); + if (hasLeadingOrTrailingWhitespaces) + { + title = RemoveLeadingAndTrailingWhitespaces(title); + } + var isMultiSentences = IsMultiSentences(title); var endsWithPeriod = EndsWithPeriod(title); var containsLineReturn = ContainsLineReturn(title); - var hasLeadingOrTrailingWhitespaces = HasLeadingOrTrailingWhitespaces(title); if (isMultiSentences || endsWithPeriod || containsLineReturn || hasLeadingOrTrailingWhitespaces) { + // Leading and trailing spaces were already fixed var fixedTitle = endsWithPeriod ? RemoveTrailingPeriod(title) : title; fixedTitle = isMultiSentences ? FixMultiSentences(fixedTitle) : fixedTitle; fixedTitle = containsLineReturn ? FixLineReturns(fixedTitle, allowMultisentences: false) : fixedTitle; - fixedTitle = hasLeadingOrTrailingWhitespaces ? RemoveLeadingAndTrailingWhitespaces(fixedTitle) : fixedTitle; - Debug.Assert(title != fixedTitle); ReportDefineDiagnosticArgumentCorrectlyDiagnostic(DefineDiagnosticTitleCorrectlyRule, argumentOperation, fixedTitle, fixLocation, reportDiagnostic); @@ -594,13 +598,19 @@ private static void AnalyzeTitleCore(string title, IArgumentOperation argumentOp private static void AnalyzeMessageCore(string message, IArgumentOperation argumentOperation, Location fixLocation, Action reportDiagnostic) { + var hasLeadingOrTrailingWhitespaces = HasLeadingOrTrailingWhitespaces(message); + if (hasLeadingOrTrailingWhitespaces) + { + message = RemoveLeadingAndTrailingWhitespaces(message); + } + var isMultiSentences = IsMultiSentences(message); var endsWithPeriod = EndsWithPeriod(message); var containsLineReturn = ContainsLineReturn(message); - var hasLeadingOrTrailingWhitespaces = HasLeadingOrTrailingWhitespaces(message); if (isMultiSentences ^ endsWithPeriod || containsLineReturn || hasLeadingOrTrailingWhitespaces) { + // Leading and trailing spaces were already fixed var fixedMessage = containsLineReturn ? FixLineReturns(message, allowMultisentences: true) : message; isMultiSentences = IsMultiSentences(fixedMessage); endsWithPeriod = EndsWithPeriod(fixedMessage); @@ -610,8 +620,6 @@ private static void AnalyzeMessageCore(string message, IArgumentOperation argume fixedMessage = endsWithPeriod ? RemoveTrailingPeriod(fixedMessage) : fixedMessage + "."; } - fixedMessage = hasLeadingOrTrailingWhitespaces ? RemoveLeadingAndTrailingWhitespaces(fixedMessage) : fixedMessage; - ReportDefineDiagnosticArgumentCorrectlyDiagnostic(DefineDiagnosticMessageCorrectlyRule, argumentOperation, fixedMessage, fixLocation, reportDiagnostic); } @@ -638,12 +646,16 @@ private static void AnalyzeMessageCore(string message, IArgumentOperation argume private static void AnalyzeDescriptionCore(string description, IArgumentOperation argumentOperation, Location fixLocation, Action reportDiagnostic) { var hasLeadingOrTrailingWhitespaces = HasLeadingOrTrailingWhitespaces(description); + if (hasLeadingOrTrailingWhitespaces) + { + description = RemoveLeadingAndTrailingWhitespaces(description); + } + var endsWithPunctuation = EndsWithPunctuation(description); if (!endsWithPunctuation || hasLeadingOrTrailingWhitespaces) { var fixedDescription = !endsWithPunctuation ? description + "." : description; - fixedDescription = hasLeadingOrTrailingWhitespaces ? RemoveLeadingAndTrailingWhitespaces(fixedDescription) : fixedDescription; ReportDefineDiagnosticArgumentCorrectlyDiagnostic(DefineDiagnosticDescriptionCorrectlyRule, argumentOperation, fixedDescription, fixLocation, reportDiagnostic); diff --git a/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzerTests.cs b/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzerTests.cs index 9b4c8c9b69..ab956ee99d 100644 --- a/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzerTests.cs +++ b/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/DiagnosticDescriptorCreationAnalyzerTests.cs @@ -2853,6 +2853,9 @@ public async Task RS1031_LeadingOrTailingWhitespace_Diagnostic() " + "\t" + @" Title with leading and trailing spaces/tabs " + "\t" + @" + + Title with trailing space. + "; var fixedAdditionalFileText = @" @@ -2865,6 +2868,9 @@ public async Task RS1031_LeadingOrTailingWhitespace_Diagnostic() Title with leading and trailing spaces/tabs + + Title with trailing space + "; await VerifyCSharpCodeFixAsync(@" @@ -2888,11 +2894,14 @@ class MyAnalyzer : DiagnosticAnalyzer private static readonly DiagnosticDescriptor descriptor3 = new DiagnosticDescriptor(""MyDiagnosticId"", {|#2:Title|}, ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + private static readonly DiagnosticDescriptor descriptor4 = + new DiagnosticDescriptor(""MyDiagnosticId"", {|#3:new LocalizableResourceString(""AnalyzerTitle4"", null, typeof(Resources))|}, ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + public override ImmutableArray SupportedDiagnostics { get { - return ImmutableArray.Create(descriptor1, descriptor2, descriptor3); + return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4); } } @@ -2924,11 +2933,14 @@ class MyAnalyzer : DiagnosticAnalyzer private static readonly DiagnosticDescriptor descriptor3 = new DiagnosticDescriptor(""MyDiagnosticId"", Title, ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + private static readonly DiagnosticDescriptor descriptor4 = + new DiagnosticDescriptor(""MyDiagnosticId"", new LocalizableResourceString(""AnalyzerTitle4"", null, typeof(Resources)), ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + public override ImmutableArray SupportedDiagnostics { get { - return ImmutableArray.Create(descriptor1, descriptor2, descriptor3); + return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4); } } @@ -2940,6 +2952,7 @@ public override void Initialize(AnalysisContext context) VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(0), VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(1), VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(2), + VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(3), }); await VerifyBasicCodeFixAsync(@" @@ -2959,10 +2972,11 @@ Inherits DiagnosticAnalyzer Private Shared ReadOnly descriptor2 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", {|#1:New LocalizableResourceString(""AnalyzerTitle2"", Nothing, GetType(Resources))|}, ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Private Shared ReadOnly Title As New LocalizableResourceString(""AnalyzerTitle3"", Nothing, GetType(Resources)) Private Shared ReadOnly descriptor3 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", {|#2:Title|}, ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") + Private Shared ReadOnly descriptor4 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", {|#3:New LocalizableResourceString(""AnalyzerTitle4"", Nothing, GetType(Resources))|}, ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Public Overrides ReadOnly Property SupportedDiagnostics() As ImmutableArray(Of DiagnosticDescriptor) Get - Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3) + Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4) End Get End Property @@ -2990,10 +3004,11 @@ Inherits DiagnosticAnalyzer Private Shared ReadOnly descriptor2 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", New LocalizableResourceString(""AnalyzerTitle2"", Nothing, GetType(Resources)), ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Private Shared ReadOnly Title As New LocalizableResourceString(""AnalyzerTitle3"", Nothing, GetType(Resources)) Private Shared ReadOnly descriptor3 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", Title, ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") + Private Shared ReadOnly descriptor4 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", New LocalizableResourceString(""AnalyzerTitle4"", Nothing, GetType(Resources)), ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Public Overrides ReadOnly Property SupportedDiagnostics() As ImmutableArray(Of DiagnosticDescriptor) Get - Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3) + Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4) End Get End Property @@ -3004,6 +3019,7 @@ End Class VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(0), VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(1), VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(2), + VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticTitleCorrectlyRule).WithLocation(3), }); } @@ -3738,6 +3754,9 @@ public async Task RS1032_LeadingOrTrailingWhitespaces_Diagnostic() " + "\t" + @" Message with leading and trailing spaces/tabs " + "\t" + @" + + Message with period and trailing whitespace. + "; var fixedAdditionalFileText = @" @@ -3749,7 +3768,10 @@ public async Task RS1032_LeadingOrTrailingWhitespaces_Diagnostic() Optional comment. - Message with leading and trailing whitespace + Message with leading and trailing spaces/tabs + + + Message with period and trailing whitespace "; @@ -3774,11 +3796,14 @@ class MyAnalyzer : DiagnosticAnalyzer private static readonly DiagnosticDescriptor descriptor3 = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", {|#2:new LocalizableResourceString(""AnalyzerMessage3"", null, typeof(Resources))|}, ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + private static readonly DiagnosticDescriptor descriptor4 = + new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", {|#3:new LocalizableResourceString(""AnalyzerMessage4"", null, typeof(Resources))|}, ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + public override ImmutableArray SupportedDiagnostics { get { - return ImmutableArray.Create(descriptor1, descriptor2, descriptor3); + return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4); } } @@ -3810,11 +3835,14 @@ class MyAnalyzer : DiagnosticAnalyzer private static readonly DiagnosticDescriptor descriptor3 = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", new LocalizableResourceString(""AnalyzerMessage3"", null, typeof(Resources)), ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + private static readonly DiagnosticDescriptor descriptor4 = + new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", new LocalizableResourceString(""AnalyzerMessage4"", null, typeof(Resources)), ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, helpLinkUri: ""HelpLink"", customTags: """"); + public override ImmutableArray SupportedDiagnostics { get { - return ImmutableArray.Create(descriptor1, descriptor2, descriptor3); + return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4); } } @@ -3826,6 +3854,7 @@ public override void Initialize(AnalysisContext context) VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(0), VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(1), VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(2), + VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(3), }); await VerifyBasicCodeFixAsync(@" @@ -3845,10 +3874,11 @@ Inherits DiagnosticAnalyzer Private Shared ReadOnly Message As LocalizableString = New LocalizableResourceString(""AnalyzerMessage2"", Nothing, GetType(Resources)) Private Shared ReadOnly descriptor2 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", {|#1:Message|}, ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Private Shared ReadOnly descriptor3 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", {|#2:New LocalizableResourceString(""AnalyzerMessage3"", Nothing, GetType(Resources))|}, ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") + Private Shared ReadOnly descriptor4 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", {|#3:New LocalizableResourceString(""AnalyzerMessage4"", Nothing, GetType(Resources))|}, ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Public Overrides ReadOnly Property SupportedDiagnostics() As ImmutableArray(Of DiagnosticDescriptor) Get - Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3) + Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4) End Get End Property @@ -3876,10 +3906,11 @@ Inherits DiagnosticAnalyzer Private Shared ReadOnly Message As LocalizableString = New LocalizableResourceString(""AnalyzerMessage2"", Nothing, GetType(Resources)) Private Shared ReadOnly descriptor2 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", Message, ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Private Shared ReadOnly descriptor3 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", New LocalizableResourceString(""AnalyzerMessage3"", Nothing, GetType(Resources)), ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") + Private Shared ReadOnly descriptor4 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", New LocalizableResourceString(""AnalyzerMessage4"", Nothing, GetType(Resources)), ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, ""Description."", ""HelpLinkUrl"", ""Tag"") Public Overrides ReadOnly Property SupportedDiagnostics() As ImmutableArray(Of DiagnosticDescriptor) Get - Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3) + Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4) End Get End Property @@ -3890,6 +3921,7 @@ End Class VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(0), VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(1), VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(2), + VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticMessageCorrectlyRule).WithLocation(3), }); } @@ -4248,27 +4280,31 @@ public async Task RS1033_LeadingOrTrailingWhitespaces_Diagnostic() var additionalFileText = @" - Description with leading whitespace + Description with trailing space - Description with trailing whitespace - Optional comment. + Description with leading space " + "\t" + @" Description with leading and trailing spaces/tabs " + "\t" + @" + + Description with trailing space. + "; var fixedAdditionalFileText = @" - Description with leading whitespace + Description with trailing space. - Description with trailing whitespace - Optional comment. + Description with leading space. - Description with leading and trailing spaces/tabs + Description with leading and trailing spaces/tabs. + + + Description with trailing space. "; @@ -4293,11 +4329,14 @@ class MyAnalyzer : DiagnosticAnalyzer private static readonly DiagnosticDescriptor descriptor3 = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, {|#2:description: new LocalizableResourceString(""AnalyzerDescription3"", null, typeof(Resources))|}, helpLinkUri: ""HelpLink"", customTags: """"); + private static readonly DiagnosticDescriptor descriptor4 = + new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, {|#3:description: new LocalizableResourceString(""AnalyzerDescription4"", null, typeof(Resources))|}, helpLinkUri: ""HelpLink"", customTags: """"); + public override ImmutableArray SupportedDiagnostics { get { - return ImmutableArray.Create(descriptor1, descriptor2, descriptor3); + return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4); } } @@ -4305,10 +4344,10 @@ public override void Initialize(AnalysisContext context) { } }", - additionalFileName: additionalFileName, - additionalFileText: additionalFileText, - fixedAdditionalFileText: fixedAdditionalFileText, - fixedSource: @" + additionalFileName: additionalFileName, + additionalFileText: additionalFileText, + fixedAdditionalFileText: fixedAdditionalFileText, + fixedSource: @" using System; using System.Collections.Immutable; using Microsoft.CodeAnalysis; @@ -4329,11 +4368,14 @@ class MyAnalyzer : DiagnosticAnalyzer private static readonly DiagnosticDescriptor descriptor3 = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, description: new LocalizableResourceString(""AnalyzerDescription3"", null, typeof(Resources)), helpLinkUri: ""HelpLink"", customTags: """"); + private static readonly DiagnosticDescriptor descriptor4 = + new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, isEnabledByDefault: true, description: new LocalizableResourceString(""AnalyzerDescription4"", null, typeof(Resources)), helpLinkUri: ""HelpLink"", customTags: """"); + public override ImmutableArray SupportedDiagnostics { get { - return ImmutableArray.Create(descriptor1, descriptor2, descriptor3); + return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4); } } @@ -4341,11 +4383,12 @@ public override void Initialize(AnalysisContext context) { } }", - expected: new[] { - VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(0), - VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(1), - VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(2), - }); + expected: new[] { + VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(0), + VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(1), + VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(2), + VerifyCS.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(3), + }); await VerifyBasicCodeFixAsync(@" Imports System @@ -4364,10 +4407,11 @@ Inherits DiagnosticAnalyzer Private Shared ReadOnly Description As LocalizableString = New LocalizableResourceString(""AnalyzerDescription2"", Nothing, GetType(Resources)) Private Shared ReadOnly descriptor2 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, {|#1:Description|}, ""HelpLinkUrl"", ""Tag"") Private Shared ReadOnly descriptor3 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, {|#2:New LocalizableResourceString(""AnalyzerDescription3"", Nothing, GetType(Resources))|}, ""HelpLinkUrl"", ""Tag"") + Private Shared ReadOnly descriptor4 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, {|#3:New LocalizableResourceString(""AnalyzerDescription4"", Nothing, GetType(Resources))|}, ""HelpLinkUrl"", ""Tag"") Public Overrides ReadOnly Property SupportedDiagnostics() As ImmutableArray(Of DiagnosticDescriptor) Get - Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3) + Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4) End Get End Property @@ -4395,10 +4439,11 @@ Inherits DiagnosticAnalyzer Private Shared ReadOnly Description As LocalizableString = New LocalizableResourceString(""AnalyzerDescription2"", Nothing, GetType(Resources)) Private Shared ReadOnly descriptor2 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, Description, ""HelpLinkUrl"", ""Tag"") Private Shared ReadOnly descriptor3 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, New LocalizableResourceString(""AnalyzerDescription3"", Nothing, GetType(Resources)), ""HelpLinkUrl"", ""Tag"") + Private Shared ReadOnly descriptor4 As DiagnosticDescriptor = new DiagnosticDescriptor(""MyDiagnosticId"", ""MyDiagnosticTitle"", ""MyDiagnosticMessage"", ""MyDiagnosticCategory"", DiagnosticSeverity.Warning, True, New LocalizableResourceString(""AnalyzerDescription4"", Nothing, GetType(Resources)), ""HelpLinkUrl"", ""Tag"") Public Overrides ReadOnly Property SupportedDiagnostics() As ImmutableArray(Of DiagnosticDescriptor) Get - Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3) + Return ImmutableArray.Create(descriptor1, descriptor2, descriptor3, descriptor4) End Get End Property @@ -4409,6 +4454,7 @@ End Class VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(0), VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(1), VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(2), + VerifyVB.Diagnostic(DiagnosticDescriptorCreationAnalyzer.DefineDiagnosticDescriptionCorrectlyRule).WithLocation(3), }); }