Hopp til innhold
cd /languages
  • Kode med høy integritet
  • Programmering
  • AST- og symbolstøtte

Ada i Maguyva: spesifikasjoner, kropper og pakkegrafer

Maguyva støtter Ada med AST, symboler og graf, slik at AI-agenter kan følge pakkespesifikasjoner, kropper, tasker og taggede typer i langlivede Ada-systemer.

Hvorfor Ada-repositorier trenger et avhengighetskart

Ada skiller det en pakke lover (.ads), fra hvordan den gjør det (.adb). Det er godt ingeniørarbeid, og det betyr også at én endring berører flere filer som et tekstsøk ikke kobler sammen for deg. Langlivede Ada-systemer legger til enda et lag: generics, taggede typer, tasker og beskyttede objekter, der relasjonene betyr mer enn noen enkeltfil.

Maguyva gir agenten dette avhengighetskartet før den foreslår en endring, som er nøyaktig den rekkefølgen en gjennomgang med høy integritet forventer.

Hva Maguyva henter ut i Ada

Maguyva dekker .ads, .adb og .ada. Underprogramkropper samt prosedyre- og funksjonsspesifikasjoner hentes ut som kallbare symboler, så både spesifikasjonen og kroppen til en rutine er søkbare. Symbolmatchingen skiller ikke mellom store og små bokstaver, akkurat som Ada selv.

Importer kommer fra with- og use-klausuler; nøkkelordet fjernes slik at grafen lagrer pakkenavnet. Grafen registrerer også kall, arv og overstyringer på taggede typer, instansiering, typereferanser, lesinger og skrivinger samt kanter for å kaste og håndtere unntak.

I strukturelt søk kan tasktyper, beskyttede typer, posttyper og grensesnittyper velges som typedefinisjoner, og entry-kropper som metoder.

Eksempler på prompter for agenter

  • «Hvilke enheter er avhengige av Flight_Control.Sensors, og hvilke av underprogrammene kaller de?» (dependency_search incoming)
  • «Vis spesifikasjonen og kroppen til Compute_Trajectory og alle som kaller den.» (find_symbol)
  • «Forklar hvordan telemetritasken leverer data til det beskyttede loggobjektet.» (get_task_context)

Kjente begrensninger

  • Ada bruker samme syntaks for enkelte kall, tilgang til postfelt og indeksering. Maguyva filtrerer innebygde typer, pakker i standardbiblioteket, attributtfunksjoner og operatorer (rundt 113 mønstre) for å holde kallgrafen ren, så kall til standardbiblioteket blir ikke kanter i grafen. Tilgang til postfelt og indeksering skilles fra kall ut fra plasseringen i grammatikken, ikke ut fra en liste med feltnavn. Vanlige tekst-I/O-kall som Put_Line, Put og Get beholdes med vilje.
  • use-klausuler endrer synligheten, men velges ikke som importer i strukturelt søk; det gjør with-klausuler.
  • Noder for post- og grensesnittyper kan være anonyme fragmenter, så navnebaserte strukturelle spørringer kan gå glipp av dem. Bruk find_symbol for navngitte typer.

Neste steg

Koble til et repositorium med hurtigstarten, og se deretter støttematrisen på kompatibilitetssiden. Hvis Ada-koden din binder seg til C, bør du også lese veiledningen for C.

Best egnet

  • > Team som vedlikeholder langlivet Ada innen luft- og romfart, forsvar, jernbane eller andre felt med høy integritet, der hver endring gjennomgås.
  • > Kodebaser som er delt i `.ads`-spesifikasjoner og `.adb`-kropper, der grensesnitt og implementasjon ligger i ulike filer.
  • > Ingeniører som bruker AI-agenter til konsekvensanalyse og forberedelse av gjennomganger, ikke til ugjennomgått kodegenerering.

Agent-arbeidsflyter

  • > Finne alle enheter som gjør `with` på en pakke før spesifikasjonen endres.
  • > Spore på tvers av pakkegrenser hvilke underprogrammer som kaller en rutine.
  • > Kartlegge tasktyper, beskyttede typer og hierarkier av taggede typer før en endring i samtidighet eller design.

Motordetaljer

  • > Ada-støtten dekker `.ads`-spesifikasjoner, `.adb`-kropper og `.ada`. Underprogramkropper og -spesifikasjoner er begge kallbare symboler.
  • > Symbolmatchingen skiller ikke mellom store og små bokstaver, og `with`- og `use`-klausuler blir importrelasjoner når nøkkelordet er fjernet.
  • > Rundt 113 innebygde typer, pakker i standardbiblioteket, attributtfunksjoner og operatorer filtreres ut av kallene; tilgang til postfelt og indeksering skilles fra kall ut fra plasseringen i grammatikken, og `Put_Line`, `Put` og `Get` beholdes med vilje.

Nyttige MCP-inngangspunkter

  • find_symbol

    Bruk det for å finne spesifikasjonen og kroppen til et underprogram samlet, med referanser.

  • dependency_search

    Bruk incoming-traversering på en pakke før spesifikasjonen endres for å se alle avhengige enheter.

  • get_task_context

    Bruk det til prompter som «forklar hvordan telemetritasken leverer data til det beskyttede loggobjektet».