ast-grep(sg) es una herramienta CLI para búsqueda estructural, pelusa y reescritura de código.
ast-grep es una herramienta basada en AST para buscar código por código de patrón. Piense en ello como su viejo amigo grep
, pero haciendo coincidir nodos AST en lugar de texto. Puede escribir patrones como si estuviera escribiendo código normal. Coincidirá con todo el código que tenga la misma estructura sintáctica. Puede utilizar el signo $
+ letras mayúsculas como comodín, por ejemplo, $MATCH
, para hacer coincidir cualquier nodo AST. Piense en ello como un punto REGEX .
, excepto que no es textual.
¡Pruebe el patio de juegos en línea para probar!
Vea más capturas de pantalla en el sitio web.
¡Puedes instalarlo desde npm, pip, cargo, homebrew, Scoop o MacPorts!
npm install --global @ast-grep/cli
pip install ast-grep-cli
cargo install ast-grep --locked
# install via homebrew, thank @henryhchchc
brew install ast-grep
# install via scoop, thank @brian6932
scoop install main/ast-grep
# install via MacPorts
sudo port install ast-grep
O puedes compilar ast-grep desde la fuente. Necesitas instalar Rustup, clonar el repositorio y luego
cargo install --path ./crates/cli --locked
Los paquetes también están disponibles en otras plataformas.
ast-grep tiene la siguiente forma.
sg --pattern 'var code = $PATTERN' --rewrite 'let code = new $PATTERN' --lang ts
sg -p ' $A && $A() ' -l ts -r ' $A?.() '
sg -p ' new Zodios($URL, $CONF as const,) ' -l ts -r ' new Zodios($URL, $CONF) ' -i
Si encuentra ast-grep interesante y útil para su trabajo, ¡invíteme un café para poder dedicar más tiempo al proyecto!
El núcleo de ast-grep es un algoritmo para buscar y reemplazar código basado en un árbol de sintaxis abstracta producido por tree-sitter. Puede ayudarle a realizar análisis estáticos ligeros y manipulación de código a gran escala de forma intuitiva.
Aspectos destacados clave:
Un patrón intuitivo para buscar y reemplazar AST. El patrón de ast-grep parece un código normal que escribirías todos los días (se podría decir que el patrón es isomorfo al código).
jQuery como API para recorrido y manipulación de AST.
Configuración de YAML para escribir nuevas reglas de linting o modificación de código.
Escrito en lenguaje compilado, con análisis basado en cuidadores de árboles y utilizando múltiples núcleos.
Hermosa interfaz de línea de comando :)
¡La visión de ast-grep es democratizar la magia del árbol de sintaxis abstracta y liberarlo de la engorrosa programación AST!