@@ -315,6 +315,8 @@ public string BuildCode()
315315 {
316316 this . generator . AddComment ( FileHeaderComment ) ;
317317 this . generator . AddBlankLine ( ) ;
318+ this . generator . AddAnalysisSuppressions ( ) ;
319+ this . generator . AddBlankLine ( ) ;
318320 this . generator . EmitNamespaceIfRequired ( this . RootNamespace ?? "AssemblyInfo" ) ;
319321 this . GenerateAssemblyAttributes ( ) ;
320322
@@ -545,6 +547,13 @@ internal CodeGenerator()
545547 this . codeBuilder = new StringBuilder ( ) ;
546548 }
547549
550+ protected virtual IEnumerable < string > WarningCodesToSuppress { get ; } = new string [ ]
551+ {
552+ "CA2243" , // Attribute string literals should parse correctly
553+ } ;
554+
555+ internal abstract void AddAnalysisSuppressions ( ) ;
556+
548557 internal abstract void AddComment ( string comment ) ;
549558
550559 internal abstract void DeclareAttribute ( Type type , string arg ) ;
@@ -586,6 +595,11 @@ protected void AddCodeComment(string comment, string token)
586595
587596 private class FSharpCodeGenerator : CodeGenerator
588597 {
598+ internal override void AddAnalysisSuppressions ( )
599+ {
600+ this . codeBuilder . AppendLine ( $ "#nowarn { string . Join ( " " , this . WarningCodesToSuppress . Select ( c => $ "\" { c } \" ") ) } ") ;
601+ }
602+
589603 internal override void AddComment ( string comment )
590604 {
591605 this . AddCodeComment ( comment , "//" ) ;
@@ -636,6 +650,11 @@ internal override void StartThisAssemblyClass()
636650
637651 private class CSharpCodeGenerator : CodeGenerator
638652 {
653+ internal override void AddAnalysisSuppressions ( )
654+ {
655+ this . codeBuilder . AppendLine ( $ "#pragma warning disable { string . Join ( ", " , this . WarningCodesToSuppress ) } ") ;
656+ }
657+
639658 internal override void AddComment ( string comment )
640659 {
641660 this . AddCodeComment ( comment , "//" ) ;
@@ -680,6 +699,11 @@ internal override void EndThisAssemblyClass()
680699
681700 private class VisualBasicCodeGenerator : CodeGenerator
682701 {
702+ internal override void AddAnalysisSuppressions ( )
703+ {
704+ this . codeBuilder . AppendLine ( $ "#Disable Warning { string . Join ( ", " , this . WarningCodesToSuppress ) } ") ;
705+ }
706+
683707 internal override void AddComment ( string comment )
684708 {
685709 this . AddCodeComment ( comment , "'" ) ;
0 commit comments