67 Stimmen

C/C++ Quellcode Visualisierung?

Im Grunde möchte ich Tools, die eine Quellcode-Visualisierung generieren wie:

  • Funktionsaufrufdiagramm
  • Abhängigkeitsdiagramm
  • ...

57voto

Andrew Wilkinson Punkte 10354

Doxygen ist dafür wirklich ausgezeichnet, obwohl Sie GraphViz installieren müssen, um die Grafiken zu zeichnen.

Sobald Sie alles installiert haben, ist es wirklich ziemlich einfach, die Grafiken zu zeichnen. Stellen Sie sicher, dass Sie EXTRACT_ALL und CALL_GRAPH auf true setzen, und Sie sollten bereit sein.

Die vollständige Dokumentation zu dieser Funktion für Doxygen finden Sie hier.

13voto

Ich empfehle BOUML nachdrücklich. Es handelt sich um eine kostenlose UML-Modellierungsanwendung, die:

  • extrem schnell ist (schnellstes jemals erstelltes UML-Werkzeug, siehe Benchmarks),
  • über eine sehr stabile C++-Importunterstützung verfügt,
  • eine großartige SVG-Exportunterstützung hat, die wichtig ist, da das Anzeigen großer Graphen im Vektorformat, das schnell z.B. in Firefox skaliert, sehr praktisch ist (Sie können schnell zwischen der "Vogelperspektive" und der Detailansicht der Klasse wechseln),
  • vollständig ausgestattet ist, beeindruckend intensiv entwickelt wird (schauen Sie sich die Entwicklungsgeschichte an, es ist kaum zu glauben, dass so schneller Fortschritt möglich ist).

Also: Importieren Sie Ihren Code in BOUML und zeigen Sie ihn dort an, oder exportieren Sie ihn als SVG und zeigen Sie ihn in Firefox an.

Für die kostenlose Version:

5voto

AndreyBark Punkte 71

Sie können sich verschiedene Tools für Software-Design und Modellierung ansehen (Rational Rose, Sparx Enterprise Architect, Umbrello, etc). Die meisten von ihnen haben einige Funktionen für das Reverse Engineering von Quellcode, um UML-Klassendiagramme zu erhalten, und manchmal sogar Sequenzdiagramme (und das kommt dem Funktionsaufrufgraphen sehr nahe).

Aber wenn Sie einige Bilder auf einem wirklich großen Projekt-Codebasis haben, könnten Sie feststellen, dass solche Graphen ziemlich schwer zu lesen und zu verstehen sind. Leider sind die Visualisierungsmöglichkeiten von Komplexität sehr begrenzt.

Für mich ist der Einsatz des Idioms "teile und herrsche" ein bequemerer Ansatz. Sie können verschiedene Funktionsblöcke oder Schichten aus Ihrer Codebasis extrahieren (einfach Cpp-Dateien nach verschiedenen Ordnern sortieren reicht manchmal aus). Ein anderer Weg ist die Verwendung einiger Skripte (bash, Python), um einfache CSV-Tabellen mit interessanten Parametern von Dateien, Klassen oder Funktionen wie "Anzahl der Abhängigkeiten" usw. zu erstellen.

4voto

epatel Punkte 45365

Versuche doxygen

Beispiel-Ausgabe von Xerces

4voto

Esther Fan - MSFT Punkte 8061

Wenn Sie Visual Studio verwenden, können Sie mit der Ultimate-Version 2010 Sequenzdiagramme und Abhängigkeitsgraphen generieren. Derzeit unterstützt die Version jedoch nur .NET-Anwendungsprojekte.

Das Team hat großes Interesse bekundet, C++ in einer zukünftigen Version zu unterstützen, daher sollten Sie auf dem Laufenden bleiben. In der Zwischenzeit können Sie im Forum für architektonische Entdeckungs- und Modellierungstools von VS 2010 unter http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads eine Aktualisierung anfordern. Ich weiß, dass das Entwicklungsteam gerne Kundenfeedback zu den Tools erhält.

In der Zwischenzeit können Sie mehr über das Erstellen von Sequenzdiagrammen und Abhängigkeitsdiagrammen aus .NET-Code in den folgenden Themen erfahren:

So finden Sie Code mit dem Architektur-Explorer: http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx

So generieren Sie Graphendokumente aus Code: http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

So erkunden Sie Code mit Sequenzdiagrammen: http://msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx

Um die RC-Version auszuprobieren und Feedback zu geben, laden Sie sie unter http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X