用途:ast-grep(命令名 sg)是基于抽象语法树(AST)的代码搜索、lint 与重写工具,适合正则难以处理的结构化查找与替换,例如按结构查找“对 foo 的两次参数调用”,不受空白影响;也可用于变量重命名、修改函数签名等安全重构、编写自定义规则约束代码风格,以及从代码库中提取信息。
主要能力:支持元变量 $VAR 匹配单个节点、$$$ARGS 匹配零个或多个节点、$_ 非捕获通配、$$ 非捕获节点列表;区分命名节点与未命名节点,并提供 smart、cst、ast、relaxed、signature 等匹配严格度。复杂任务可用 YAML 规则配置,包含 id、language、rule、fix 等字段,支持 inside、kind、stopBy 等条件,以及正则替换、大小写转换和子节点重写器。
使用方式:命令行搜索需用单引号包裹模式,如 ast-grep -p '$A + $B' --lang ts;重写可先试运行 ast-grep -p '$A != null' --rewrite '$A' --lang ts,或加 --interactive 交互式重写,如 ast-grep -p 'var $A = $B' --rewrite 'const $A = $B' --interactive。较大项目可用 ast-grep new project 脚手架,通过 sgconfig.yml 定义规则与测试目录,并编写有效/无效用例验证规则;常用命令包括 scan、run、new、test、lsp。
适用场景:结构化搜索、批量重构、自定义 lint、代码分析。
限制:资料未提供具体支持语言清单、性能数据、收费与平台信息;模式语法、严格度与规则字段的完整细节需查阅对应参考文档。