忽略某些特定情况的内置 FxCop 规则。自定义 FxCop 规则?

Posted

技术标签:

【中文标题】忽略某些特定情况的内置 FxCop 规则。自定义 FxCop 规则?【英文标题】:Ignore built-in FxCop rules for some specific cases. Custom FxCop rules? 【发布时间】:2012-03-15 00:37:21 【问题描述】:

我正在使用 Web Api 开发一些异步代码,并且我得到了很多我想抑制的 FxCop 错误。例如,我的控制器中的以下代码会触发这些错误:

    在适当的地方使用属性 MarkMembersAsStatic DoNotNestGenericTypesInMemberSignatures
public Task<HttpResponseMessage<IEnumerable<Foo>>> GetAsync()


我不想为整个程序集抑制这些规则,因此抑制代码错误的唯一方法似乎是为每个方法上的每个违反规则添加一个SuppressMessage 属性。有没有更好的方法来抑制错误?我正在考虑自定义 FxCop 规则...是否可以创建类似“忽略 DoNotNestGenericTypesInMemberSignatures for Task&lt;T&gt;”或“忽略从 Bar 类继承的任何类型的这些规则”之类的规则?

【问题讨论】:

【参考方案1】:

不,没有办法让 Microsoft 提供的任何规则有条件地忽略此类特定类型或成员。您有三个基本选择:

    单独禁止每个违规行为, 对包含“特殊”类型的程序集完全禁用规则,或者 禁用 Microsoft 提供的规则,但提供能够忽略您的类型的备用自定义规则。

就个人而言,我会选择 #1,但是 ymmv...

【讨论】:

【参考方案2】:

我相信最接近的答案是 Custom Rule in FxCop to only apply to methods called by particular type's method ?希望这对你有用,否则我会说答案是否定的

【讨论】:

这就是“关闭”链接的用途,作为另一个问题的副本关闭。如果您不确定,请留下评论,而不是答案。

以上是关于忽略某些特定情况的内置 FxCop 规则。自定义 FxCop 规则?的主要内容,如果未能解决你的问题,请参考以下文章

在 FxCop 自定义规则中检测具有 SerializationAttribute 的类

FxCop 自定义规则检查命名空间

自定义控件的 FxCop 自定义规则

FxCop:检查程序集信息值的自定义规则

fxcop 自定义规则 - 检查源代码以查找新关键字

如何在 FxCop 的自定义规则中获取传递给方法的参数值?