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

5
我们对所有源文件运行代码分析。其中一个源文件是Linq-To-SQL生成的文件,我们无法控制生成的输出。生成的代码会产生代码分析警告,我想要抑制这些警告。有没有办法在不创建属性和/或pragma的情况下抑制代码生成文件中的CA警告(每次生成文件时都会被覆盖)?
4个回答

5

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

使用FxCop项目:

  1. 在FxCop中打开你的FxCop项目
  2. 选择项目 -> 选项 -> 拼写和分析
  3. 勾选“抑制分析结果对生成的代码”
  4. 点击“确定”

通过命令行:

  1. 传递/ignoregeneratedcode开关,例如:
     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


如果我使用命令行调用fxcopcmd.exe,SuppressMessage是否有效? - Kiquenet

2

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

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

    // Repeat for each entity
}

0

如果您正在使用FxCop GUI,您可以在FxCop项目中简单地排除这些问题。只需右键单击问题,然后选择“排除”,您还可以添加注释。
但是,如果您在输出窗口中运行FxCop,我不知道该怎么办。也许您可以检查是否可能创建一个模块级别的SuppressMessage,并将其粘贴到AssemblyInfo.cs中。但我认为不太可能。


这里在 SO 的一个相关问题中有另一个答案指出你可以将模块级别的抑制添加到 assemblyinfo.cs 中,但我刚才尝试了一下并没有成功。如果我想忽略特定程序集中的所有错误,逐个为每个方法添加 SuppressMessage 太繁琐了。希望有人能提供解决办法! - Dave

0

PLINQO (Linq-to-SQL) CodeSmith模板也会自动生成此属性。大多数插件也开始忽略文件名中带有“.generated”的部分类。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接