sg-ühilduvus
vendor/bin/sg on ast-grep-stiilis ühilduvusümbris. See aktsepteerib sagedamini kasutatavaid ast-grep lippe ja kasutab sama Greph\Ast\AstSearcher mootorit, mida kasutab vendor/bin/greph -p. Kontrollitud funktsioonide loend põhineb ülesvoolu binaarfaili sg vastaste testide tulemustel ja on saadaval lehel Täpsemad teemad / funktsioonide maatriks.
Millal seda kasutada
Kasutage ümbrist, kui:
- Teil on olemas tööriist, agent või skript, mis käivitab juba
sg. - Soovite asenduslahendust, mis töötab keskkondades, kuhu ei saa installida
ast-grep-i ennast. - Soovite ast-grep kasutusmugavust ainult Composer-iga paigalduses.
Kasutage natiivset vendor/bin/greph -p-i, kui:
- Kirjutate uut koodi ega vaja kuju ast-grep CLI.
- Soovite sama lippude komplekti mis tekstirežiimis (natiivne binaarfail ühendab mõlemad režiimid).
Kasutamine
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run on kanooniline ast-grep-verb. scan ja rewrite on ainult ümbrise varjunimed, mis järgivad levinud kasutust. Ka paljas käivitus toimib ühekordse otsinguna:
./vendor/bin/sg --pattern 'array($$$ITEMS)' src
Mustrid
Mustrite grammatika on identne natiivse AST-otsingu omaga. Täielikku viitejuhendit vaadake jaotisest Režiimid / AST-otsing.
./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
Ümberkirjutused
Ümbris toetab sama proovikäivituse / interaktiivse / failidesse kirjutamise töövoogu mis natiivne ümberkirjutus, kasutades ast-grep lipunimesid:
# 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-väljund
--json väljastab ast-grep-kujulisi JSON-andmeid. Toetatud on kolm stiili:
./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
| Stiil | Kuju |
|---|---|
--json (vaikimisi pretty) |
Üks ilusasti vormindatud JSON-massiiv |
--json=stream |
Üks sobivus rea kohta, reavahetustega eraldatud JSON |
--json=compact |
Üks kompaktne JSON-massiiv |
Kontrollitud funktsioonid
Järgmised lipud on kontrollitud ülesvoolu binaarfaili sg suhtes lehel funktsioonide maatriks. Kui lipul on kaks kirjapilti (-p ja --pattern, --glob ja --globs), kasutab vastastest üht neist ning ümbris käsitleb mõlemat sama suvandina.
Mustrilipud
--pattern PATTERN(tipptasemel jarunsees)-p PATTERN(alias)--rewrite TEMPLATE-r TEMPLATE--lang NAME,-l NAME
Sobivuse lipud
--files-with-matches--json(pretty,stream,compact)--update-all,-U
Läbija lipud
--no-ignore hidden(ühendatud vorm)--glob GLOB,--globs GLOB
Tööliste lipud
-j N,--threads N
Ilma vastastestita aktsepteeritud lipud
Ümbris aktsepteerib ka järgmisi lippe, kuid funktsioonide maatriksi vastastestid neid veel ei hõlma:
--no-ignoreüksi või väärtusega, mis polehidden--type NAME,--type-not NAME
Ainult ümbrise lisad
Ümbris pakub mõningaid abifunktsioone, mida ast-grep-is endas pole:
- Varjunimed
scanjarewriteväärtuselerun --hiddenlipp (ast-grep liidab selle suvandiga--no-ignore hidden)- Ümberkirjutuse eelvaate varjunimi
--dry-run - Ümberkirjutuse kinnitamise töövoog suvandiga
--interactive
Piirangud
Greph sg-ümbris katab struktuurse otsingu ja ümberkirjutamise funktsionaalsuse, mida enamik tööriistu ja agente kasutab. Praegu ei paku see järgmisi ast-grep funktsioone:
- YAML reeglifailid (
--rule,--config) - Mitme keele skannimine peale PHP
- Mustritel mittepõhinevad teisendajad (
--debug-query,--inspect) - LSP-integratsioon
Kui mõni lipp puudub, esitage probleem koos ülesvoolu sg-i vastu käivitatud vastastesti ja oodatud väljundiga.
Käitumise vastavus
Ümbrise eesmärk on käitumise vastavus, mitte baitide täpne kattumine. Väljund on semantiliselt samaväärne, kuid kosmeetilised üksikasjad võivad erineda. Funktsioonide maatriksi vastastestid kontrollivad samaväärsust parseri jaoks oluliste väljade (failitee, reanumber, hõivatud kood, hõivatud osad, JSON kuju) alusel, mitte baitvoo järgi.