gpt4 book ai didi

c# - 为什么我不能将 [SuppressMessage(...)] 中的常量与 StyleCop 一起使用?

转载 作者:行者123 更新时间:2023-11-30 20:40:10 25 4
gpt4 key购买 nike

我想将抑制 StyleCop 警告所需的字符串作为常量放置在一个类中,这样我就不需要到处放置字符串并受益于查找所有引用函数来找出我抑制了多少次哪个规则。

public class Rules
{
public const string Naming = "Microsoft.StyleCop.CSharp.NamingRules";
public const string SA1310 = "SA1310:FieldNamesMustNotContainUnderscore";
}

如下装饰我的类(class)

[SuppressMessage(Rules.Naming, Rules.SA1310)]
public class MyClass
{
public readonly int my_field;
}

使得 StyleCop 仍然提示名称中包含下划线的字段。仅当使用

归因于类时
[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1310:FieldNamesMustNotContainUnderscore")]

StyleCop 警告消失。这是为什么? StyleCop 是否直接解析我的源代码?有没有办法让它在上面所说的庄园里工作?

最佳答案

StyleCop 针对的是源代码,而不是已编译的程序集。在使用 SuppressMessageAttribute 实例的 StyleCop 逻辑中没有任何内容会尝试取消引用常量以读取它们的值,因此基本上您无法执行任何操作来让 StyleCop 识别您的常量。 (如果您一直在 FxCop 中成功使用此方法,那么它会起作用,因为 FxCop 分析编译的程序集,其中对常量的引用已被其文字值替换。)

关于c# - 为什么我不能将 [SuppressMessage(...)] 中的常量与 StyleCop 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33674077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com