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 BROWSE
generiert. 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.
Member
buffer: 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.
Source
Puffer: 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 .h
Dateien enthalten sind, fügen Sie keine hinzu, da das .cpp
Generieren der BROWSE
Datei sonst sehr lange dauern würde . Sie verlieren jedoch die Möglichkeit, zur Definition zu wechseln. Dies kann jedoch mit ctags
oder 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 doxygen
so 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 .