Ich schreibe einen Leitfaden für Ebrowse und werde ihn in dieser Woche veröffentlichen. Ebrowse ist ein schneller Parser, mit dem C ++ - Quelldateien verarbeitet werden, um eine Datenbank zu erstellen, die die Klassenhierarchie enthält, die später von Emacs verarbeitet wird, um eine Klassenbaumdarstellung zu erstellen. Es ähnelt etwas GNU Global, ist jedoch in Emacs integriert und erzeugt einen Klassenbaum, sodass die Verarbeitung in einem großen Quellbaum länger dauert.
So verwenden Sie Ebrowse:
find . -name '*.cpp' -or -name '*.h' | ebrowse
Fügen Sie weitere Erweiterungen hinzu, wenn Sie möchten. Wenn Ihr Projekt nur Hunderte von Dateien enthält, funktioniert = Ebrowse = sehr gut. Nach dem Ausführen des Befehls wird eine Datei mit dem Namen BROWSEgeneriert. Dies ist die Datenbank, die die Klassenhierarchie enthält. Öffnen Sie einfach diese Datei und Emacs erkennt die Datei automatisch und verarbeitet sie. Nach Abschluss der Verarbeitung der Datenbank zeigt Emacs einen Index aller Klassen in der Datenbank in einem Baumformat an: Wenn eine Klasse von einer Klasse abgeleitet ist, ist sie in der übergeordneten Klasse verschachtelt. Dieser Puffer heißt a Tree buffer. Emacs bietet drei Möglichkeiten zur Interaktion Ebrowse:
Tree buffer: Ein Puffer, der den Baum anzeigt.
Memberbuffer: Ein Puffer, der Mitglieder jeder Klasse anzeigt. Sie können zwischen Deklarationen und Definitionen einer Klasse wechseln und zum jeweiligen Speicherort in der entsprechenden Quelldatei springen.
SourcePuffer: Ihr Code-Puffer. Sie können mit Ebrowse
Datenbanken wie dem Suchen und Anzeigen (offen für schreibgeschützte) Deklarationen und Definitionen interagieren und einen = Member = Puffer einer Klasse öffnen, die das Tag an Punkt enthält ...
Wenn Sie ein großes Projekt haben (dh mehr als 10000 cpp-Dateien), aber alle Klassen in .hDateien enthalten sind, fügen Sie keine hinzu, da das .cppGenerieren der BROWSEDatei sonst sehr lange dauern würde . Sie verlieren jedoch die Möglichkeit, zur Definition zu wechseln. Dies kann jedoch mit ctagsoder erfolgen GNU Global. Das Wichtigste ist, die Klassenhierarchie in anzuzeigen Tree buffer, und dies ist der Vorteil von Ebrowse.
Der WIP-Leitfaden ist hier .
Update : Alternativ können Sie doxygen verwenden , um alle Arten von Diagrammen zu generieren (Anrufer- / Angerufendiagramme, Abhängigkeitsdiagramme, Klassenhierarchiediagramme ...), aber es dauert auch lange, alle zu generieren, selbst für kleine Quellbäume wie ipxe . Dies ist nicht doxygenso langsam, tatsächlich ist es ziemlich optimiert, aber die Berechnung der Abhängigkeit für die gesamte Codebasis ist keine triviale Aufgabe.
Bonus : Wenn Sie mit C arbeiten und ein Anrufdiagramm anzeigen möchten, verwenden Sie GNU Cflow. Siehe meine Reddit-Antwort .