sg suderinamumas
vendor/bin/sg yra ast-grep stiliaus suderinamumo apvalkalas. Jis priima dažniausiai naudojamas ast-grep vėliavėles ir naudoja tą patį Greph\Ast\AstSearcher variklį kaip vendor/bin/greph -p. Patikrintas funkcijų rinkinys atkurtas pagal patikras su pradine sg programa ir pateikiamas skiltyje Išplėstinės funkcijos / funkcijų matrica.
Kada naudoti
Naudokite apvalkalą, kai:
- Turite esamą įrankį, agentą arba scenarijų, kuris jau iškviečia
sg. - Norite tiesioginio pakaitalo, veikiančio aplinkose, kuriose negalite įdiegti paties
ast-grep. - Norite ast-grep naudojimo patogumo įdiegę tik Composer.
Naudokite vietinį vendor/bin/greph -p, kai:
- Rašote naują kodą ir jums nereikia ast-grep CLI formos.
- Norite tokio pat vėliavėlių rinkinio kaip teksto režimu (vietinė programa sujungia abu režimus).
Naudojimas
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run yra pagrindinis ast-grep veiksmažodis. scan ir rewrite yra tik apvalkalo slapyvardžiai, atkartojantys įprastą naudojimą. Vykdant be argumentų, atliekama vienkartinė paieška:
./vendor/bin/sg --pattern 'array($$$ITEMS)' src
Šablonai
Šablonų gramatika sutampa su vietine AST paieška. Visą žinyną rasite skiltyje Režimai / AST paieška.
./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
Perrašymai
Apvalkalas palaiko tą pačią bandomojo paleidimo / interaktyvią / įrašymo darbo seką kaip ir vietinio perrašymo funkcija, naudodamas ast-grep vėliavėlių pavadinimus:
# 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 išvestis
--json pateikia ast-grep formato JSON. Palaikomi trys stiliai:
./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
| Stilius | Struktūra |
|---|---|
--json (numatytasis pretty) |
Vienas gražiai suformatuotas JSON masyvas |
--json=stream |
Po vieną atitikmenį eilutėje, JSON įrašai atskirti naujos eilutės simboliais |
--json=compact |
Vienas kompaktiškas JSON masyvas |
Patikrintos funkcijos
Toliau pateiktos vėliavėlės patikrintos pagal pradinę sg programą, naudojant funkcijų matricą. Jei vėliavėlė turi du užrašymo variantus (-p ir --pattern, --glob ir --globs), tikrinamas vienas iš jų, o apvalkalas abu variantus apdoroja kaip tą pačią parinktį.
Šablono vėliavėlės
--pattern PATTERN(pagrindiniame lygmenyje irrunviduje)-p PATTERN(slapyvardis)--rewrite TEMPLATE-r TEMPLATE--lang NAME,-l NAME
Atitikmenų vėliavėlės
--files-with-matches--json(pretty,stream,compact)--update-all,-U
Failų naršymo vėliavėlės
--no-ignore hidden(kombinuota forma)--glob GLOB,--globs GLOB
Vykdytojų vėliavėlės
-j N,--threads N
Priimamos be patikros
Apvalkalas taip pat priima šias vėliavėles, tačiau joms dar neatlikta funkcijų matricos patikra:
--no-ignoreatskirai arba su kita neihiddenreikšme--type NAME,--type-not NAME
Tik apvalkalui skirtos papildomos funkcijos
Apvalkalas siūlo keletą pagalbinių funkcijų, kurių pats ast-grep neturi:
scanirrewriteslapyvardžiai, skirtirun--hiddenvėliavėlė (ast-grep įtraukia ją į--no-ignore hidden)--dry-runperrašymo peržiūros slapyvardis--interactiveperrašymo patvirtinimo eiga
Apribojimai
Greph sg apvalkalas apima struktūrinės paieškos ir perrašymo funkcijas, kurias naudoja dauguma įrankių ir agentų. Šiuo metu jame nėra šių ast-grep funkcijų:
- YAML taisyklių failai (
--rule,--config) - Kelių kalbų failų paieška už PHP ribų
- Ne pagal šabloną atliekami transformavimai (
--debug-query,--inspect) - LSP integracija
Jei trūksta vėliavėlės, pateikite problemos aprašą ir pridėkite su pradine sg atliktą patikrą.
Elgsenos lygiavertiškumas
Apvalkalo tikslas – elgsenos, o ne baitų lygiavertiškumas. Išvestis semantiškai sutampa, tačiau gali skirtis kosmetinės detalės. Atliekant funkcijų matricos patikras vertinamas analizatoriui svarbių laukų (failo kelias, eilutės numeris, užfiksuotas kodas, užfiksuotos reikšmės, JSON struktūra) lygiavertiškumas, o ne baitų srautas.