从 FxCop 代码分析中排除完整的命名空间?

Posted

技术标签:

【中文标题】从 FxCop 代码分析中排除完整的命名空间?【英文标题】:Exclude complete namespace from FxCop code analysis? 【发布时间】:2008-12-09 15:26:28 【问题描述】:

是否可以从所有 FxCop 分析中排除完整的命名空间,同时仍使用 SuppressMessageAttribute 分析程序集的其余部分?

在我目前的情况下,我有一堆由 LINQ to SQL 生成的类,它们会导致很多 FxCop 问题,显然,我不会修改所有这些以匹配 FxCop 标准,因为其中很多修改会是如果我重新生成类就消失了。

我知道 FxCop 有一个项目选项来禁止对生成的代码进行分析,但它似乎无法将 LINQ 2 SQL 创建的实体和上下文类识别为生成的代码。

【问题讨论】:

这是一个完全相同的副本,因为另一个问题也在询问 Linq-to-SQL;但我认为应该合并答案,并为搜索能力维护存根。 【参考方案1】:

如果您使用 [GeneratedCode] 属性标记您的类,您可以使用带有 FxCop 的 /ignoregeneratedcode 标志,如此 MSDN 帖子中所述:

FAQ: How do I prevent FxCop from firing warnings against generated code

您可能必须添加一个新的代码文件并在那里实现新的部分类以将属性添加到类中:

[GeneratedCode]
public partial class MainDataContext  

只需确保在创建新文件时将所有内容添加到正确的命名空间即可。

【讨论】:

如何解决这个问题?问题是关于命名空间的,这只针对单个类修复它 @Juan - 阅读更多问题。 OP 真的在问如何排除“由 LINQ to SQL 生成的一堆类”。这是该问题的解决方案。不幸的是,没有针对整个命名空间的解决方案。【参考方案2】:

[GeneratedCode] attribute 添加到类中。编辑:我的意思是部分具有相同名称的类,正如另一个答案所解释的那样。

【讨论】:

【参考方案3】:

使用生成的代码属性,这里是来自代码分析团队的blog post。

这在命名空间的顶部应该可以解决问题:

[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]

【讨论】:

不幸的是,据我所知,无法将这些属性添加到命名空间。这意味着我必须手动将它添加到每个生成的类中——这不是理想的解决方案。 :D 差不多。真正的痛苦是,如果您出于任何原因必须重新生成代码,则必须再次删除该属性。如果 Linq to Sql 生成的类是部分的,您可以在生成的代码之外维护这些属性。我对 EF 类也有类似的问题。【参考方案4】:
<Assembly: SuppressMessage("Microsoft.Design", _
    "CA1020:AvoidNamespacesWithFewTypes", _
    Scope:="namespace", _
    Target:="Missico.IO")> 

将声明放在项目根目录下的GlobalSuppressions.vb中。

我只有 VB 示例。

【讨论】:

这不适用于 VS 2010 代码分析中的许多代码生成警告:在命名空间级别似乎无法抑制。但还有另一种选择:***.com/questions/2221881/…

以上是关于从 FxCop 代码分析中排除完整的命名空间?的主要内容,如果未能解决你的问题,请参考以下文章

Java 从命名空间中排除基本目录

Leiningen 不会从 uberjar 中排除命名空间

分析 FxCop / 代码分析警告 CA1506: AvoidExcessiveClassCoupling

我们如何才能从 hdfs 联邦的一个命名空间中排除一些数据节点?

从普罗米修斯抓取中排除 Kubernetes 命名空间

从特定操作中排除过滤器