NDepend - Kurzvorstellung Stefan Lieser Web:
Übersicht NDepend analysiert Assemblies auf Basis von IL und ist daher sprachunabhängig. Falls vorhanden werden Debug- informationen aus pdb Dateien hinzugezogen (z.B. für Lines of code). GUI und Console Frontend, dadurch einfache Integration in Buildprozess (Continuous Integration).
Übersicht Top-down Sicht auf eine Anwendung Statistiken und Metriken Layer und Dependencies
Code Query Language (CQL) Stateless types that might be static SELECT TOP 10 TYPES WHERE SizeOfInst == 0 AND !IsStatic AND !IsGeneric AND !IsInterface Inheritance tree too deep SELECT TOP 10 TYPES WHERE DepthOfInheritance >= 6 ORDER BY DepthOfInheritance DESC
Dependencies Abhängigkeiten zwischen Assemblies werden analysiert und dargestellt. Drill-down möglich
Class Browser Umfangreiche Abfragemöglichkeiten zur Klassenstruktur
Code Metrics Afferent coupling Incoming Dependencies Hohe Werte bedeuten dass die Klasse viel Verantwortung für andere übernimmt. Efferent coupling Outgoing Dependencies Hohe Werte bedeuten dass die Klasse von vielen anderen Klassen abhängig ist.
Code Metrics Instability Factor [0,0.. 1,0] Verhältnis von Efferent Coupling zum gesamten Coupling Instability Factor = Efferent Coupling / (Efferent Coupling + Afferent Coupling) 0,0: stabil, die Klasse ist von Änderungen an anderen Klassen nie betroffen. 1,0: instabil, die Klasse ist von Änderungen an anderen Klassen immer betroffen.
Code Metrics Cyclomatic Complexity Maß für die möglichen Ausführungspfade durch eine Methode. Die Anzahl der folgenden Konstrukte wird gezählt: if/while/for/foreach/case/default/ continue/goto/&&/||/catch/? :/?? Methodenaufrufe etc. werden nicht gezählt.
Links NDepend Blog von Patrick Smacchia