mcpField
A
ast-grep

ast-grep

官方精选Agent-ready
github.com开发者工具16.4kast-grep今天更新
代码仓库访问官网

关于 ast-grep

ast-grep 通过理解代码结构来搜索、检查和转换代码。使用模式匹配语法来精确定位代码片段,支持多种编程语言。

主要功能

  1. 01使用语法感知的模式搜索代码结构
  2. 02基于规则检查代码并报告问题
  3. 03批量重写匹配的代码片段

适用场景

  1. 01在大型代码库中查找特定的代码模式
  2. 02实施跨项目的代码质量规则
  3. 03自动化大规模的代码迁移和重构

安装

选择你的系统或包管理器,复制命令到终端运行。

$
brew install ast-grep

安装完成后运行ast-grep --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
ast-grep run -p "console.log($A)"
02
ast-grep scan

详细介绍

ast-grep

coverage badge README 配图 Discord Repology Badge Badge GitHub Sponsors Gurubase

ast-grep(sg)

ast-grep(sg) 是一款用于代码结构化搜索、lint 和重写的命令行工具。

简介

ast-grep 是一款基于抽象语法树的工具,可通过代码模式搜索代码。可以把它看作你的老朋友 grep,但它匹配的是 AST 节点,而不是文本。 你可以像编写普通代码一样编写模式。它会匹配所有具有相同语法结构的代码。 你可以使用 $ 符号加大写字母作为通配符,例如 $MATCH,以匹配任意单个 AST 节点。可以把它看作正则表达式中的点 .,但它匹配的不是文本。

试试在线 playground,体验一下!

截图

演示

在网站上查看更多截图。

安装

你可以通过 npm、pip、cargo、cargo-binstall、homebrew、scoop、mise 或 MacPorts 安装!

npm install --global @ast-grep/cli
# `pnpm approve-builds` may be needed
pip install ast-grep-cli
brew install ast-grep
点击查看更多安装方式
cargo install ast-grep --locked
cargo binstall ast-grep

# install via scoop, thank @brian6932
scoop install main/ast-grep

# install via MacPorts
sudo port install ast-grep

# try ast-grep in nix-shell
nix-shell -p ast-grep

# try ast-grep with mise
mise use -g ast-grep

你也可以从源代码构建 ast-grep。你需要安装 rustup、克隆仓库,然后

cargo install --path ./crates/cli --locked

其他平台也提供了 Packages。

命令行用法示例

ast-grep 的用法如下。

ast-grep --pattern 'var code = $PATTERN' --rewrite 'let code = new $PATTERN' --lang ts
示例
ast-grep -p '$A && $A()' -l ts -r '$A?.()'
ast-grep -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 的 AST 遍历和操作 API。

  • 使用 YAML 配置编写新的 lint 规则或进行代码修改。

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

  • 美观的命令行界面 :)

ast-grep 的愿景是让抽象语法树的魔力惠及所有人,并让人们摆脱繁琐的 AST 编程!

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

评论

支持 Markdown