Frage

Ich habe versucht, aus NDepend , wurden ein paar Blogeinträge darüber zu lesen und auch zu hören ein Podcast. Ich denke, dass NDepend könnte ein wirklich nützliches Werkzeug sein, aber ich weiß immer noch nicht sehen, wo ich es benutzen würde.

Wie Sie es verwenden? Haben Sie es verwenden, warum? Warum nicht?

Ich möchte über einige down-to-earth reale Welt Beispiele hören.

War es hilfreich?

Lösung

habe ich NDepend ausgiebig in den letzten Jahren verwendet. Grundsätzlich ist es ein Abhängigkeitsanalyse-Tool, und so kann dies Ihnen mit vielen Abhängigkeitsfragen helfen.

Eines der wichtigsten Dinge, die ich es verwenden, für ist die Abhängigkeiten zwischen meinen Baugruppen, Arten und Methoden zu untersuchen. Das hilft mir, einen Blick zu behalten, ob Arten Kopplung zwischen der Hand aus, und hilft mir auch Chancen Refactoring zu erkennen.

Wenn auf einem massiven Refactoring einsteigen, z.B. extracting.moving Typen zu anderen Baugruppen, auf dieser Weise können Sie sehen, was davon abhängt, was, so dass Sie die alten nicht tun müssen „assembly meine Typen in einer anderen verschieben, dann versuchen und kompilieren und sehen, was Pausen“

NDepend hat auch eine große visuelle Matrix für diese Art von Informationen angezeigt wird.

Darüber hinaus hat es eine fantastische Abfragesprache, CQL, die Sie schreiben benutzerdefinierte Abfragen können. Diese können einfache Dinge sein wie „Zeige mir alle Methoden, die diese Methode aufrufen“, auf Anfragen von totem Code zu markieren, Abfragen auf cylcomatic Komplexität, Kopplung, etc, und vieles mehr.

Im Gegenzug kann es in einen Build-Prozess integriert werden, so dass Sie bauen Warnungen haben können / Ausfall basierend auf CQL Abfragen, wie „das Build fehl, wenn ein Verfahren mehr als 100 Zeilen Code hat aber keine Kommentare“ (das ein Beispiel ist. - ich sage nicht, diese besondere Metrik ist eine gute Sache)

Es kann auch Import Code-Coverage-Daten und geben Ihnen eine visuelle Darstellung von Bereichen mit wenig Code-Abdeckung sowie mit dem Sie CQL Abfragen gegen Code-Coverage-Informationen zu laufen (zB zeigen mir Methoden mit weniger als 70% Code Coverage)

Sie können auch Ihre aktuelle Build Ihres Projekts laden, und eine vorherige Build, und Ausführen von Abfragen zwischen ihnen wie „Zeige mir alle neue Typen, die <70% Code Coverage haben“ - das hilft Sie einführen strengere Regeln für die bestehende Codebases.

Das ist ein fantastisches Werkzeug, und ist nicht allzu schwer zu erlernen. Es ist beängstigend zu Beginn, nur wegen der schieren Menge der informaiton gibt es Ihnen, aber sehr zu empfehlen.

Andere Tipps

Ich finde es auch von unschätzbarem Wert in die Struktur komplizierter Methodenaufrufe zu verstehen. Ich kann alle Methoden aufrufen transitively eine bestimmte Methode oder Feld verwendet wird, zum Beispiel, und kann sehen, ob es mögliche Probleme mit Kreis Anrufe oder unerwünschte Abhängigkeiten oder Pfade, die mehr als notwendig gefaltet werden, etc.

Der Abhängigkeitsgraph ist jetzt auch interaktiv, so dass ich Methoden entfernen kann, die ich zur Zeit nicht daran interessiert, und bewegen sich andere um eine gute Visualisierung zu geben, was los ist.

Ich habe es nützlich gefunden Änderungen zwischen den Versionen von Baugruppen zu visualisieren. Selbst für einen Schnappschuss von Änderungen in einer bestimmten Version ...

ich denke, es in einer Continuous Integration Umgebung erstrahlt in dem Sie festlegen können bis CQL fragt Code-Metriken messen Sie in (zyklomatische Komplexität, Lang Methoden, etc.) interessiert sind, und dann können Sie Ihre Verbesserung in diesen Bereichen messen über Zeit.

Eigentlich ist dieses Tool hilfreich, wenn Sie zum Beispiel hat Schnittstelle, die von einem anderen Teil der Anwendung, die von verschiedenen Personen / Anbietern entwickelt werden. Jedes Mal, möchten Sie die Schnittstelle, die Sie herausfinden müssen, wer Ihre Schnittstelle wird mit seinem Code zu brechen zu vermeiden (Montag wird nicht beim Aufbau) Dies gilt für größere Projekte.

Dieses Tool ist hilfreich, wenn Ihre Anwendung eine große Anzahl von Baugruppen hat. Es hilft mir, die Code-Abhängigkeiten herauszufinden und sowie Änderungen zwischen den Versionen

Ich verwende auch NDepend zwei Versionen einiger Montage zu vergleichen. NDepend haben diese ausgezeichnete Funktion. Das ist, gibt mir über Änderungen und Arbeitsfortschritt bei der Montage, Methoden anzuzeigen, die hinzugefügt wurden, entfernt Methoden und vieles mehr.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top