2013-12-07 34 views
6

Ich führe NDepend gegen mein C# -Projekt in VS 2012. Es gibt eine bestimmte "kritische Regelverletzung", die ich angeschaut habe und entschieden habe, dass ich so gehen möchte wie sie ist. Ich möchte NDepend anweisen, diese eine Verletzung zu ignorieren und sie NICHT gegen meine kritische Regelverletzungszählung zu zählen, so dass ich den Punkt am unteren Rand nicht mehr rot bekommen kann.Kann ich NDepend anweisen, ein einzelnes Ergebnis zu ignorieren?

Wenn es darauf ankommt: Es ist eine "Funktion mit zu vielen Parametern". Der Zweck der Funktion besteht darin, einen Protokolleintrag in eine Datenbanktabelle zu machen, und ich muss alle Werte (11 von ihnen) übergeben, um die Tabelle aufzufüllen (nachdem eine Logik auf sie angewendet wurde). Ich nehme an, ich könnte alle Werte in eine Struktur oder Klasse schreiben und diese als einen einzelnen Wert übergeben, aber es würde keine andere Verwendung für die Struktur/Klasse geben, als diese eine Funktion aufzurufen, was mir irgendwie albern erscheint.

Also, ich suchte nach einer Möglichkeit, etwas zu tun, wie mit der rechten Maustaste auf das Ergebnis klicken und "dieses Ergebnis dauerhaft ignorieren", wie Sie es mit einer Rechtschreibprüfung tun, aber ich sehe keine solche Option .

Gibt es eine Möglichkeit, dies zu tun?

Ich möchte nicht die gesamte Regel ausschließen oder ändern, um die maximale Anzahl der Parameter zu erhöhen, da es möglicherweise andere Instanzen gibt, bei denen ich der Änderung der Funktion zustimmen sollte.

Antwort

2

können Sie die Regel Körper auf diese Weise CQLinq ändern:

// <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 } 

Beachten Sie, dass die Regel Körper die Methode (n) enthält vollständigen Namen auszuschließen. Um den vollständigen Namen der Methode zu erhalten, klicken Sie einfach mit der rechten Maustaste auf die Methode im Ergebnis und wählen Sie das Menü Name in Zwischenablage kopieren.

Exclude method from NDepend code rule result

Alternativ, wenn Sie eine Methode aus allen Regeln Ergebnisse zu unterdrücken möchten, können Sie die JustMyCode/notmycode facility verwenden.

+1

Danke, das hat super funktioniert! – JoeMjr2

Verwandte Themen