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

Scala-tuki Maguyva-palvelussa: koodigraafit JVM-palveluille ja Sparkille

Maguyva tukee Scalaa AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata traitteja, olioita, case-luokkia ja tyypitettyjä kutsuja JVM- ja Spark-koodissa.

Missä Scala kampittaa pinnallisia tekoälytyökaluja

Scalassa yksi nimi kantaa paljon. Trait, sen kumppaniolio ja case-luokka voivat jakaa saman käsitteen. Hahmonsovitus sitoo uusia nimiä case-lausekkeiden sisällä, ja luokan sisällä ilman vastaanottajaa kutsuttu metodi on kutsu kohteelle this. Agentti, joka lukee yhden tiedoston kerrallaan, näkee nimet mutta ei sitä, mihin ne ratkeavat.

Maguyva ratkaisee tästä enemmän jo indeksoinnissa, joten agentti voi kysyä, kuka kutsuu metodia, ja saada vastauksen, jonka perusteella voi toimia.

Mitä Maguyva poimii Scalasta

Maguyva kattaa .scala- ja .sc-tiedostot. Luokat, oliot ja traitit poimitaan tyyppeinä, ja structural_search-työkalun esiasetus functions kattaa def-esittelyt ja -määritelmät sekä lambdat. Allekirjoituksiin tallentuvat toistuvat (*) parametrit, ja tuonneista poistetaan etuliite _root_.

Kutsusuhteet säilyttävät luokalla tarkennetut nimet, ja luokan sisäinen vastaanottajaton kutsu ratkeaa luokan omaksi metodiksi. Vastaanottajan tyypitys seuraa parametreja, luokkaparametreja, val- ja var-määritelmiä, tyypitettyjä hahmoja ja case-luokkahahmoja case-lausekkeissa, luokkien, olioiden ja traittien metodien paluutyyppejä, tyyppialiaksia sekä extends-lausekkeita. new isolla alkukirjaimella alkavalle tyypille lasketaan instanssin luonniksi.

Scalassa yhtään suhdetyyppiä ei ole merkitty soveltumattomaksi, joten graafi tallentaa myös perinnän, ohitukset, tyyppiviittaukset, luvut ja kirjoitukset, ohjausvuon sekä poikkeusten kaaret.

Esimerkkikehotteita agenteille

  • ”Kuka kutsuu metodia PaymentService.capture ja miltä reiteiltä?” (find_symbol, sitten dependency_search incoming)
  • ”Mitkä luokat ja oliot laajentavat traitia EventHandler?” (dependency_search)
  • ”Jäljitä, miten tilaustapahtuma päätyy pääkirjan kirjoittajalle.” (get_task_context)

Tunnetut rajoitukset

  • Noin 320 standardikirjaston nimeä suodatetaan pois suhteista: kokoelmaoperaatiot kuten map, flatMap ja foldLeft sekä Option-, Either-, Try-, Future- ja Predef-apufunktiot. Kutsu kohteelle this tai arvolle, jonka tyyppi ratkeaa johonkin omista luokistasi, säilytetään, vaikka sen nimi olisi listalla. Käytä text_pattern_search-työkalua, jos jokin kutsuja näyttää edelleen puuttuvan.
  • Lyhyet tyyppiparametrit kuten A, F ja CC sekä juurityypit kuten Any, Unit ja Nothing suodatetaan pois tyyppiviittauksista.

Seuraavat vaiheet

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

Parhaiten sopii

  • > Scalalla kirjoitetut JVM-palvelut, joissa traitit, kumppanioliot ja case-luokat levittävät yhden käsitteen moneen tiedostoon.
  • > Spark- ja datatekniikan työt, jotka agenttien on luettava yhdessä niiden kutsumien jaettujen kirjastojen kanssa.
  • > Scalan ja Javan sekarepositoriot, joita agenttien on haettava yhtenä koodikantana.

Agenttien työnkulut

  • > Löytää palvelumetodin kaikki kutsujat ennen sen allekirjoituksen muuttamista.
  • > Listata traitin laajentavat luokat ja oliot ennen abstraktin jäsenen lisäämistä.
  • > Jäljittää, miten pyyntö kulkee HTTP-reitiltä palvelujen kautta datakerrokseen.

Moottorin yksityiskohdat

  • > Scala-tuki kattaa `.scala`- ja `.sc`-tiedostot. Luokat, oliot ja traitit ovat tyyppejä, ja luokan sisäiset vastaanottajattomat kutsut ratkeavat sen omiksi metodeiksi.
  • > Vastaanottajan tyypitys seuraa parametreja, luokkaparametreja, `val`- ja `var`-määritelmiä, `case`-hahmoja, metodien paluutyyppejä ja `extends`-lausekkeita.
  • > Kutsut säilyttävät luokalla tarkennetut nimet, `new` lasketaan instanssin luonniksi, ja noin 320 standardikirjaston nimeä suodatetaan pois suhteista.

Hyödylliset MCP-liittymäkohdat

  • find_symbol

    Käytä sitä traitille, oliolle tai palvelumetodille, kun tarvitset määritelmän ja viittaukset.

  • dependency_search

    Käytä incoming-läpikäyntiä traitille tai metodille nähdäksesi toteutukset ja kutsujat ennen allekirjoituksen muutosta.

  • get_task_context

    Käytä sitä kehotteisiin kuten ”jäljitä, miten tilaustapahtuma päätyy pääkirjan kirjoittajalle”.