ast-grep(sg) adalah alat CLI untuk pencarian struktur kode, lint, dan penulisan ulang.
ast-grep adalah alat berbasis AST untuk mencari kode berdasarkan kode pola. Anggap saja sebagai teman lama Anda grep
, tetapi mencocokkan node AST, bukan teks. Anda dapat menulis pola seolah-olah Anda sedang menulis kode biasa. Ini akan cocok dengan semua kode yang memiliki struktur sintaksis yang sama. Anda dapat menggunakan tanda $
+ huruf besar sebagai wildcard, misalnya $MATCH
, untuk mencocokkan node AST mana pun. Anggap saja sebagai REGEX titik .
, kecuali itu bukan tekstual.
Cobalah taman bermain online untuk merasakannya!
Lihat lebih banyak tangkapan layar di situs web.
Anda dapat menginstalnya dari npm, pip, cargo, homebrew, scoop atau 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
Atau Anda dapat membangun ast-grep dari sumber. Anda perlu menginstal Rustup, mengkloning repositori, lalu
cargo install --path ./crates/cli --locked
Paket juga tersedia di platform lain.
ast-grep memiliki bentuk berikut.
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
Jika menurut Anda ast-grep menarik dan berguna untuk pekerjaan Anda, tolong belikan saya kopi agar saya dapat menghabiskan lebih banyak waktu pada proyek ini!
Inti ast-grep adalah algoritma untuk mencari dan mengganti kode berdasarkan pohon sintaksis abstrak yang dihasilkan oleh tree-sitter. Ini dapat membantu Anda melakukan analisis statis ringan dan manipulasi kode skala besar dengan cara yang intuitif.
Sorotan utama:
Pola intuitif untuk menemukan dan mengganti AST. Pola ast-grep terlihat seperti kode biasa yang Anda tulis setiap hari (bisa dikatakan polanya isomorfik terhadap kode).
jQuery menyukai API untuk traversal dan manipulasi AST.
Konfigurasi YAML untuk menulis aturan linting baru atau modifikasi kode.
Ditulis dalam bahasa yang dikompilasi, dengan penguraian berbasis tree-sitter dan memanfaatkan banyak inti.
Antarmuka baris perintah yang indah :)
Visi ast-grep adalah untuk mendemokratisasikan keajaiban pohon sintaksis abstrak dan membebaskan seseorang dari pemrograman AST yang rumit!