2012-01-09 32 views
2

我在我的代碼少數情況下,風格警察給出的是:如何獲取樣式警察忽略違反的具體實例

「SA1119:這一行包含不必要的括號。」

現在我完全同意這一點,如果我有一行代碼,上面寫着:

int someValue = (((12 + 3) + 5)); 

然而,當我有更復雜的東西,如:

textXpos = ((((float)this.Width - imageoffset) - textsize.Width)/2); 

我知道我可以重寫這個像:

textXpos = (((float)this.Width - imageoffset - textsize.Width)/2); 

而且它會評估到相同的值,但我找到第一個一個更容易閱讀。有沒有辦法告訴styecop忽略這個錯誤的實例?

或者我需要通過將一些方程分配給臨時變量來解決這個問題嗎?

我不想將這段代碼包裝在自動生成的區域中,因爲我希望樣式警察評估這段代碼。

感謝


通過ken2k基礎上的建議,我嘗試了以下內容:

using System.Diagnostics.CodeAnalysis; 

。 。 。

[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1119:StatementMustNotUseUnnecessaryParenthesis", Justification = "Better for readability.")] 
    public int Testmethod() 
    { 
     int returnValue = (((5 - 5) - 5)/2); 
     return returnValue; 
    } 

但這似乎沒有任何效果?我錯過了什麼嗎?


回答

4

您可以將方法的頭之前添加以下語句:

[SuppressMessage("Microsoft.StyleCop.CSharp.MaintainabilityRules", "SA1119:StatementMustNotUseUnnecessaryParenthesis", Justification = "Better for readability.")] 

但警告SA1119將整個方法被忽略。

編輯:至少除去第一和最後一個括號:

textXpos = (((float)this.Width - imageoffset) - textsize.Width)/2; 
+0

它從來沒有發生,我認爲它可能對外面的括號被給予了!! D'oh – AidanO 2012-01-09 14:24:46

+1

是的,我在這裏遇到同樣的問題。我認爲Stylecop團隊擺脫了「微軟」字符串,但顯然不是。查看更新的答案。 – ken2k 2012-01-09 14:43:22

+0

啊你的回答比我的好多了,「StyleCop 4.3中有一個bug,我需要升級到4.4。謝謝。 – AidanO 2012-01-09 14:45:43