2013-12-07 61 views
6

我對VS 2012中的C#項目運行NDepend。有一個特定的「違反關鍵規則」,我已經看過並決定要離開原樣。我想告訴NDepend忽略這一違規行爲,並且不要將其計入違反關鍵規則違規計數的行列,以便我可以讓底部的點不再爲紅色。我可以告訴NDepend忽略單個結果嗎?

如果很重要:這是一個「參數太多的函數」。函數的目的是使日誌條目進入數據庫表,並且我需要傳入所有值(其中11個)以填充表(在對其應用一些邏輯之後)。我想我可以把所有的值都放到一個結構體或類中,然後把它作爲一個單獨的值傳入,但是對於struct/class來說,除了調用這個函數外沒有其他用處,所以這對我來說似乎很愚蠢。

所以,我一直在尋找一種方法來做一些事情,比如右擊結果並選擇「永久忽略這個結果」,就像你可以用拼寫檢查器做的一樣,但是我沒有看到任何這樣的選項。

有沒有辦法做到這一點?

我不想排除整個規則或修改它以增加參數的最大數量,因爲可能有其他我確實應該修改該函數的實例。

回答

2

您可以修改CQLinq規則體是這樣的:

// <Name>Methods with too many parameters</Name> 
warnif count > 0 from m in JustMyCode.Methods 
.WithFullNameNotIn("MyNamespace.MyType.MyMethod1(String,Int32,Int32,Boolean,String,Int32,Int32,Boolean,String,Int32,Int32,Boolean)", 
        "MyNamespace.MyType.MyMethod2(String,Int32,Int32,Boolean,String,Int32,Int32,Boolean,String,Int32,Int32,Boolean)", 
        ...) 
where 
    m.NbParameters > 5 
    orderby m.NbParameters descending 
select new { m, m.NbParameters } 

注意規則主體包含方法(一個或多個)排除全名。要獲取方法全名,只需右鍵單擊結果中的方法並選擇菜單將名稱複製到剪貼板

Exclude method from NDepend code rule result

另外,如果你想從所有規則的結果抑制的方法,你可以使用JustMyCode/notmycode facility

+1

謝謝,這很好! – JoeMjr2

相關問題