Gibt es Tools zur Visualisierung von Vorlagen-/Klassenmethoden und deren Verwendung?

StackOverflow https://stackoverflow.com/questions/35745

  •  09-06-2019
  •  | 
  •  

Frage

Ich habe eine große Codebasis übernommen und möchte mir einen Überblick verschaffen, wie und wo bestimmte Klassen und deren Methoden zum Einsatz kommen.

Gibt es ein gutes Tool, das die Abhängigkeiten irgendwie visualisieren und einen schönen Aufrufbaum oder ähnliches zeichnen kann?

Der Code ist in C++ in Visual Studio, falls dies dabei hilft, die Auswahl einzugrenzen.

War es hilfreich?

Lösung

Hier sind einige Optionen:

Das letzte, doxygen, ist eher ein automatisches Dokumentationstool, kann aber Abhängigkeitsdiagramme und Vererbungsdiagramme erstellen.Im Gegensatz zu den ersten beiden, die nicht kostenlos sind, ist es auch unter der GPL lizenziert.

Andere Tipps

Als ich Doxygen verwendet habe, wurde eine vollständige Liste der Anrufer und Angerufenen erstellt.Ich glaube, man muss es einschalten.

David, danke für die Vorschläge.Ich habe das Wochenende damit verbracht, die Programme auszuprobieren.

Doxygen scheint das umfassendste der drei zu sein, lässt jedoch hinsichtlich der Aufrufer von Methoden noch einige Wünsche offen.

Alle drei scheinen in unterschiedlichem Ausmaß Probleme mit C++-Vorlagen zu haben.CC-Rider ist einfach mitten in der Analyse abgestürzt und CodeDrawer zeigt viele der Zusammenhänge nicht an.Doxygen hat ziemlich gut funktioniert, aber auch es hat nicht alle Beziehungen gefunden und angezeigt und mich stattdessen mit vielen Makroreferenzen überhäuft, bis ich sie herausgefiltert habe.

Vielleicht sollte ich „große Codebasis“ für eventuelle andere Vorschläge etwas klarstellen:Insgesamt mehr als 100.000 Codezeilen, verteilt auf mehr als 100 Vorlagendateien sowie mehrere tatsächliche Klassendateien, die alles zusammenfassen.

Gibt es noch andere Tools, die dieser Aufgabe gewachsen sein könnten und eine bessere (gründlichere) Leistung erbringen könnten?Ach und konkret:irgendetwas, das IDL- und COM-Schnittstellen versteht?

Als ich Doxygen verwendet habe, wurde eine vollständige Liste der Anrufer und Angerufenen erstellt.Ich glaube, man muss es einschalten.

Das habe ich natürlich getan, aber wie ich bereits erwähnt habe, berücksichtigt Doxygen keine Schnittstellen zwischen Objekten, wie sie in der IDL definiert sind.Es werden „nur“ direkte C++-Aufrufe angezeigt.

Verstehen Sie mich nicht falsch, es ist schon erstaunlich, was es leistet, aber aus meiner allgemeinen Sicht ist es immer noch nicht vollständig, wenn ich versuche, ein gutes Verständnis dafür zu bekommen, wie alles zusammenpasst.

In Java würde ich mit JDepend beginnen.In .NET mit NDepend.Ich kenne mich mit C++ nicht aus.

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