Vai al contenuto
cd /languages
  • Codice ad alta integrità
  • Programmazione
  • Supporto AST e simboli

Ada in Maguyva: specifiche, corpi e grafi dei package

Maguyva supporta Ada con AST, simboli e grafo, così gli agenti IA seguono specifiche, corpi, task e tipi tagged nei sistemi Ada di lunga durata.

Perché i repository Ada hanno bisogno di una mappa delle dipendenze

Ada separa ciò che un package promette (.ads) da come lo realizza (.adb). È buona ingegneria, e significa anche che una singola modifica tocca più file che una ricerca testuale non collegherà per te. I sistemi Ada di lunga durata aggiungono un altro livello: generici, tipi tagged, task e oggetti protetti, le cui relazioni contano più di qualsiasi singolo file.

Maguyva fornisce questa mappa delle dipendenze all’agente prima che proponga una modifica, che è esattamente l’ordine atteso da una revisione ad alta integrità.

Cosa estrae Maguyva in Ada

Maguyva copre .ads, .adb e .ada. I corpi dei sottoprogrammi e le specifiche di procedure e funzioni vengono estratti come simboli invocabili, così sia la specifica sia il corpo di una routine sono ricercabili. Il confronto dei simboli non distingue maiuscole e minuscole, come Ada stesso.

Gli import derivano dalle clausole with e use, con la parola chiave rimossa così che il grafo memorizzi il nome del package. Il grafo registra anche chiamate, ereditarietà e override sui tipi tagged, istanziazione, riferimenti di tipo, letture e scritture, e archi di sollevamento e gestione delle eccezioni.

Nella ricerca strutturale, tipi task, tipi protetti, tipi record e tipi interfaccia si possono selezionare come definizioni di tipo, e i corpi delle entry come metodi.

Esempi di prompt per agenti

  • “Quali unità dipendono da Flight_Control.Sensors e quali suoi sottoprogrammi chiamano?” (dependency_search incoming)
  • “Mostra specifica e corpo di Compute_Trajectory e tutti i chiamanti.” (find_symbol)
  • “Spiega come il task di telemetria passa i dati all’oggetto protetto di logging.” (get_task_context)

Limiti noti

  • Ada usa la stessa sintassi per alcune chiamate, l’accesso ai campi dei record e l’indicizzazione. Maguyva filtra tipi predefiniti, package della libreria standard, funzioni di attributo e operatori (circa 113 pattern) per mantenere pulito il grafo delle chiamate, quindi le chiamate alla libreria standard non sono archi del grafo. L’accesso ai campi dei record e l’indicizzazione si distinguono dalle chiamate in base alla loro posizione nella grammatica, non a un elenco di nomi di campo. Le chiamate comuni di I/O testuale come Put_Line, Put e Get vengono mantenute di proposito.
  • Le clausole use cambiano la visibilità ma non vengono selezionate come import nella ricerca strutturale; le clausole with sì.
  • I nodi dei tipi record e interfaccia possono essere frammenti anonimi, quindi le query strutturali basate sul nome possono non trovarli. Usa find_symbol per i tipi con nome.

Prossimi passi

Collega un repository con la guida rapida, poi consulta la matrice di supporto nella pagina di compatibilità. Se il tuo codice Ada si interfaccia con C, leggi anche la guida a C.

Il più adatto per

  • > Team che mantengono Ada di lunga data in aerospazio, difesa, ferrovie o altri ambiti ad alta integrità in cui ogni modifica viene revisionata.
  • > Basi di codice divise tra specifiche `.ads` e corpi `.adb`, dove interfaccia e implementazione stanno in file diversi.
  • > Ingegneri che usano agenti IA per l'analisi d'impatto e la preparazione delle revisioni, non per generare codice senza revisione.

Workflow degli agenti

  • > Trovare tutte le unità che fanno `with` di un package prima di modificarne la specifica.
  • > Tracciare quali sottoprogrammi chiamano una routine attraverso i confini dei package.
  • > Mappare tipi task, tipi protetti e gerarchie di tipi tagged prima di una modifica di concorrenza o di design.

Dettagli del motore

  • > Il supporto ad Ada copre specifiche `.ads`, corpi `.adb` e `.ada`. Corpi e specifiche dei sottoprogrammi sono entrambi simboli invocabili.
  • > Il confronto dei simboli non distingue maiuscole e minuscole, e le clausole `with` e `use` diventano relazioni di import dopo la rimozione della parola chiave.
  • > Circa 113 tipi predefiniti, package della libreria standard, funzioni di attributo e operatori vengono filtrati dalle chiamate; l'accesso ai campi dei record e l'indicizzazione si distinguono dalle chiamate in base alla loro posizione nella grammatica, e `Put_Line`, `Put` e `Get` vengono mantenuti di proposito.

Punti di ingresso MCP utili

  • find_symbol

    Usalo per trovare insieme specifica e corpo di un sottoprogramma, con i riferimenti.

  • dependency_search

    Usa la navigazione incoming su un package prima di modificarne la specifica per vedere tutte le unità che ne dipendono.

  • get_task_context

    Usalo per prompt come "spiega come il task di telemetria passa i dati all'oggetto protetto di logging".