Siirry sisältöön
cd /languages
  • Monialustainen käyttöliittymä
  • Ohjelmointi
  • AST- ja symbolituki

Dart-tuki Maguyva-palvelussa: koodigraafit Flutter- ja Dart-sovelluksille

Maguyva tukee Dartia AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata luokkia, mixinejä, laajennuksia ja konstruktoreita Flutter- ja Dart-koodissa.

Missä Dart kampittaa pinnallisia tekoälytyökaluja

Dart levittää yhden tyypin useaan rakenteeseen. Luokka voi periä yhdestä kantaluokasta, toteuttaa useita rajapintoja ja sekoittaa mukaan mixinien toimintaa with-avainsanalla. Laajennusmetodit liittävät jäseniä muualla määriteltyihin tyyppeihin, ja nimetyt sekä factory-konstruktorit kätkevät, mikä luokka oikeasti rakennetaan. Tekstihaku löytää nimet mutta ei niiden takana olevaa rakennetta.

Maguyva antaa agentille tämän rakenteen, joten se voi seurata muutosta widgetistä palveluun, josta widget riippuu.

Mitä Maguyva poimii Dartista

Maguyva kattaa .dart-tiedostot. Luokat, mixinit ja laajennukset poimitaan tyyppeinä. structural_search-työkalun esiasetus functions kattaa funktiot, metodit, paikalliset funktiot, lambdat sekä generatiiviset, const- ja factory-konstruktorit. Allekirjoituksiin tallentuvat valinnaiset sijainti- ja nimettyjen parametrien ryhmät sekä static-jäsenet, ja määritelmien nimistä poistetaan loppuun jäävä ? tai !.

Tuonnit normalisoivat import-, part- ja library-direktiivit ja poistavat niiden show-, hide- ja as-lausekkeet. Tuontietuliitteen kautta tehty kutsu, kuten http.get tuonnin import 'package:http/http.dart' as http jälkeen, jää graafiin.

Vastaanottajan tyypitys seuraa parametreja, tyypitettyjä ja alustettuja muuttujia, gettereitä sekä listojen, joukkojen ja iteroitavien yli kulkevia for-in-silmukoita ja käsittelee var- ja dynamic-tyyppejä pääteltyinä. Perittyjä jäseniä selvitettäessä seurataan extends-, implements- ja with-lausekkeita. Graafi tallentaa myös instanssien luonnit, tyyppiviittaukset, luvut ja kirjoitukset sekä poikkeusten kaaret.

Esimerkkikehotteita agenteille

  • ”Kuka kutsuu CartRepository.addItem-metodia ja mistä widgeteistä?” (find_symbol, sitten dependency_search incoming)
  • ”Mitkä luokat toteuttavat rajapinnan PaymentGateway?” (dependency_search)
  • ”Jäljitä, miten kassapainike päätyy maksurajapintaan.” (get_task_context)

Tunnetut rajoitukset

  • Noin 200 Dartin ydinkirjastojen nimeä suodatetaan pois suhteista, muun muassa kokoelmien apufunktiot kuten map, where ja forEach, Future- ja Stream-metodit kuten then ja listen sekä dart:-kirjastot. Käytä niihin text_pattern_search-työkalua.
  • Dartin allekirjoitussolmut pitävät rungon sisarsolmuna, joten structural_search-tuloksissa paikallinen funktio tai lambda voi mennä päällekkäin sen sisältävän kutsuttavan kanssa, ja getterit ja setterit näkyvät metodien allekirjoituksina.

Seuraavat vaiheet

Yhdistä repositorio pikaoppaan avulla ja tarkista sitten tukimatriisi yhteensopivuussivulta. Muissa mobiilikoodikannoissa lue Kotlin-opas ja Swift-opas.

Parhaiten sopii

  • > Flutter-sovellukset, joissa widgetit, tilaluokat, repositoriot ja palvelut kutsuvat toisiaan monen tiedoston yli.
  • > Dart-paketit, jotka lisäävät mixinien ja laajennusmetodien avulla toimintaa muualla määriteltyihin tyyppeihin.
  • > Palvelin- ja komentorivi-Dart, joka jakaa malleja Flutter-asiakkaan kanssa.

Agenttien työnkulut

  • > Löytää repositorio- tai palvelumetodin kaikki kutsujat ennen sen API:n muuttamista.
  • > Listata rajapinnan toteuttavat luokat ennen kuin siihen lisätään jäsen.
  • > Jäljittää, miten widgetin napautus päätyy verkkokerrokseen.

Moottorin yksityiskohdat

  • > Dart-tuki kattaa `.dart`-tiedostot. Luokat, mixinit ja laajennukset ovat tyyppejä, ja konstruktoreihin kuuluvat generatiiviset, `const`- ja `factory`-muodot.
  • > Tuonnit normalisoivat `import`-, `part`- ja `library`-direktiivit, ja tuontietuliitteen kautta tehdyt kutsut jäävät graafiin.
  • > Vastaanottajan tyypitys seuraa parametreja, muuttujia, gettereitä ja `for`-`in`-silmukoita, ja noin 200 ydinkirjastojen nimeä suodatetaan pois suhteista.

Hyödylliset MCP-liittymäkohdat

  • find_symbol

    Käytä sitä widget-, repositorio- tai palveluluokalle, kun tarvitset määritelmän ja viittaukset.

  • dependency_search

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

  • get_task_context

    Käytä sitä kehotteisiin kuten ”jäljitä, miten kassapainike päätyy maksurajapintaan”.