Přeskočit na obsah
cd /languages
  • Systémové jádro
  • Programování
  • Podpora AST a symbolů

C v Maguyva: grafy volání pro systémový a vestavěný kód

Maguyva podporuje C s AST, symboly a grafem, takže AI agenti sledují funkce, struktury, include a volající v systémovém kódu, firmwaru a knihovnách.

Proč C potřebuje graf volání, ne grep

C nemá třídy ani moduly, které by kód uspořádaly. Struktura žije ve voláních funkcí, hlavičkách a strukturách a stejný název se může objevit v komentářích, makrech i řetězcových literálech. Exportní a anotační makra obalují deklarace, na čemž klopýtají nástroje, které umí parsovat jen čisté C. Pro agenta je bezpečným prvním krokem graf volání.

Maguyva tento graf sestaví, aby agent viděl, kam funkce dosáhne a co dosáhne jí, ještě než navrhne změnu.

Co Maguyva v C extrahuje

Maguyva pokrývá .c a .h. Definice funkcí se extrahují jako symboly a struktury a uniony lze ve strukturním vyhledávání vybrat jako definice typů. Direktivy #include se stávají vazbami importu.

Exportní makra a makra viditelnosti (vzory jako FOO_API, DLLEXPORT nebo LIBEXPORT) a anotační makra pro vláknovou bezpečnost (jako GUARDED_BY a REQUIRES) se před parsováním maskují, takže jimi obalené deklarace se dál rozpoznají jako deklarace. Těla makrofunkcí se parsují, těla objektových maker ne.

Graf zaznamenává volání, include, vytváření instancí pomocí složených literálů, odkazy na typy, čtení a zápisy a tok řízení. Přibližně 124 volání standardní knihovny C (printf, malloc, free, memcpy, strlen a podobné) se z vazeb odfiltruje, aby vynikl kód projektu.

Ukázkové prompty pro agenty

  • „Kdo volá uart_write, přímo nebo přes jiné funkce?“ (dependency_search incoming)
  • „Které soubory vkládají config.h a které jeho struktury používají?“ (dependency_search, pak find_symbol)
  • „Vysvětli, jak paket putuje od přerušení příjmu k parseru protokolu.“ (get_task_context)

Známá omezení

  • C nemá třídy ani výjimky, proto jsou vazby dědičnosti, implementace rozhraní, přepisu, vyhození a zachycení označeny jako nepoužitelné.
  • .h je v seznamech přípon C, C++ i Objective-C, takže hlavičky ve vícejazyčných stromech tyto profily sdílejí.
  • Volání odfiltrovaných funkcí standardní knihovny nejsou hranami grafu. Když potřebujete každé malloc nebo memcpy, použijte text_pattern_search.

Další kroky

Připojte repozitář podle rychlého startu a pak si prohlédněte matici podpory na stránce kompatibility. Pro kód v C++ ve stejném stromu si přečtěte průvodce jazykem C++.

Nejlépe se hodí pro

  • > Týmy firmwaru, vestavěných systémů a operačních systémů, kde malá změna sdílené funkce může dosáhnout až k hardwarovým cestám.
  • > Dlouhodobé knihovny v C s veřejnými hlavičkami, exportními makry a mnoha interními překladovými jednotkami.
  • > Revize s podporou agentů, kde zní otázka: „kdo to volá a přes které hlavičky?“

Workflow agentů

  • > Najít všechny volající funkce, než se změní její signatura nebo zpracování chyb.
  • > Zmapovat, které soubory vkládají hlavičku a které struktury používají.
  • > Sledovat požadavek od obsluhy přerušení nebo vstupního bodu přes funkce, kterých dosáhne.

Podrobnosti enginu

  • > Podpora C pokrývá `.c` a `.h`. Definice funkcí jsou symboly, struktury a uniony jsou definice typů a `#include` se stává vazbou importu.
  • > Exportní makra, makra viditelnosti a anotační makra vláknové bezpečnosti se před parsováním maskují, takže obalené deklarace se parsují. Těla makrofunkcí se parsují, objektových maker ne.
  • > Přibližně 124 volání standardní knihovny, jako `printf`, `malloc` a `memcpy`, se odfiltruje. Vazby dědičnosti, přepisu a výjimek jsou označeny jako nepoužitelné.

Užitečné vstupní body MCP

  • find_symbol

    Použijte s názvem funkce nebo struktury, když potřebujete definici a každý odkaz.

  • dependency_search

    Použijte procházení incoming na sdílené funkci, než změníte její signaturu nebo zpracování chyb.

  • get_task_context

    Použijte pro prompty typu „vysvětli, jak paket putuje od přerušení příjmu k parseru protokolu“.