2009-04-27 2 views
27

Ich habe gerade einen Haufen von (meist undokumentiertem) C# -Code bekommen, und ich würde gerne seine Struktur visualisieren, bevor ich eintauche und mit dem Refactoring beginne. Ich habe dies in der Vergangenheit (in anderen Sprachen) mit Tools gemacht, die Call-Graphen generieren.C# Call-Graph-Generierungstool

Können Sie ein gutes Tool zur Erleichterung der Entdeckung der Struktur in C# empfehlen?

UPDATE

Zusätzlich zu den genannten Tools hier I (durch die Rohre) Menschen gesehen haben, sagen, dass .NET Reflector und CLR Profiler diese Funktionalität haben. Irgendwelche Erfahrungen mit diesen?

Antwort

16

NDepend ist ziemlich gut darin. Darüber hinaus verfügt Visual Studio 2008 Team System über eine Reihe von Funktionen, mit denen Sie die zyklomatische Komplexität im Auge behalten können, die jedoch wesentlich einfacher ist als NDepend. (Laufcodeanalyse)

+0

NDepend Feature-Set und Screenshots (von der Website) sehen interessant aus. Ich werde es überprüfen. –

2

Ich bin mir nicht sicher, ob es nur Quellcode tut, aber ANTS Profiler wird ein Anrufdiagramm für eine laufende Anwendung erzeugen (kann aber nützlicher sein).

3

Visual Studio 2010.

Plus auf ein Verfahren-by-Methode Basis - Reflektor (Analyzer (Strg + R), "abhängig von" und "Verwendet von")

+0

Oder Außenreflektor .. Rechtsklick .. Alle Refrescen finden, zur Definition gehen –

+0

muss ich mein Projekt in ein neues Visual Studio Format konvertieren? Wenn ja, wie schmerzlos ist dieser Prozess? –

+0

@ Waylon Flinn: wer weiß ... das Produkt ist noch nicht freigegeben, oder sogar in der Betaversion. Allerdings: Mit VS2005 bis VS2008 wurden Projektdateien automatisch hochgerüstet und waren (weitgehend) abwärtskompatibel; Lösungsdateien wurden automatisch aktualisiert, waren aber * nicht * abwärtskompatibel. –

2

SequenceViz und DependencyStructureMatrix für Reflector Sie helfen könnten: http://www.codeplex.com/reflectoraddins

+0

SequenceViz sieht interessant aus, aber ich kann es nicht mit der neuesten Version von .NET Reflector arbeiten –

+0

Endlich habe ich beide von ihnen zu arbeiten. SequenceViz sieht so aus, als würde es die vorhandenen Informationen nicht auf eine Weise darstellen, die auf Methodenebene nützlich ist. DependencyStructureMatrix war nützlich, gab jedoch nur Informationen auf Assemblierungs- und Klassenebene aus. Ich suche nach Dingen auf der Methodenebene. Vielen Dank für die Empfehlung, sie könnten für etwas anderes nützlich sein. –

5

Ich habe doxygen zu etwas Erfolg verwendet. Es ist ein wenig verwirrend, aber frei und es funktioniert.

+1

Die neueste Windows-Binärdatei von Doxygen enthält ein GUI-Tool, das als Doxywizard bekannt ist. Sie zeigen dies auf den Installationspfad von Graphviz, den Sie separat installieren, und beobachten Sie, wie er Ihre Diagramme erstellt. –

+0

Ich benutzte den Doxywizard. Der Teil, den ich verwirrend fand, ist, dass er die C# -Einstellungen nicht verwenden würde (obwohl er mit den Java-Einstellungen gut funktioniert). Es ist mehrere Monate her, seit ich versucht habe, es zu benutzen. –

8

NDepend betrifft, so kann es einige brauchbare Aufrufgraphen wie zum Beispiel (Bild in voller Größe here) produzieren

alt text

mehr Erklärungen finden über NDepend Aufrufgraphen here.

7

Es ist spät, aber http://sequenceviz.codeplex.com/ ist ein fantastisches Werkzeug, das das Anruferdiagramm/Sequenzdiagramm zeigt. Die Diagramme werden durch Reverse Engineering .NET Assemblies generiert.

0

Ab heute (Juni 2017) ist das beste Werkzeug der Klasse die Funktion der Nachschärfprüfung. Es ermöglicht Ihnen, alle eingehenden Anrufe, ausgehende Anrufe, Wert Herkunft/Ziel usw. zu finden.

Der beste Teil von ReSharper, im Vergleich zu anderen oben genannten Tools: Es ist weniger Buggy.