是否可以从所有 FxCop 分析中排除完整的命名空间,同时仍使用SuppressMessageAttribute
?
在我目前的情况下,我有一堆由 LINQ to SQL 生成的类,它们会导致很多 FxCop 问题,显然,我不会修改所有这些以匹配 FxCop 标准,因为如果我这样做,很多这些修改都会消失重新生成类。
我知道 FxCop 有一个项目选项来禁止对生成的代码进行分析,但它似乎无法将 LINQ 2 SQL 创建的实体和上下文类识别为生成的代码。
是否可以从所有 FxCop 分析中排除完整的命名空间,同时仍使用SuppressMessageAttribute
?
在我目前的情况下,我有一堆由 LINQ to SQL 生成的类,它们会导致很多 FxCop 问题,显然,我不会修改所有这些以匹配 FxCop 标准,因为如果我这样做,很多这些修改都会消失重新生成类。
我知道 FxCop 有一个项目选项来禁止对生成的代码进行分析,但它似乎无法将 LINQ 2 SQL 创建的实体和上下文类识别为生成的代码。
如果您使用该[GeneratedCode]
属性标记您的类,则可以将 /ignoregeneratedcode 标志与 FxCop 一起使用,如此 MSDN 帖子中所述:
您可能必须添加一个新代码文件并在那里实现新的部分类以将属性添加到类中:
[GeneratedCode]
public partial class MainDataContext { }
只需确保在创建新文件时将所有内容添加到正确的命名空间即可。
在类中添加一个[GeneratedCode] attribute
。
编辑:我的意思是部分具有相同名称的类,正如另一个答案所解释的那样。
使用生成的代码属性,这是代码分析团队关于该主题的博客文章。
这在命名空间的顶部应该可以解决问题:
[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
<Assembly: SuppressMessage("Microsoft.Design", _
"CA1020:AvoidNamespacesWithFewTypes", _
Scope:="namespace", _
Target:="Missico.IO")>
将语句放在GlobalSuppressions.vb
项目的根目录中。
我所拥有的只是 VB 示例。