From 5dc86af1975fd0568fb49276a7037c295184991c Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Tue, 14 Dec 2021 13:22:16 -0700 Subject: [PATCH] Suppress CA2243 in generated AssemblyInfo file --- .../AssemblyInfoTest.cs | 6 +++++ .../AssemblyVersionInfo.cs | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs b/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs index f8fc5fb2..253fdeb6 100644 --- a/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs +++ b/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs @@ -57,6 +57,8 @@ public void FSharpGenerator(bool? thisAssemblyClass) // //------------------------------------------------------------------------------ +#nowarn ""CA2243"" + namespace AssemblyInfo [] [] @@ -133,6 +135,8 @@ public void CSharpGenerator(bool? thisAssemblyClass) // //------------------------------------------------------------------------------ +#pragma warning disable CA2243 + [assembly: System.Reflection.AssemblyVersionAttribute(""1.3.0.0"")] [assembly: System.Reflection.AssemblyFileVersionAttribute(""1.3.1.0"")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("""")] @@ -188,6 +192,8 @@ public void VisualBasicGenerator(bool? thisAssemblyClass) ' '------------------------------------------------------------------------------ +#Disable Warning CA2243 + diff --git a/src/Nerdbank.GitVersioning.Tasks/AssemblyVersionInfo.cs b/src/Nerdbank.GitVersioning.Tasks/AssemblyVersionInfo.cs index fa9aa863..2f39ca05 100644 --- a/src/Nerdbank.GitVersioning.Tasks/AssemblyVersionInfo.cs +++ b/src/Nerdbank.GitVersioning.Tasks/AssemblyVersionInfo.cs @@ -315,6 +315,8 @@ public string BuildCode() { this.generator.AddComment(FileHeaderComment); this.generator.AddBlankLine(); + this.generator.AddAnalysisSuppressions(); + this.generator.AddBlankLine(); this.generator.EmitNamespaceIfRequired(this.RootNamespace ?? "AssemblyInfo"); this.GenerateAssemblyAttributes(); @@ -545,6 +547,13 @@ internal CodeGenerator() this.codeBuilder = new StringBuilder(); } + protected virtual IEnumerable WarningCodesToSuppress { get; } = new string[] + { + "CA2243", // Attribute string literals should parse correctly + }; + + internal abstract void AddAnalysisSuppressions(); + internal abstract void AddComment(string comment); internal abstract void DeclareAttribute(Type type, string arg); @@ -586,6 +595,11 @@ protected void AddCodeComment(string comment, string token) private class FSharpCodeGenerator : CodeGenerator { + internal override void AddAnalysisSuppressions() + { + this.codeBuilder.AppendLine($"#nowarn {string.Join(" ", this.WarningCodesToSuppress.Select(c => $"\"{c}\""))}"); + } + internal override void AddComment(string comment) { this.AddCodeComment(comment, "//"); @@ -636,6 +650,11 @@ internal override void StartThisAssemblyClass() private class CSharpCodeGenerator : CodeGenerator { + internal override void AddAnalysisSuppressions() + { + this.codeBuilder.AppendLine($"#pragma warning disable {string.Join(", ", this.WarningCodesToSuppress)}"); + } + internal override void AddComment(string comment) { this.AddCodeComment(comment, "//"); @@ -680,6 +699,11 @@ internal override void EndThisAssemblyClass() private class VisualBasicCodeGenerator : CodeGenerator { + internal override void AddAnalysisSuppressions() + { + this.codeBuilder.AppendLine($"#Disable Warning {string.Join(", ", this.WarningCodesToSuppress)}"); + } + internal override void AddComment(string comment) { this.AddCodeComment(comment, "'");