C++ in Maguyva: Klassen- und Aufrufgraphen für große Codebasen
C++ versteckt das echte Aufrufziel hinter Namespaces, Überladungen und virtuellem Dispatch. Der Graph hilft einem Agenten, es zu finden.
Dateiendungen
.c, .c++, .cc, .cpp, +6 weitere
Maguyva unterstützt C mit AST, Symbolen und Graph, damit KI-Agenten Funktionen, Structs, Includes und Aufrufer in System-, Firmware- und Bibliothekscode verfolgen.
C hat keine Klassen oder Module, die den Code ordnen. Die Struktur steckt in Funktionsaufrufen, Headern und Structs, und derselbe Name kann in Kommentaren, Makros und String-Literalen auftauchen. Export- und Annotations-Makros umschließen Deklarationen, was Werkzeuge ins Stolpern bringt, die nur reines C parsen. Für einen Agenten ist der sichere erste Schritt der Aufrufgraph.
Maguyva baut diesen Graphen auf, damit ein Agent sehen kann, was eine Funktion erreicht und wovon sie erreicht wird, bevor er eine Änderung vorschlägt.
Maguyva deckt .c und .h ab. Funktionsdefinitionen werden als Symbole extrahiert, und Structs und Unions lassen sich in der Struktursuche als Typdefinitionen auswählen. #include-Direktiven werden zu Importbeziehungen.
Export- und Sichtbarkeitsmakros (Muster wie FOO_API, DLLEXPORT oder LIBEXPORT) und Thread-Safety-Annotationsmakros (etwa GUARDED_BY und REQUIRES) werden vor dem Parsen maskiert, sodass damit umschlossene Deklarationen weiterhin als Deklarationen geparst werden. Rümpfe funktionsartiger Makros werden geparst, Rümpfe objektartiger Makros nicht.
Der Graph erfasst Aufrufe, Includes, Instanziierung über Compound Literals, Typreferenzen, Lese- und Schreibzugriffe sowie Kontrollfluss. Etwa 124 Aufrufe der C-Standardbibliothek (printf, malloc, free, memcpy, strlen und ähnliche) werden aus den Beziehungen gefiltert, damit der Projektcode hervortritt.
uart_write auf, direkt oder über andere Funktionen?“ (dependency_search incoming)config.h ein, und welche seiner Structs verwenden sie?“ (dependency_search, dann find_symbol)get_task_context).h steht in den Listen der Dateiendungen von C, C++ und Objective-C, daher teilen sich diese Profile Header in gemischtsprachigen Bäumen.text_pattern_search, wenn du jedes malloc oder memcpy brauchst.Verbinde ein Repository über den Schnellstart und prüfe dann die Unterstützungsmatrix auf der Kompatibilitätsseite. Für C++-Code im selben Baum lies den C++-Leitfaden.
Am besten geeignet
Agentenabläufe
Engine-Einordnung
Nützliche MCP-Einstiegspunkte
Nutz es für einen Funktions- oder Struct-Namen, wenn du die Definition und jede Referenz brauchst.
Nutz die eingehende Traversierung auf einer gemeinsamen Funktion, bevor du ihre Signatur oder Fehlerbehandlung änderst.
Nutz es für Prompts wie „erkläre, wie ein Paket vom Empfangs-Interrupt zum Protokollparser gelangt“.
Verwandte Guides
C++ versteckt das echte Aufrufziel hinter Namespaces, Überladungen und virtuellem Dispatch. Der Graph hilft einem Agenten, es zu finden.
Dateiendungen
.c, .c++, .cc, .cpp, +6 weitere
Relevant, wenn du KI-Unterstützung in Rust willst, ohne die strukturellen Leitplanken zu verlieren, die Rust überhaupt lohnenswert machen.
Dateiendungen
.rs