用途:ast-grep 借助 tree-sitter 将代码解析为 AST,实现精确的模式匹配。该技能用于编写基于 AST 的代码搜索与重写规则,支持创建 lint 规则、代码现代化改造和 API 迁移,并可配置自动修复。
主要能力:规则以 YAML 定义,包含 id、language、severity、message、rule、fix 等字段。可用于仅检查的 lint 规则(用于 CI 或编辑器提示),也可加入 fix 实现自动改写。核心规则类型包括 pattern(匹配代码结构)、kind(匹配 AST 节点类型),以及 all、any、not、has、inside 等组合与关系规则。语法支持单节点 $VAR、多节点 $$$ARGS、同名捕获(要求内容相同)与非捕获 $_VAR。支持 Bash、C、Cpp、CSharp、Css、Elixir、Go、Haskell、Hcl、Html、Java、JavaScript、Json、Kotlin、Lua、Nix、Php、Python、Ruby、Rust、Scala、Solidity、Swift、Tsx、TypeScript、Yaml 等语言。
使用方式:项目级扫描需在项目根目录提供 sgconfig.yml,通过 ruleDirs 递归加载规则目录下所有 .yml 文件。运行 ast-grep scan 会自动查找 sgconfig.yml,也可用 ast-grep scan --config path/to/sgconfig.yml 指定配置。注意 ast-grep scan 需要 sgconfig.yml,而 ast-grep run -p 可独立使用。验证单条规则可执行 ast-grep scan -r rules/no-console-log.yml src/,应用修复可加 --update-all。开发流程为:先用 ast-grep -p 'pattern' src/ 探索模式,编写规则文件后验证,若误报则添加约束再验证;可用 ast-grep -p 'console.log($ARG)' --debug-query ast 调试 AST 结构。
限制:具体安装方式、版本要求与定价资料中暂未提供。