2017-06-20 97 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分析的性能。所以它不這樣做,所以你必須指定文字字符串。

相關問題