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 编程中解放出来!