# Ada-tuki Maguyva-palvelussa: spesifikaatiot, rungot ja pakettigraafit

Canonical source: https://maguyva.ai/fi/languages/ada

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva tukee Adaa AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata pitkäikäisten Ada-järjestelmien pakettispesifikaatioita, runkoja, taskeja ja tagattuja tyyppejä.

## Tukikatsaus

- Taso: AST- ja symbolituki
- Ohjelmointi
- Päätteet: .ada, .adb, .ads
- Oikea AST-jäsennys syntaksitietoiseen hakuun ja rakenteelliseen kontekstiin.
- Nimetyt symbolit syöttävät semanttista hakua ja ristiviittauksia. Graafinavigointi on käytettävissä, kun suhteiden poiminta on käytössä.
- Tämä kieli tuo symboleja ja suhteita graafia hyödyntävään hakuun; tuetut reunatyypit vaihtelevat kielen omien rakenteiden mukaan.
- Sekä AST-jäsennys että symbolien poiminta ovat käytettävissä.

## Parhaiten sopii

- Tiimit, jotka ylläpitävät pitkäikäistä Ada-koodia ilmailussa, puolustuksessa, rautateillä tai muilla korkean eheyden aloilla, joilla jokainen muutos katselmoidaan.
- Koodikannat, jotka on jaettu `.ads`-spesifikaatioihin ja `.adb`-runkoihin niin, että rajapinta ja toteutus ovat eri tiedostoissa.
- Insinöörit, jotka käyttävät tekoälyagentteja vaikutusanalyysiin ja katselmointien valmisteluun eivätkä katselmoimattomaan koodin generointiin.

## Agenttien työnkulut

- Löytää kaikki yksiköt, jotka ottavat paketin käyttöön `with`-lauseella, ennen kuin sen spesifikaatiota muutetaan.
- Jäljittää pakettirajojen yli, mitkä aliohjelmat kutsuvat rutiinia.
- Kartoittaa task-tyypit, suojatut tyypit ja tagattujen tyyppien hierarkiat ennen rinnakkaisuuteen tai suunnitteluun liittyvää muutosta.

## Miksi Ada-repositoriot tarvitsevat riippuvuuskartan

Ada erottaa sen, mitä paketti lupaa (`.ads`), siitä, miten se sen toteuttaa (`.adb`). Se on hyvää insinöörityötä, ja se tarkoittaa myös, että yksi muutos koskee useita tiedostoja, joita tekstihaku ei yhdistä puolestasi. Pitkäikäiset Ada-järjestelmät lisäävät vielä yhden kerroksen: geneeriset yksiköt, tagatut tyypit, taskit ja suojatut oliot, joiden suhteet merkitsevät enemmän kuin mikään yksittäinen tiedosto.

Maguyva antaa agentille tämän riippuvuuskartan ennen kuin se ehdottaa muutosta, mikä on juuri se järjestys, jota korkean eheyden katselmointi odottaa.

## Mitä Maguyva poimii Adasta

Maguyva kattaa tiedostot `.ads`, `.adb` ja `.ada`. Aliohjelmien rungot sekä proseduurien ja funktioiden spesifikaatiot poimitaan kutsuttavina symboleina, joten rutiinin spesifikaatiota ja runkoa voi hakea molempia. Symbolien vertailu ei erottele isoja ja pieniä kirjaimia, kuten ei Adakaan.

Tuonnit muodostetaan `with`- ja `use`-lausekkeista; avainsana poistetaan, jolloin graafiin tallentuu paketin nimi. Graafi tallentaa myös kutsut, tagattujen tyyppien periytymisen ja ylikirjoitukset, ilmentymien luonnin, tyyppiviittaukset, luvut ja kirjoitukset sekä poikkeusten nostamisen ja käsittelyn kaaret.

Rakenteellisessa haussa task-tyypit, suojatut tyypit, tietuetyypit ja rajapintatyypit voi valita tyyppimäärittelyinä ja entry-rungot metodeina.

## Esimerkkikehotteita agenteille

- "Mitkä yksiköt riippuvat paketista `Flight_Control.Sensors`, ja mitä sen aliohjelmia ne kutsuvat?" (`dependency_search` incoming)
- "Näytä rutiinin `Compute_Trajectory` spesifikaatio, runko ja kaikki kutsujat." (`find_symbol`)
- "Selitä, miten telemetriatask välittää tiedot lokituksen suojatulle oliolle." (`get_task_context`)

## Tunnetut rajoitukset

- Adassa osa kutsuista, tietueen kenttiin viittaamisesta ja indeksoinnista käyttää samaa syntaksia. Maguyva suodattaa sisäänrakennetut tyypit, standardikirjaston paketit, attribuuttifunktiot ja operaattorit (noin 113 mallia), jotta kutsugraafi pysyy siistinä, joten standardikirjaston kutsuista ei tule graafin kaaria. Tietueen kenttiin viittaaminen ja indeksointi erotetaan kutsuista niiden kieliopillisen sijainnin perusteella, ei kenttien nimien luettelon perusteella. Tavalliset tekstimuotoisen I/O:n kutsut, kuten `Put_Line`, `Put` ja `Get`, säilytetään tarkoituksella.
- `use`-lausekkeet muuttavat näkyvyyttä, mutta niitä ei valita tuonneiksi rakenteellisessa haussa; `with`-lausekkeet valitaan.
- Tietue- ja rajapintatyyppien solmut voivat olla nimettömiä katkelmia, joten nimeen perustuvat rakennekyselyt voivat ohittaa ne. Käytä nimetyille tyypeille työkalua `find_symbol`.

## Seuraavat vaiheet

Yhdistä repositorio [pikaoppaan](/fi/docs/quickstart) avulla ja tarkista sitten tukimatriisi [yhteensopivuussivulta](/fi/docs/compatibility). Jos Ada-koodisi sitoutuu C-koodiin, lue myös [C-opas](/fi/languages/c).

## Moottorin yksityiskohdat

- Ada-tuki kattaa `.ads`-spesifikaatiot, `.adb`-rungot ja tiedostot `.ada`. Aliohjelmien rungot ja spesifikaatiot ovat molemmat kutsuttavia symboleja.
- Symbolien vertailu ei erottele isoja ja pieniä kirjaimia, ja `with`- ja `use`-lausekkeista tulee tuontisuhteita, kun avainsana on poistettu.
- Noin 113 sisäänrakennettua tyyppiä, standardikirjaston pakettia, attribuuttifunktiota ja operaattoria suodatetaan pois kutsuista; tietueen kenttiin viittaaminen ja indeksointi erotetaan kutsuista niiden kieliopillisen sijainnin perusteella, ja `Put_Line`, `Put` ja `Get` säilytetään tarkoituksella.

## Hyödylliset MCP-liittymäkohdat

- `find_symbol`: Käytä sitä löytääksesi aliohjelman spesifikaation ja rungon yhdessä viittauksineen.
- `dependency_search`: Käytä incoming-läpikäyntiä pakettiin ennen sen spesifikaation muuttamista nähdäksesi kaikki siitä riippuvat yksiköt.
- `get_task_context`: Käytä sitä kehotteisiin kuten "selitä, miten telemetriatask välittää tiedot lokituksen suojatulle oliolle".
