Das OovAide-Projekt unter oder auf GitHub hat ein paar Funktionen, die helfen können. Es verwendet den CLang-Compiler zum Abrufen von genauen Informationen aus dem Quellcode. Es durchsucht die Verzeichnisse auf der Suche nach Quellcode und sammelt die Informationen in ein kleineres Dataset, das die für die Analyse erforderlichen Informationen enthält.
Ein Konzept heißt Zone Diagrams.Es zeigt Beziehungen zwischen Klassen bei ein sehr hohes Niveau seit jeder Klasse, wie ein Punkt auf dem Diagramm gezeigt, und Verbindungslinien werden gezeigt, die sie verbinden. Dies ermöglicht die Diagramme, um Hunderte oder Tausende von Klassen anzuzeigen. Die OovAide-Programmzonendiagrammanzeige hat einen Optionsaufruf "Show Child Zones", , der die Klassen gruppiert, die in Verzeichnissen näher beieinander liegen. Es gibt auch Verzeichnisfilter, mit denen die Anzahl der Klassen reduziert werden kann, die in einem Diagramm für sehr große Projekte angezeigt werden. Ein Beispiel für Zonenpläne und wie sie funktionieren wird hier gezeigt: http://oovaide.sourceforge.net/articles/ZoneDiagrams.html
Wenn die Verzeichnisse Komponententypen in den Buildeinstellungen zugewiesen sind, dann das Komponentendiagramm, das die Abhängigkeiten zwischen den Komponenten zeigen. Diese zeigt sogar, welche Komponenten von externen Komponenten wie GTK oder anderen externen Bibliotheken abhängig sind.
Die nächste Ebene nach unten zeigt etwas wie UML-Klassendiagramme, zeigt aber alle Relationen anstelle von nur Aggregation und Vererbung. Er kann Klassen anzeigen, die in Methoden verwendet werden, oder Klassen, die als Parameter an Methoden übergeben werden. Jede Klasse kann als Startpunkt ausgewählt werden, dann wird vor eine Klasse dem Diagramm hinzugefügt, und es wird eine Liste angezeigt, in der angezeigt werden kann, welche Klassen durch einen Beziehungstyp angezeigt werden.
Die unterste Ebene zeigt Sequenzdiagramme. Dies ermöglicht das Navigieren in der Aufrufstruktur nach oben oder nach unten, während die Klassen angezeigt werden, die die Methoden enthalten.
Wenn Sie Quellcode haben, was genau meinen Sie in erster Linie mit "Reverse Engineering"? – SingleNegationElimination
Sie erwarten, dass ein Disaspebler oder Decompiler Pakete erkennt, Benutzeroberflächenelemente aus Nicht-UI-Code abliest oder irgendetwas in der Nähe davon? – Falmarri