我们对所有源文件运行代码分析。我们的一个源文件是Linq-To-SQL生成的文件,我们无法控制生成的输出。生成的代码正在生成我想要抑制的代码分析警告。有没有什么办法可以在代码生成的文件中抑制CA警告,这些警告不涉及在代码本身中创建属性和/或编译指示(每次生成文件时都会被覆盖)?
答案 0 :(得分:5)
您的类是否具有[GeneratedCode]属性?如果是这样,你可以让FxCop忽略它们:
使用FxCop项目:
- 在FxCop中打开您的FxCop项目
- 选择项目 - >选项 - >拼写&分析
- 根据生成的代码检查抑制分析结果
- 点击确定
醇>通过命令行:
- 传递/ ignoregeneratedcode开关,例如:
醇>
FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode
答案 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”)]