Abhängigkeitsdiagramm erstellen
-
Hallo an alle,
ich würde gerne in einem größeren C++ ein Abhängigkeitsdiagramm für Klassen und Pakete erstellen.
Anfangs dachte ich, ich könnte dies relativ leicht mit Python erstellen und nur nach #include parsen. Nun stellte sich aber in einem anderen Forum heraus, dass es ja auch die "bedingte Übersetzung" gibt und wir benutzen sie ziemlich oft.
Der Vorschlag war einen eigenen Präprozessor zu schreiben oder mit Hilfe des Compilers ein Diagramm zu erstellen (-M* bei gcc).
Nun habe ich ein paar Fragen: Gibt es nicht ein freies Tool, welches ein Abhängigkeitsdiagramm erstellen kann?
Wenn nein, auf was muss ich achten um eine eigenes zu erstellen?
Vielen Dank und Gruß
Markus
-
Ich weiß nicht, wie frei das ist, aber Doxygen kann auch die Zusammengehörigkeiten von Klassen und Headern auseinandernehmen.
Ansonsten: Ja, der Ansatz mit einem leicht reduzierten Präprozessor klingt schonmal nicht schlecht - du mußt hauptsächlich die #if's, #elif's und #endif's einander zuordnen können und die #if-Bedingungen auswerten. Und du mußt erkennen, wann welche Klasse/Modul ein anderes benutzt (bei Modulen ist das recht einfach, da du nur die #include's sammeln mußt, auf Klassenebene mußt du die Vererbungsbeziehungen und Klassenelemente erkennen und auswerten).
-
Doxygen ist GPL, und die Klassendiagramme sehen z.B. wie folgt aus:
http://vdr.computer-wiki.de/doxygen/vdrdoxy-1.3.21/classcMenuEditChannel.html
-
Vielleicht kann dier Boost.Wave oder OpenC++ weiterhelfen. Ansonsten gibt es ja bereits bestehende Tools, wie eben Doxygen.
-
Hallo Rü,
einerseits möchte ich nicht das Rad neu erfinden. Was ich an Doxygen noch nicht rausgefunden habe, ist wie ich ein komplettes großes Projekt anzeige. Wie der obere Link zeigt, wird nun die Abhängigkeit von einer Klasse wiedergegeben. Ob ich damit einen Zyklus finden werde, bezweifle ich.
Ansonsten muss ich sagen, dass beide Links auf dem ersten Blick sehr interessant sind und ich werde am Wochenende mich etwas genauer damit befassen.
Gruß
Markus