Compatibilidad con sg
vendor/bin/sg es un envoltorio de compatibilidad al estilo de ast-grep. Acepta las opciones ast-grep más utilizadas y reutiliza el mismo motor Greph\Ast\AstSearcher que emplea vendor/bin/greph -p. La interfaz verificada se reproduce a partir de pruebas de sondeo con el binario original de sg y se encuentra en Avanzado / Matriz de funciones.
Cuándo usarlo
Use el envoltorio cuando:
- Ya tiene una herramienta, un agente o un script que invoque
sg. - Quiere un reemplazo directo que funcione en entornos donde no pueda instalar
ast-grep. - Quiere la facilidad de uso de ast-grep en una instalación que solo tenga Composer.
Use vendor/bin/greph -p de forma nativa cuando:
- Escriba código nuevo y no necesite la interfaz de ast-grep CLI.
- Quiera el mismo conjunto de opciones que en el modo de texto (el binario nativo unifica ambos modos).
Uso
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run es el verbo canónico de ast-grep. scan y rewrite son alias exclusivos del envoltorio que reflejan el uso habitual. También funciona una invocación sin argumentos para realizar una búsqueda puntual:
./vendor/bin/sg --pattern 'array($$$ITEMS)' src
Patrones
La gramática de patrones es idéntica a la de la búsqueda AST nativa. Consulte Modos / Búsqueda AST para ver la referencia completa.
./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
Reescrituras
El envoltorio admite el mismo flujo de trabajo de simulación / interacción / escritura que la reescritura nativa, con los nombres de opciones 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
Salida de JSON
--json genera ast-grep con formato de JSON. Admite tres estilos:
./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
| Estilo | Formato |
|---|---|
--json (pretty predeterminado) |
Una sola matriz JSON con formato legible |
--json=stream |
Una coincidencia por línea, con delimitación de saltos de línea JSON |
--json=compact |
Una sola matriz JSON compacta |
Interfaz verificada
Las siguientes opciones se han verificado con el binario original de sg en la matriz de funciones. Si una opción tiene dos formas (-p y --pattern, --glob y --globs), la prueba usa una de ellas y el envoltorio interpreta ambas como la misma opción.
Opciones de patrón
--pattern PATTERN(en el nivel superior y dentro derun)-p PATTERN(alias)--rewrite TEMPLATE-r TEMPLATE--lang NAME,-l NAME
Opciones de coincidencia
--files-with-matches--json(pretty,stream,compact)--update-all,-U
Opciones del recorrido
--no-ignore hidden(forma combinada)--glob GLOB,--globs GLOB
Opciones de procesos de trabajo
-j N,--threads N
Aceptadas sin una prueba
El envoltorio también acepta estas opciones, pero todavía no hay pruebas de la matriz de funciones que las cubran:
--no-ignorepor sí sola o con un valor distinto dehidden--type NAME,--type-not NAME
Funciones adicionales del envoltorio
El envoltorio ofrece algunas utilidades que ast-grep no incluye:
- Alias
scanyrewritepararun - Opción
--hidden(ast-grep la integra en--no-ignore hidden) - Alias
--dry-runpara previsualizar reescrituras - Flujo de confirmación de reescrituras con
--interactive
Limitaciones
El envoltorio sg de Greph cubre las funciones de búsqueda estructural y reescritura que usan la mayoría de las herramientas y los agentes. Actualmente no ofrece estas funciones de ast-grep:
- Archivos de reglas YAML (
--rule,--config) - Análisis en varios lenguajes además de PHP
- Transformadores que no usan patrones (
--debug-query,--inspect) - Integración con LSP
Si necesita una opción que falta, abra una incidencia e incluya la prueba que ejecutó con el sg original y el resultado esperado.
Paridad de comportamiento
El envoltorio busca la paridad de comportamiento, no la paridad byte a byte. La salida es semánticamente equivalente, pero puede diferir en detalles visuales. Las pruebas de la matriz de funciones comprueban la equivalencia de los campos pertinentes para el analizador (ruta del archivo, número de línea, código capturado, capturas, formato JSON), no del flujo de bytes.