Siirry sisältöön

sg-yhteensopivuus

vendor/bin/sg on ast-grep-tyylinen yhteensopivuuskerros. Se hyväksyy yleisimmin käytetyt ast-grep-valitsimet ja käyttää samaa Greph\Ast\AstSearcher-moottoria kuin vendor/bin/greph -p. Vahvistetut ominaisuudet on toisinnettu kokeista, jotka on ajettu alkuperäistä sg-binääriä vasten, ja ne löytyvät kohdasta Lisäasetukset / Ominaisuusmatriisi.

Milloin sitä kannattaa käyttää

Käytä yhteensopivuuskerrosta, kun:

  • Käytössäsi on työkalu, agentti tai skripti, joka kutsuu jo komentoa sg.
  • Haluat suoraan korvaavan työkalun, joka toimii ympäristöissä, joihin et voi asentaa itse ast-grep-ohjelmaa.
  • Haluat ast-grep-käyttömukavuuden vain Composer-asennuksesta.

Käytä natiivia komentoa vendor/bin/greph -p, kun:

  • Kirjoitat uutta koodia etkä tarvitse ast-grep CLI -muotoa.
  • Haluat saman valitsinjoukon kuin tekstitilassa (natiivissa binäärissä molemmat on yhdistetty).

Käyttö

Shell
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]

run on kanoninen ast-grep-verbi. scan ja rewrite ovat vain yhteensopivuuskerroksen aliaksia, jotka vastaavat yleistä käyttötapaa. Myös pelkkä komento toimii kertaluonteisena hakuna:

Shell
./vendor/bin/sg --pattern 'array($$$ITEMS)' src

Kuviot

Mallikieli on sama kuin natiivissa AST-haussa. Katso täydellinen viite kohdasta Tilat / AST-haku.

Shell
./vendor/bin/sg run --pattern 'array($$$ITEMS)' src
./vendor/bin/sg run --pattern '$obj->$method($$$ARGS)' src
./vendor/bin/sg run --pattern 'new $CLASS()' src

Uudelleenkirjoitukset

Yhteensopivuuskerros tukee samaa kokeiluajoa / vuorovaikutteista / kirjoittavaa työnkulkua kuin natiivin uudelleenkirjoitustila, käyttäen ast-grep-valitsinten nimiä:

Shell
# Preview only (default)
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' src

# Apply without confirmation
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --update-all src

# Confirm each match
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --interactive src

# Wrapper-only aliases
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --interactive src

JSON-tulostus

--json tuottaa ast-grep-muotoisia JSON-tuloksia. Tuettuja tyylejä on kolme:

Shell
./vendor/bin/sg run --json --pattern 'dispatch($EVENT)' src
./vendor/bin/sg run --json=stream --pattern 'dispatch($EVENT)' src
./vendor/bin/sg run --json=compact --pattern 'dispatch($EVENT)' src
Tyyli Muoto
--json (oletus pretty) Yksi kauniisti muotoiltu JSON-taulukko
--json=stream Yksi osuma rivillä, rivinvaihdoilla erotettu JSON
--json=compact Yksi tiivis JSON-taulukko

Vahvistetut ominaisuudet

Seuraavat valitsimet on testattu alkuperäistä sg-binääriä vasten ominaisuusmatriisissa. Jos valitsimella on kaksi kirjoitusasua (-p ja --pattern, --glob ja --globs), kokeessa käytetään jompaakumpaa, ja yhteensopivuuskerros tulkitsee molemmat samaksi asetukseksi.

Mallivalitsimet

  • --pattern PATTERN (ylimmällä tasolla ja run-asetuksen sisällä)
  • -p PATTERN (alias)
  • --rewrite TEMPLATE
  • -r TEMPLATE
  • --lang NAME, -l NAME

Osumavalitsimet

  • --files-with-matches
  • --json (pretty, stream, compact)
  • --update-all, -U

Läpikäynnin valitsimet

  • --no-ignore hidden (yhdistetty muoto)
  • --glob GLOB, --globs GLOB

Työntekijävalitsimet

  • -j N, --threads N

Hyväksytään ilman koetta

Yhteensopivuuskerros hyväksyy myös seuraavat valitsimet, mutta niitä ei ole vielä testattu ominaisuusmatriisissa:

  • --no-ignore yksinään tai arvolla, joka ei ole hidden
  • --type NAME, --type-not NAME

Vain yhteensopivuuskerroksen lisätoiminnot

Yhteensopivuuskerros tarjoaa muutamia aputoimintoja, joita itse ast-grep-ohjelmassa ei ole:

  • scan- ja rewrite-aliakset komennolle run
  • --hidden-valitsin (ast-grep sisällyttää tämän toimintoon --no-ignore hidden)
  • --dry-run-alias uudelleenkirjoituksen esikatseluun
  • --interactive-toiminto uudelleenkirjoitusten vahvistamiseen

Rajoitukset

Greph-komennon sg-yhteensopivuuskerros kattaa useimpien työkalujen ja agenttien käyttämät rakenteisen haun ja uudelleenkirjoituksen ominaisuudet. Se ei tällä hetkellä tarjoa seuraavia ast-grep-ominaisuuksia:

  • YAML-sääntötiedostot (--rule, --config)
  • Monikielinen läpikäynti kohteen PHP lisäksi
  • Malliin perustumattomat muuntimet (--debug-query, --inspect)
  • LSP-integraatio

Jos jokin valitsin puuttuu, luo ilmoitus ja liitä mukaan alkuperäistä sg-komentoa vasten tekemäsi koe sekä odotettu tuloste.

Käyttäytymisen vastaavuus

Yhteensopivuuskerroin tavoitteena on vastaava toiminta, ei tavuntarkka vastaavuus. Tuloste on semanttisesti vastaava, mutta kosmeettisissa yksityiskohdissa voi olla eroja. Ominaisuusmatriisin kokeissa tarkistetaan jäsentimen kannalta olennaisten kenttien (tiedostopolku, rivinumero, talteen otettu koodi, talteen otetut osumat, JSON-muoto) vastaavuus, ei tavujonoa.