c# - 如何抑制所有类型成员的代码分析消息?

标签 c# .net code-analysis roslyn fxcop

假设我有所有货币的枚举:

public enum CurrencyType
{
    /// <summary>
    /// United Arab Emirates dirham
    /// </summary>
    [EnumMember]
    AED = 784,

    /// <summary>
    /// Afghan afghani
    /// </summary>
    [EnumMember]
    AFN = 971,

    /// <summary>
    /// Albanian lek
    /// </summary>
    [EnumMember]
    ALL = 008,

    ...
}

VS 2015代码分析不断报错100次CA1709对于每个成员。

这本身就是一个有用的规则,我不想禁用它;但是在这种特定情况下它并没有多大帮助,因为 CurrencyType 是公开的并且在很多其他项目中使用。

我可以抑制消息;然而,VS 只允许我为每个成员抑制它——这意味着我将有 100 行 [SuppressMessage(...)] 行,这会使代码困惑。

有什么方法可以抑制所有 CurrencyType 成员的所有 CA1709,同时不抑制该项目中所有其他代码的所有 CA1709,而不必编写 100 [SuppressMessage(...) ]?

SuppressMessageAttribute 有一个Scope 参数,但是关于那个的文档并不清楚。我试过将两者都放置

[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Justification = "Currency codes are defined in ISO standard.")]

[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Justification = "Currency codes are defined in ISO standard.")]

CurrencyType 本身。两者都不起作用。

最佳答案

不幸的是,在这种情况下,无法抑制整个类或枚举的规则并将抑制应用于其所有成员。

但是您可以做的是创建一个 CodeAnalaysisDictionary.xml,将其添加到包含 Enum 的项目并将其“构建操作”属性设置为 CodeAnalysisDictionary:

enter image description here

设置完成后,您可以像这样向字典中添加缩写和异常(exception)情况:

<Dictionary>
      <Acronyms>
         <CasingExceptions>
            <Acronym>AED</Acronym>
            <Acronym>AFN</Acronym>
            <Acronym>ALL</Acronym>
            <Acronym>...</Acronym>
         </CasingExceptions>
      </Acronyms>
</Dictionary>

虽然这些异常(exception)将适用于代码中包含这些首字母缩略词的任何元素,但它们将阻止 CA1709 警告出现。

有关您可以使用字典文件设置的异常(exception)情况的更多信息,请参阅文档:

关于c# - 如何抑制所有类型成员的代码分析消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32357046/

相关文章:

c# - 通过方法返回 list<t> 的最佳方式是什么?

C# Newtonsoft.Json.Linq.JValue 总是返回 Int64

c# - emguCV-快速计算二进制图像中带孔的对象的面积

c# - 在 C# 中覆盖二元运算符

c# - 命名空间是程序集还是项目?

python - 有没有更好的方法(除了 COM)来远程控制 Excel?

datatable - CA2240 中的 DataSet 和 DataTable 警告

c# - CA1023背后的原因是什么

algorithm - 什么是 "naive"算法,什么是 "closed - form"解法?

c# - Microsoft.NET.CoreRuntime 的 SOS 调试扩展