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

Perl-tuki Maguyva-palvelussa: paketti- ja aliohjelmagraafit

Maguyva tukee Perliä AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata vanhan Perl-koodin paketteja, aliohjelmia, use- ja require-tuonteja sekä konstruktoreita.

Miksi Perl-ympäristöjä on vaikea muuttaa turvallisesti

Perl-koodi on tiivistä, joustavaa ja usein vuosia sitten lähteneiden ihmisten kirjoittamaa. Sigilit muuttavat nimen merkitystä, paketit toimivat myös luokkina, ja samaa moduulia lataavat skriptit monista hakemistoista. Tekstihaku löytää merkkijonot, mutta ei kerro agentille, mitä aliohjelmaa skripti todella kutsuu.

Maguyva antaa agentille paketit, aliohjelmat, tuonnit ja konstruktorit rakenteena, jotta se voi rajata muutoksen ennen kuin koskee koodiin.

Mitä Maguyva poimii Perlistä

Maguyva kattaa tiedostot .pl, .pm, .t, .pod ja .perl. Aliohjelmat poimitaan funktioina ja package-esittelyt luokkina, ja määrittelyjen nimistä poistetaan sigilit ($, @, %, &, *), joten muuttujia ja aliohjelmia voi hakea pelkillä nimillä.

Tuonnit muodostetaan lauseista use, require ja package. Muotoa Class->new olevat metodikutsut lasketaan ilmentymän luonniksi, ja bless ja tie säilytetään kutsugraafissa tarkoituksella. Graafi tallentaa myös periytymisen, ylikirjoitukset, tyyppiviittaukset, luvut ja kirjoitukset sekä poikkeusten nostamisen.

Noin 189 sisäänrakennettua funktiota (print, open, die, warn ja vastaavat) suodatetaan pois kutsusuhteista, jotta repositorion oma koodi erottuu.

Esimerkkikehotteita agenteille

  • “Mitkä skriptit käyttävät pakettia Billing::Invoice, ja mitä sen aliohjelmia ne kutsuvat?” (dependency_search incoming)
  • “Missä Report::Monthly luodaan, ja mitä tapahtuu kutsun ->new jälkeen?” (find_symbol, sitten get_task_context)
  • “Etsi kaikki testitiedostot, jotka testaavat pakettia Auth::Session.” (text_pattern_search, sitten find_symbol)

Tunnetut rajoitukset

  • Perinteiset Perl-metodit ovat tavallisia sub-esittelyjä paketin sisällä, joten rakenteellisessa haussa metodiksi luokitellaan vain uudempi erillinen method-syntaksi. Käytä vanhemmalle olio-Perlille esiasetusta functions.
  • Suodatettujen sisäänrakennettujen funktioiden kutsut eivät näy graafin kaarina. Käytä työkalua text_pattern_search, kun tarvitset jokaisen open- tai print-kutsun.

Seuraavat vaiheet

Yhdistä repositorio pikaoppaan avulla ja tarkista sitten tukimatriisi yhteensopivuussivulta. Jos ympäristö on siirtymässä toiseen skriptikieleen, vertaa Python-oppaaseen.

Parhaiten sopii

  • > Tiimit, jotka ovat perineet Perl-palveluja, CGI-sovelluksia tai erä- ja raporttiskriptejä, jotka ovat yhä tuotannossa.
  • > Moduulipainotteiset koodikannat, joissa `.pm`-paketteja jakavat monet skriptit ja testitiedostot.
  • > Migraatio- tai alasajotyö, jossa ensimmäinen kysymys on, mitkä skriptit riippuvat mistäkin moduuleista.

Agenttien työnkulut

  • > Listata kaikki skriptit ja moduulit, jotka käyttävät jaettua pakettia, ennen kuin sitä muutetaan.
  • > Löytää, missä luokka luodaan `->new`-kutsulla ja mitä aliohjelmia se kutsuu seuraavaksi.
  • > Seurata raporttia tai työtä aloitusskriptistä sen lataamien moduulien läpi.

Moottorin yksityiskohdat

  • > Perl-tuki kattaa tiedostot `.pl`, `.pm`, `.t`, `.pod` ja `.perl`. Aliohjelmat ovat funktioita ja `package`-esittelyt luokkia.
  • > Määrittelyjen nimistä poistetaan sigilit, `use`- ja `require`-lauseista tulee tuonteja, ja `Class->new` lasketaan ilmentymän luonniksi.
  • > Noin 189 sisäänrakennettua funktiota, kuten `print`, `open` ja `die`, suodatetaan pois kutsuista, mutta `bless` ja `tie` jäävät graafiin.

Hyödylliset MCP-liittymäkohdat

  • find_symbol

    Käytä sitä paketin tai aliohjelman nimellä; sigilit poistetaan, joten hae pelkällä nimellä.

  • dependency_search

    Käytä incoming-läpikäyntiä jaettuun moduuliin nähdäksesi, mitkä skriptit ja paketit riippuvat siitä.

  • text_pattern_search

    Käytä sitä suodatettuihin sisäänrakennettuihin funktioihin, asetusavaimiin ja SQL-merkkijonoihin, jotka jäävät kutsugraafin ulkopuolelle.