Spring til indhold
cd /languages
  • Kode med høj integritet
  • Programmering
  • AST- og symbolunderstøttelse

Ada i Maguyva: specifikationer, kroppe og pakkegrafer

Maguyva understøtter Ada med AST, symboler og graf, så AI-agenter kan følge pakkespecifikationer, kroppe, tasks og taggede typer i langlivede Ada-systemer.

Hvorfor Ada-repositories har brug for et afhængighedskort

Ada adskiller det, en pakke lover (.ads), fra hvordan den gør det (.adb). Det er god ingeniørkunst, og det betyder også, at én ændring berører flere filer, som en tekstsøgning ikke forbinder for dig. Langlivede Ada-systemer tilføjer endnu et lag: generics, taggede typer, tasks og beskyttede objekter, hvis relationer betyder mere end nogen enkelt fil.

Maguyva giver agenten det afhængighedskort, før den foreslår en ændring, hvilket er præcis den rækkefølge, et review med høj integritet forventer.

Hvad Maguyva udtrækker i Ada

Maguyva dækker .ads, .adb og .ada. Underprogramkroppe samt procedure- og funktionsspecifikationer udtrækkes som kaldbare symboler, så både specifikationen og kroppen for en rutine er søgbare. Symbolmatchningen skelner ikke mellem store og små bogstaver, ligesom Ada selv.

Importer kommer fra with- og use-klausuler; nøgleordet fjernes, så grafen gemmer pakkenavnet. Grafen registrerer også kald, nedarvning og overskrivninger på taggede typer, instansiering, typereferencer, læsninger og skrivninger samt kanter for at kaste og håndtere undtagelser.

I strukturel søgning kan task-typer, beskyttede typer, posttyper og interfacetyper vælges som typedefinitioner og entry-kroppe som metoder.

Eksempler på prompts til agenter

  • “Hvilke enheder afhænger af Flight_Control.Sensors, og hvilke af dens underprogrammer kalder de?” (dependency_search incoming)
  • “Vis specifikationen og kroppen for Compute_Trajectory og alle, der kalder den.” (find_symbol)
  • “Forklar, hvordan telemetri-tasken afleverer data til det beskyttede logningsobjekt.” (get_task_context)

Kendte begrænsninger

  • Ada bruger samme syntaks til visse kald, adgang til postfelter og indeksering. Maguyva filtrerer indbyggede typer, pakker i standardbiblioteket, attributfunktioner og operatorer (omkring 113 mønstre) for at holde kaldgrafen ren, så kald til standardbiblioteket bliver ikke kanter i grafen. Adgang til postfelter og indeksering skelnes fra kald ud fra deres placering i grammatikken, ikke ud fra en liste over feltnavne. Almindelige tekst-I/O-kald som Put_Line, Put og Get bevares med vilje.
  • use-klausuler ændrer synligheden, men vælges ikke som importer i strukturel søgning; det gør with-klausuler.
  • Noder for post- og interfacetyper kan være anonyme fragmenter, så navnebaserede strukturelle forespørgsler kan overse dem. Brug find_symbol til navngivne typer.

Næste skridt

Tilslut et repository med hurtigstarten, og se derefter understøttelsesmatricen på kompatibilitetssiden. Hvis din Ada-kode binder til C, så læs også guiden til C.

Bedst egnet til

  • > Teams, der vedligeholder langlivet Ada inden for luft- og rumfart, forsvar, jernbane eller andre områder med høj integritet, hvor hver ændring gennemgås.
  • > Kodebaser, der er delt op i `.ads`-specifikationer og `.adb`-kroppe, hvor interface og implementering ligger i forskellige filer.
  • > Ingeniører, der bruger AI-agenter til konsekvensanalyse og forberedelse af reviews, ikke til ugennemset kodegenerering.

Agent-arbejdsgange

  • > Finde alle enheder, der laver `with` på en pakke, før dens specifikation ændres.
  • > Spore på tværs af pakkegrænser, hvilke underprogrammer der kalder en rutine.
  • > Kortlægge task-typer, beskyttede typer og hierarkier af taggede typer før en ændring af samtidighed eller design.

Motordetaljer

  • > Ada-understøttelsen dækker `.ads`-specifikationer, `.adb`-kroppe og `.ada`. Underprogramkroppe og -specifikationer er begge kaldbare symboler.
  • > Symbolmatchningen skelner ikke mellem store og små bogstaver, og `with`- og `use`-klausuler bliver til importrelationer, når nøgleordet er fjernet.
  • > Omkring 113 indbyggede typer, pakker i standardbiblioteket, attributfunktioner og operatorer filtreres fra kaldene; adgang til postfelter og indeksering skelnes fra kald ud fra deres placering i grammatikken, og `Put_Line`, `Put` og `Get` bevares med vilje.

Nyttige MCP-indgange

  • find_symbol

    Brug det til at finde specifikationen og kroppen for et underprogram samlet, med referencer.

  • dependency_search

    Brug incoming-gennemløb på en pakke, før dens specifikation ændres, for at se alle afhængige enheder.

  • get_task_context

    Brug det til prompts som "forklar, hvordan telemetri-tasken afleverer data til det beskyttede logningsobjekt".