Přeskočit na obsah
cd /languages
  • Kód s vysokou integritou
  • Programování
  • Podpora AST a symbolů

Ada v Maguyva: specifikace, těla a grafy balíčků

Maguyva podporuje Adu s AST, symboly a grafem, takže AI agenti sledují specifikace balíčků, těla, úlohy a tagované typy v dlouhodobých systémech v Adě.

Proč repozitáře v Adě potřebují mapu závislostí

Ada odděluje to, co balíček slibuje (.ads), od toho, jak to plní (.adb). Je to dobré inženýrství a zároveň to znamená, že jedna změna zasáhne několik souborů, které za vás textové vyhledávání nepropojí. Dlouhodobé systémy v Adě přidávají další vrstvu: generika, tagované typy, úlohy a chráněné objekty, jejichž vazby jsou důležitější než jakýkoli jednotlivý soubor.

Maguyva dá agentovi tuto mapu závislostí dřív, než navrhne úpravu, tedy přesně v pořadí, které revize s vysokou integritou očekává.

Co Maguyva v Adě extrahuje

Maguyva pokrývá .ads, .adb a .ada. Těla podprogramů i specifikace procedur a funkcí se extrahují jako volatelné symboly, takže lze vyhledat specifikaci i tělo rutiny. Porovnávání symbolů nerozlišuje velikost písmen, stejně jako samotná Ada.

Importy vznikají z klauzulí with a use; klíčové slovo se odstraní, takže graf uchovává název balíčku. Graf zaznamenává také volání, dědičnost a přepisy u tagovaných typů, vytváření instancí, odkazy na typy, čtení a zápisy a hrany vyvolání a ošetření výjimek.

Ve strukturním vyhledávání lze typy úloh, chráněné typy, typy záznamů a typy rozhraní vybrat jako definice typů a těla vstupů jako metody.

Ukázkové prompty pro agenty

  • „Které jednotky závisejí na Flight_Control.Sensors a které jeho podprogramy volají?“ (dependency_search incoming)
  • „Ukaž specifikaci a tělo Compute_Trajectory a všechny volající.“ (find_symbol)
  • „Vysvětli, jak úloha telemetrie předává data chráněnému objektu pro logování.“ (get_task_context)

Známá omezení

  • Ada používá stejnou syntaxi pro některá volání, přístup k položkám záznamů a indexování. Maguyva filtruje vestavěné typy, balíčky standardní knihovny, atributové funkce a operátory (přibližně 113 vzorů), aby graf volání zůstal čistý, takže volání standardní knihovny nejsou hranami grafu. Přístup k položkám záznamů a indexování se od volání rozlišují podle své pozice v gramatice, nikoli podle seznamu názvů položek. Běžná volání textového vstupu a výstupu jako Put_Line, Put a Get se záměrně zachovávají.
  • Klauzule use mění viditelnost, ale ve strukturním vyhledávání se jako importy nevybírají; klauzule with ano.
  • Uzly typů záznamů a rozhraní mohou být anonymní fragmenty, takže je strukturní dotazy podle názvu mohou minout. Pro pojmenované typy použijte find_symbol.

Další kroky

Připojte repozitář podle rychlého startu a pak si prohlédněte matici podpory na stránce kompatibility. Pokud se váš kód v Adě propojuje s C, přečtěte si i průvodce jazykem C.

Nejlépe se hodí pro

  • > Týmy, které udržují dlouholetý kód v Adě v letectví, obraně, železniční dopravě a dalších oborech s vysokou integritou, kde prochází revizí každá změna.
  • > Kódové základny rozdělené na specifikace `.ads` a těla `.adb`, kde rozhraní a implementace leží v různých souborech.
  • > Inženýři, kteří AI agenty používají pro analýzu dopadu a přípravu revizí, ne pro generování kódu bez kontroly.

Workflow agentů

  • > Najít všechny jednotky, které balíček načítají přes `with`, než se změní jeho specifikace.
  • > Přes hranice balíčků dohledat, které podprogramy volají danou rutinu.
  • > Zmapovat typy úloh, chráněné typy a hierarchie tagovaných typů před změnou souběžnosti nebo návrhu.

Podrobnosti enginu

  • > Podpora Ady pokrývá specifikace `.ads`, těla `.adb` a `.ada`. Těla i specifikace podprogramů jsou volatelné symboly.
  • > Porovnávání symbolů nerozlišuje velikost písmen a klauzule `with` a `use` se po odstranění klíčového slova stávají vazbami importu.
  • > Přibližně 113 vestavěných typů, balíčků standardní knihovny, atributových funkcí a operátorů se z volání odfiltruje; přístup k položkám záznamů a indexování se od volání rozlišují podle své pozice v gramatice a `Put_Line`, `Put` a `Get` se záměrně zachovávají.

Užitečné vstupní body MCP

  • find_symbol

    Použijte k nalezení specifikace a těla podprogramu najednou, včetně odkazů.

  • dependency_search

    Před změnou specifikace balíčku použijte procházení incoming a uvidíte všechny závislé jednotky.

  • get_task_context

    Použijte pro prompty typu „vysvětli, jak úloha telemetrie předává data chráněnému objektu pro logování“.