代码生成器生成文件的代码分析 - 如何抑制警告?

时间:2010-02-08 13:35:33

标签: c# code-analysis

我们对所有源文件运行代码分析。我们的一个源文件是Linq-To-SQL生成的文件,我们无法控制生成的输出。生成的代码正在生成我想要抑制的代码分析警告。有没有什么办法可以在代码生成的文件中抑制CA警告,这些警告不涉及在代码本身中创建属性和/或编译指示(每次生成文件时都会被覆盖)?

4 个答案:

答案 0 :(得分:5)

您的类是否具有[GeneratedCode]属性?如果是这样,你可以让FxCop忽略它们:

  

使用FxCop项目:

     
      
  1. 在FxCop中打开您的FxCop项目
  2.   
  3. 选择项目 - >选项 - >拼写&分析
  4.   
  5. 根据生成的代码检查抑制分析结果
  6.   
  7. 点击确定
  8.         

    通过命令行:

         
        
    1. 传递/ ignoregeneratedcode开关,例如:
    2.   
     FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode

http://blogs.msdn.com/fxcop/archive/2008/02/28/faq-how-do-i-prevent-fxcop-1-36-from-firing-warnings-against-generated-code.aspx

答案 1 :(得分:2)

通过使用您自己的分部类分支来应用该属性,您可以解决缺少GeneratedCode属性的问题。这意味着您将添加您添加的任何自定义代码(包括实现部分方法)。例如:

namespace MyApp.DB {
    [GeneratedCode("LINQ To SQL", "4.0")]
    internal partial class MyAppDataContext {
    }

    // Repeat for each entity
}

答案 2 :(得分:0)

如果您使用的是FxCop GUI,则可以在FxCop项目中简单地排除这些问题。只需右键单击该问题,然后选择“排除”,也可以添加注释。
但是如果你在输出窗口中运行FxCop,我就没有线索了。也许您可以检查是否可以创建模块级SuppressMessage并将其粘贴到AssemblyInfo.cs中。但我不这么认为。

答案 3 :(得分:0)

PLINQO (Linq-to-SQL) CodeSmith templates也会自动为您生成此属性。大多数加载项也开始忽略在文件名中使用“.generated”生成的部分类。

[System.CodeDom.Compiler.GeneratedCode(“CodeSmith”,“5.0.0.0”)]