116 个版本 (25 个破坏性更新)

新版本 0.26.2 2024 年 8 月 18 日
0.25.7 2024 年 8 月 5 日
0.25.4 2024 年 7 月 26 日
0.20.2 2024 年 3 月 27 日
0.1.0 2022 年 7 月 7 日

103开发工具

Download history 840/week @ 2024-05-01 901/week @ 2024-05-08 187/week @ 2024-05-15 384/week @ 2024-05-22 388/week @ 2024-05-29 615/week @ 2024-06-05 217/week @ 2024-06-12 500/week @ 2024-06-19 458/week @ 2024-06-26 100/week @ 2024-07-03 431/week @ 2024-07-10 451/week @ 2024-07-17 771/week @ 2024-07-24 754/week @ 2024-07-31 633/week @ 2024-08-07 307/week @ 2024-08-14

每月下载量 2,615
用于 sljit-sys

自定义许可证

660KB
19K SLoC

ast-grep

coverage badge Discord Repology Badge Badge GitHub Sponsors

ast-grep(sg)

ast-grep(sg) 是一个 CLI 工具,用于代码结构搜索、代码检查和重写。

简介

ast-grep 是一个基于 AST 的工具,通过模式代码搜索代码。想象一下,它是你的老朋友 grep,但它匹配 AST 节点而不是文本。你可以像写普通代码一样编写模式。它会匹配具有相同语法结构的所有代码。你可以使用 $ 符号 + 大写字母作为通配符,例如 $MATCH,来匹配任何单个 AST 节点。把它想象成 REGEX 点 .,但不是文本。

尝试在线 游乐场 来体验一下!

演示

demo

网站 上查看更多截图。

安装

您可以从 npmpipcargohomebrewscoopMacPorts 安装它!

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

赞助商

Sponsors

如果您觉得ast-grep对您的工作有趣且有用,请买我一杯咖啡,这样我可以花更多时间在这个项目上!

功能亮点

ast-grep的核心是基于tree-sitter生成的抽象语法树进行代码搜索和替换的算法。它可以以直观的方式帮助您进行轻量级静态分析和大规模代码操作。

关键亮点

  • 一个直观的模式来查找和替换AST。ast-grep的模式看起来像您每天都会编写的普通代码(可以说模式与代码同构)。

  • AST遍历和操作的类似jQuery的API。

  • 使用YAML配置来编写新的linting规则或代码修改。

  • 使用编译语言编写,基于tree-sitter解析并利用多个核心。

  • 美观的命令行界面 :)

ast-grep的愿景是使抽象语法树的魔法民主化,并解放人们从繁琐的AST编程中!

  • 如果您是开源库的作者,ast-grep可以帮助您的库用户更容易地采用破坏性变更。
  • 如果您是您的团队中的技术负责人,ast-grep可以帮助您执行符合您业务需求的代码最佳实践。
  • 如果您是安全研究员,ast-grep可以帮助您更快地编写规则。

依赖关系

~19–34MB
~542K SLoC