ast grep
0.31.0
ast-grep(sg) 是一個用於程式碼結構搜尋、lint 和重寫的 CLI 工具。
ast-grep 是一個基於 AST 的工具,用於透過模式代碼搜尋代碼。將其視為您的老朋友grep
,但匹配 AST 節點而不是文字。您可以像編寫普通程式碼一樣編寫模式。它將匹配具有相同語法結構的所有程式碼。您可以使用$
符號+大寫字母作為通配符,例如$MATCH
,來匹配任何單一 AST 節點。將其視為 REGEX 點.
,除非它不是文字。
試試線上遊樂場吧!
在網站上查看更多螢幕截圖。
您可以從 npm、pip、cargo、homebrew、scoop 或 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
或者您可以從原始程式碼建立 ast-grep。您需要安裝 rustup,克隆儲存庫,然後
cargo install --path ./crates/cli --locked
軟體包也可在其他平台上使用。
ast-grep 具有以下形式。
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
如果您發現 ast-grep 有趣且對您的工作有用,請請我喝杯咖啡,這樣我就可以花更多時間在該專案上!
ast-grep的核心是一種基於tree-sitter產生的抽象語法樹來搜尋和取代程式碼的演算法。它可以幫助您以直觀的方式進行輕量級靜態分析和大規模程式碼操作。
主要亮點:
尋找並取代 AST 的直覺模式。 ast-grep 的模式看起來就像您每天編寫的普通程式碼(您可以說該模式與程式碼同構)。
類似於 jQuery 的 API,用於 AST 遍歷和操作。
用於編寫新的 linting 規則或程式碼修改的 YAML 設定。
用編譯語言編寫,具有基於樹守護者的解析並利用多個核心。
漂亮的命令列介面:)
ast-grep 的願景是讓抽象語法樹魔法大眾化,並將人們從繁瑣的 AST 程式設計中解放出來!