2015-08-04 9 views
6

Ich bin in der Lage, in unseren Build-Prozess die Möglichkeit zu integrieren, nach jedem Build gegen den vorherigen Build Codeänderungen in Abhängigkeiten für eine Liste bestimmter Methoden zu vergleichen.Kann N den Ausgabecode in allen Methoden im Abhängigkeitsbaum für bestimmte Methoden angeben?

Also, wenn ich zwei Methoden habe, die auf die Datenbank zugreifen, möchte ich in der Lage sein, zu sagen, ob irgendeine Methode, die eine dieser beiden Methoden aufgerufen hat, den Code Deployment durchlaufen hat.

Antwort

4

Solche Code-Abfrage sollte Ihre Notwendigkeit beantworten:

// <Name>Methods that call Parse(String) or get_TestName() and that was added or where cpde was changed</Name> 
from m in Methods 
let depth0 = m.DepthOfIsUsing("NUnit.Core.RuntimeFramework.Parse(String)") 
let depth1 = m.DepthOfIsUsing("NUnit.Core.Test.get_TestName()") 
where (depth0 >= 0 || depth1 >= 0) 
    && (m.CodeWasChanged() || m.WasAdded()) 

orderby (depth0 != null ? depth0 : depth1) 
select new { m, depth0, depth1 } 

Natürlich mit dem Präfix warnif count > 0 Sie es in der Regel verwandeln können, wenn Sie es wünschen.

Hier ist diese Code-Abfrage in Aktion, Unterstreichungs-Methoden sind diejenigen, in denen Code seit Baseline geändert wurde, Methoden in Fettdruck sind die seit Baseline hinzugefügt.

NDepend calls in dependency tree diff methods

Sie können sich auf einen unterstrichenen Methoden ask to see diff in source code mit Ihrem bevorzugten Diff-Tool klicken.

Sie können auch das Ergebnis in eine Grafik exportieren (Schaltfläche Export in Graph), aber dann könnten Sie disjunkten Graphen erhalten, da Methoden unverändert fehlen:

enter image description here

+0

Danke, werde ich herunterladen die Probe und sehen, wie es geht. –