Kompatibilitet med sg
vendor/bin/sg är ett kompatibilitetsomslag i ast-grep-stil. Det tar emot de vanligaste flaggorna i ast-grep och återanvänder samma Greph\Ast\AstSearcher-motor som vendor/bin/greph -p använder. De verifierade funktionerna är återgivna från testkörningar mot uppströmsversionens binärfil sg och finns i Avancerat / funktionsmatris.
När du ska använda det
Använd omslaget när:
- Du har ett befintligt verktyg, en agent eller ett skript som redan anropar
sg. - Du vill ha en direkt ersättare som fungerar i miljöer där du inte kan installera
ast-grepsjälvt. - Du vill ha ast-grep-ergonomi från en installation med endast Composer.
Använd inbyggda vendor/bin/greph -p när:
- Du skriver ny kod och inte behöver formen ast-grep CLI.
- Du vill ha samma flagguppsättning som i textläge (den inbyggda binärfilen förenar båda).
Användning
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run är det kanoniska ast-grep-kommandot. scan och rewrite är alias som endast finns i omslaget och speglar vanligt bruk. Det går att köra kommandot utan argument för en engångssökning:
./vendor/bin/sg --pattern 'array($$$ITEMS)' src
Mönster
Grammatiken för mönster är identisk med den inbyggda AST-sökningen. Se Lägen / AST-sökning för den fullständiga referensen.
./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
Omskrivningar
Omslaget stöder samma arbetsflöde med torrkörning, interaktiv körning och skrivning som den inbyggda omskrivningen, med flaggnamn i ast-grep:
# 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
Utdata från JSON
--json skickar ut ast-grep-formade JSON. Tre format stöds:
./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
| Format | Struktur |
|---|---|
--json (standard: pretty) |
En enda snyggt formaterad JSON-array |
--json=stream |
En matchning per rad, avgränsad med radbrytningar JSON |
--json=compact |
En enda kompakt JSON-array |
Verifierade funktioner
Följande flaggor har verifierats mot uppströmsversionens binärfil sg i funktionsmatrisen. Om en flagga har två stavningar (-p och --pattern, --glob och --globs) använder testet den ena, och omslaget tolkar båda som samma alternativ.
Mönsterflaggor
--pattern PATTERN(på toppnivå och inutirun)-p PATTERN(alias)--rewrite TEMPLATE-r TEMPLATE--lang NAME,-l NAME
Matchningsflaggor
--files-with-matches--json(pretty,stream,compact)--update-all,-U
Genomsökningsflaggor
--no-ignore hidden(kombinerad form)--glob GLOB,--globs GLOB
Arbetarflaggor
-j N,--threads N
Accepteras utan test
Omslaget accepterar även dessa flaggor, men ingen testkörning för funktionsmatrisen täcker dem ännu:
--no-ignoreför sig, eller med ett annat värde änhidden--type NAME,--type-not NAME
Extra funktioner endast i omslaget
Omslaget erbjuder några hjälpfunktioner som ast-grep självt saknar:
- Aliasen
scanochrewriteförrun - Flaggan
--hidden(ast-grep inkluderar den i--no-ignore hidden) - Alias för förhandsgranskning av omskrivningar:
--dry-run - Flöde för att bekräfta omskrivningar med
--interactive
Begränsningar
Omslaget för Greph sg täcker de strukturella sök- och omskrivningsfunktioner som används av de flesta verktyg och agenter. Följande ast-grep-funktioner är för närvarande inte tillgängliga:
- Regel-filer för YAML (
--rule,--config) - Genomsökning av flera språk utöver PHP
- Transformering utan mönster (
--debug-query,--inspect) - LSP-integration
Om du stöter på en flagga som saknas kan du skapa ett ärende med testkörningen du gjorde mot uppströmsversionen av sg och den förväntade utdatan.
Beteendeparitet
Omslaget eftersträvar beteendeparitet, inte byteparitet. Utdata är semantiskt likvärdig men kan skilja sig i kosmetiska detaljer. Testerna i funktionsmatrisen kontrollerar att parserrelevanta fält (filsökväg, radnummer, fångad kod, fångster, strukturen för JSON) är likvärdiga, inte att byteströmmen är identisk.