假设我有所有货币的枚举:
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
:
设置完成后,您可以像这样向字典中添加缩写和异常(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/