我们对所有源文件运行代码分析。其中一个源文件是Linq-To-SQL生成的文件,我们无法控制生成的输出。生成的代码会产生代码分析警告,我想要抑制这些警告。有没有办法在不创建属性和/或pragma的情况下抑制代码生成文件中的CA警告(每次生成文件时都会被覆盖)?
你的类是否有[GeneratedCode]属性?如果是,你可以让FxCop忽略它们:
使用FxCop项目:
- 在FxCop中打开你的FxCop项目
- 选择项目 -> 选项 -> 拼写和分析
- 勾选“抑制分析结果对生成的代码”
- 点击“确定”
通过命令行:
- 传递/ignoregeneratedcode开关,例如:
FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode
如果缺少GeneratedCode
属性,您可以通过使用自己的分部类分支来解决这个问题。这意味着您添加的任何自定义代码(包括实现部分方法)都将被排除在外。例如:
namespace MyApp.DB {
[GeneratedCode("LINQ To SQL", "4.0")]
internal partial class MyAppDataContext {
}
// Repeat for each entity
}
如果您正在使用FxCop GUI,您可以在FxCop项目中简单地排除这些问题。只需右键单击问题,然后选择“排除”,您还可以添加注释。
但是,如果您在输出窗口中运行FxCop,我不知道该怎么办。也许您可以检查是否可能创建一个模块级别的SuppressMessage,并将其粘贴到AssemblyInfo.cs中。但我认为不太可能。
PLINQO (Linq-to-SQL) CodeSmith模板也会自动生成此属性。大多数插件也开始忽略文件名中带有“.generated”的部分类。
[System.CodeDom.Compiler.GeneratedCode("CodeSmith", "5.0.0.0")]