Skip to content

Commit 84e2324

Browse files
authored
Merge pull request #3617 from bjornhellander/feature/file_header_template
Update reading of file_header_template and stylecop.documentation.copyrightText to allow multiple lines
2 parents 73bc6cf + c569611 commit 84e2324

3 files changed

Lines changed: 38 additions & 2 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/Settings/SettingsCSharp8UnitTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,36 @@ public async Task VerifyEditorConfigSettingsAreReadCorrectlyAsync()
6969
Assert.Equal(OptionSetting.Allow, styleCopSettings.OrderingRules.BlankLinesBetweenUsingGroups);
7070
}
7171

72+
[Fact]
73+
public async Task VerifyFileHeaderTemplateFromEditorConfigAsync()
74+
{
75+
var settings = @"root = true
76+
77+
[*]
78+
file_header_template = Line 1\nLine 2.
79+
";
80+
var context = await this.CreateAnalysisContextFromEditorConfigAsync(settings).ConfigureAwait(false);
81+
82+
var styleCopSettings = context.GetStyleCopSettings(CancellationToken.None);
83+
84+
Assert.Equal("Line 1\nLine 2.", styleCopSettings.DocumentationRules.GetCopyrightText("unused"));
85+
}
86+
87+
[Fact]
88+
public async Task VerifyStyleCopDocumentationCopyrightTextFromEditorConfigAsync()
89+
{
90+
var settings = @"root = true
91+
92+
[*]
93+
stylecop.documentation.copyrightText = Line 1\nLine 2.
94+
";
95+
var context = await this.CreateAnalysisContextFromEditorConfigAsync(settings).ConfigureAwait(false);
96+
97+
var styleCopSettings = context.GetStyleCopSettings(CancellationToken.None);
98+
99+
Assert.Equal("Line 1\nLine 2.", styleCopSettings.DocumentationRules.GetCopyrightText("unused"));
100+
}
101+
72102
[Theory]
73103
[CombinatorialData]
74104
public async Task VerifyBooleanDocumentationSettingsFromEditorConfigAsync(bool value)

StyleCop.Analyzers/StyleCop.Analyzers/Settings/ObjectModel/AnalyzerConfigHelper.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ internal static string TryGetStringValue(AnalyzerConfigOptionsWrapper analyzerCo
5151
return null;
5252
}
5353

54+
internal static string TryGetMultiLineStringValue(AnalyzerConfigOptionsWrapper analyzerConfigOptions, string key, bool allowExplicitUnset = true)
55+
{
56+
var orgValue = TryGetStringValue(analyzerConfigOptions, key, allowExplicitUnset);
57+
return orgValue?.Replace("\\r", "\r").Replace("\\n", "\n");
58+
}
59+
5460
internal static KeyValuePair<string, string>? TryGetStringValueAndNotification(AnalyzerConfigOptionsWrapper analyzerConfigOptions, string key, bool allowExplicitUnset = true)
5561
{
5662
if (analyzerConfigOptions.TryGetValue(key, out var value))

StyleCop.Analyzers/StyleCop.Analyzers/Settings/ObjectModel/DocumentationSettings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,8 @@ protected internal DocumentationSettings(JsonObject documentationSettingsObject,
245245
documentPrivateFields ??= AnalyzerConfigHelper.TryGetBooleanValue(analyzerConfigOptions, "stylecop.documentation.documentPrivateFields");
246246

247247
companyName ??= AnalyzerConfigHelper.TryGetStringValue(analyzerConfigOptions, "stylecop.documentation.companyName");
248-
copyrightText ??= AnalyzerConfigHelper.TryGetStringValue(analyzerConfigOptions, "stylecop.documentation.copyrightText")
249-
?? AnalyzerConfigHelper.TryGetStringValue(analyzerConfigOptions, "file_header_template");
248+
copyrightText ??= AnalyzerConfigHelper.TryGetMultiLineStringValue(analyzerConfigOptions, "stylecop.documentation.copyrightText")
249+
?? AnalyzerConfigHelper.TryGetMultiLineStringValue(analyzerConfigOptions, "file_header_template");
250250
headerDecoration ??= AnalyzerConfigHelper.TryGetStringValue(analyzerConfigOptions, "stylecop.documentation.headerDecoration");
251251

252252
xmlHeader ??= AnalyzerConfigHelper.TryGetBooleanValue(analyzerConfigOptions, "stylecop.documentation.xmlHeader");

0 commit comments

Comments
 (0)