2017-06-20 48 views
0

我想将抑制ReSharper警告所需的字符串作为常量放在一个类中,这样我就不需要遍历所有字符串,并且可以从查找所有引用函数中找到我已经抑制了多少次规则。为什么我不能在ReSharper中使用[SuppressMessage(...)]中的常量?

public class Rules 
{ 
    public const string ReSharper= "ReSharper"; 
    public const string InconsistentNaming = "InconsistentNaming"; 
} 

装饰我的成员如下

public class MyClass 
{ 
    [SuppressMessage(Rules.ReSharper, Rules.InconsistentNaming)] 
    protected uint v { get; } 
} 

使得ReSharper的还是抱怨性的判定,其名称以小写字母开头。与

[SuppressMessage("ReSharper", "InconsistentNaming")] 

归因成员只有当ReSharper的警告消失。有没有办法让它在上面使用常量说明的庄园中工作?

+0

很酷的想法,并可以理解你会想要的,我不认为这是可能的,因为它必须在运行之前得到的价值(我知道它的常数:P) – EpicKip

+0

https://stackoverflow.com/questions/33674077/ why-can-i-use-constants-in-suppressmessage-together-stylecop听起来可能类似吗? – mjwills

+0

@mjwills我也问过这个问题 – David

回答

2

ReSharper根据源代码的语法执行分析并报告警告。所以它专门寻找形式为"ReSharper""InconsistentNaming"等的字符串标记。为了理解你的常量,它将执行代码的语义分析,例如通过确定什么是Rules.ReSharper,然后发现它是一个字符串不变。

后者的分析速度要慢得多,并且会影响ReSharpers分析的性能。所以它不这样做,所以你必须指定文字字符串。

相关问题