2016-06-16 3 views
1

Wir haben einen Typ mit dem Namen OldThing, den wir im Laufe der Zeit ablehnen möchten.Wie kann ich NDepend zur Fehleranalyse erhalten, wenn neue Aufrufe zu einem veralteten Typ verwendet werden?

Wir brauchen eine NDepend Abfrage/Regel, die from this point on, don't add any more calls to 'OldThing' sagt.

Wir verwenden derzeit NDepend und haben einen Basisaufbau für die Überprüfung von Dingen wie don't make large methods even larger.

Also, wir möchten NDepend verwenden, um alle zusätzliche Anrufe an OldThing zu verfolgen. Ich habe die folgende CQL-Abfrage:

// <Name>Don't use OldThing going forwards</Name> 

warnif count > 0 

let containsMethods = Methods.WithFullNameIn(
    "MyNamespace.OldType.get_Foo()", 
    "MyNamespace.OldType.get_Bar()") 

from m in Application.Methods.UsingAny(containsMethods) 
where m.IsUsedRecently() 
select m 

... das Problem ist, es scheint nicht zu funktionieren; Es findet keine neue Anrufe.

Gibt es eine bessere Möglichkeit, dies in NDepend zu tun (vielleicht mit trend metrics)?

Antwort

1

Sie benötigen nicht where m.IsUsedRecently(), dies ist nur für Methodenaufrufe von Drittanbietern.

Dann müssen Sie überprüfen, ob der Ausdruck let mit den richtigen veralteten Methoden übereinstimmt (Sie könnten sie auch alle auf einmal unter Verwendung der ObsoleteAttribute abgleichen).

Schließlich sollten Sie diese Regel machen critical und es sollte :)

+0

Dank @Patrick arbeiten. Dies berichtet nun über Verwendungen in geänderten Dateien, aber ich möchte, dass es nur über 'zusätzliche' Verwendungen berichtet. Zum Beispiel hat ein Kollege eine Datei geöffnet und geändert (aber keine * zusätzlichen * Aufrufe zu diesen Methoden hinzugefügt), aber der Build ist jetzt mit 5 Verwendungen dieser Methoden unterbrochen. –

+0

NDepend kann feststellen, ob eine Methode eine andere Methode aufruft, aber nicht, dass eine Methode N mal eine andere Methode aufruft. In diesem Zusammenhang möchten Sie wissen, welche neue oder refaktorierte Methode eine veraltete Methode aufruft. (und nannte es nicht in der Grundlinie) –

+1

Es wäre nett, wenn es eine Funktion gäbe, die die "Anzahl" von einem Build mit einem anderen vergleichen könnte. Ich könnte dann eine neue "Trend" -Abfrage pro Build hinzufügen und dann sehen, ob die Anzahl gestiegen ist. –

Verwandte Themen