Siirry sisältöön
cd /languages
  • Moderni JVM
  • Ohjelmointi
  • AST- ja symbolituki

Kotlin-tuki Maguyva-palvelussa: koodigraafit Androidille ja JVM:lle

Maguyva tukee Kotlinia AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata luokkia, laajennusfunktioita ja korutiineja Android- ja JVM-koodissa.

Missä Kotlin kampittaa pinnallisia tekoälytyökaluja

Kotlin on tiivis, koska se kätkee kytkennät. apply, let, also, run ja with muuttavat sitä, mitä this ja it tarkoittavat. Laajennusfunktiot lisäävät toimintaa muualla määritellyille tyypeille. Korutiinit siirtävät työtä kutsujen launch, async ja withContext välillä. Tiedoston kerrallaan lukeva agentti näkee kutsut mutta ei niiden takana olevia vastaanottajia.

Maguyva ratkaisee suuremman osan tästä rakenteesta jo indeksoinnissa, joten agentti voi kysyä, kuka funktiota kutsuu, ja saada todellisen vastauksen.

Mitä Maguyva poimii Kotlinista

Maguyva kattaa tiedostot .kt ja .kts. Funktiot, luokat, oliot ja kumppanioliot poimitaan, ja funktioiden allekirjoituksiin tallentuvat laajennusvastaanottajat, parametrien nimet, oletusarvot ja vararg-parametrit.

Kutsusuhteet säilyttävät luokalla tarkennetut nimet, joten OrderRepository.save erottuu muista save-funktioista. Vastaanottajan tyypitys seuraa this-viittausta funktioiden apply ja run sisällä, it-viittausta funktioiden let ja also sisällä sekä funktion with argumenttia, jotta näkyvyysalueen funktioiden kutsut ratkeavat oikeaan tyyppiin. Korutiinien rakentajat ja Flow-operaattorit (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) säilytetään graafissa tarkoituksella.

Graafi tallentaa myös periytymisen, rajapintojen toteutukset, ylikirjoitukset, ilmentymien luonnin, annotaatiot, tyyppiviittaukset, luvut ja kirjoitukset sekä poikkeusten heittämisen ja kiinniottamisen kaaret.

Esimerkkikehotteita agenteille

  • “Kuka kutsuu funktiota CheckoutUseCase.invoke, ja mistä ViewModeleista?” (find_symbol, sitten dependency_search incoming)
  • “Jäljitä synkronointivuo luokasta SyncWorker verkkoasiakkaaseen.” (get_task_context)
  • “Mitkä luokat toteuttavat rajapinnan PaymentGateway?” (dependency_search)

Tunnetut rajoitukset

  • Noin 250 Kotlinin standardikirjaston ja alustan kutsua suodatetaan pois suhteista, joten apufunktiot kuten listOf, map, filter ja println eivät ole graafin kaaria. Käytä niihin työkalua text_pattern_search.

Seuraavat vaiheet

Yhdistä repositorio pikaoppaan avulla ja tarkista sitten tukimatriisi yhteensopivuussivulta. Sekakoodikannoissa lue myös Java-opas.

Parhaiten sopii

  • > Android-tiimit, joilla on suuria monimoduulisovelluksia, joissa ViewModelit, repositoriot ja käyttötapaukset kutsuvat toisiaan moduulirajojen yli.
  • > Palvelinpuolen Kotlin ja Kotlin/JVM-palvelut, joissa Kotlin on vanhemman Java-koodin rinnalla.
  • > Kotlin-skriptillä (`.kts`) kirjoitetut Gradle-koonnit, joita agenttien on luettava sovelluskoodin ohella.

Agenttien työnkulut

  • > Löytää kaikki repositorio- tai käyttötapausluokan kutsujat ennen kuin sen API:a muutetaan.
  • > Jäljittää korutiinivuo ViewModelin `launch`-kutsusta `withContext`-kutsun kautta datakerrokseen.
  • > Kartoittaa ennen refaktorointia, mitkä luokat toteuttavat rajapinnan tai ylikirjoittavat kantametodin.

Moottorin yksityiskohdat

  • > Kotlin-tuki kattaa tiedostot `.kt` ja `.kts`. Allekirjoituksiin tallentuvat laajennusvastaanottajat, parametrien nimet, oletusarvot ja `vararg`-parametrit.
  • > Vastaanottajan tyypitys seuraa `this`-viittausta funktioissa `apply` ja `run`, `it`-viittausta funktioissa `let` ja `also` sekä funktion `with` argumenttia, ja kutsut säilyttävät luokalla tarkennetut nimet.
  • > Korutiinien rakentajat ja Flow-operaattorit, kuten `launch`, `withContext` ja `flow`, jäävät graafiin, kun taas noin 250 standardikirjaston kutsua suodatetaan pois.

Hyödylliset MCP-liittymäkohdat

  • find_symbol

    Käytä sitä luokalle, käyttötapaukselle tai laajennusfunktiolle, kun tarvitset määrittelyn ja viittaukset.

  • dependency_search

    Käytä ennen API-muutosta incoming-läpikäyntiä repositorioon tai rajapintaan nähdäksesi kutsujat ja toteutukset.

  • get_task_context

    Käytä sitä kehotteisiin kuten "jäljitä synkronointivuo luokasta `SyncWorker` verkkoasiakkaaseen".