SuperAPI AI 工具集

ast-grep

编程与开发

查看项目

更新于 10-15 23:46

技能介绍

用途:ast-grep(命令名 ast-grep 或 sg)按抽象语法树结构搜索代码,而非按文本匹配,适用于查找代码模式、批量重构、检测反模式。

主要能力:支持按语言指定模式搜索,也可在目录中自动识别语言;模式中的元变量可匹配节点。$VAR 匹配单个 AST 节点(仅大写,如 $MOD、$_、$_123);$$$VAR 匹配零个或多个节点(如函数参数、语句);$_VAR 为非捕获变量,同名可匹配不同内容。模式必须是合法可解析代码,例如 import { $X } from "$Y" 可用,from $X 会失败。

使用方式:搜索示例:ast-grep run -l ts --pattern 'console.log($X)' src/;目录内自动识别语言:ast-grep run --pattern '$FUNC()' agent/extensions/。常见模式包括查找 barrel 文件再导出:ast-grep run -l ts --pattern 'export * from "$Y"' ./、ast-grep run -l ts --pattern 'export { $$$X } from "$Y"' ./、ast-grep run -l ts --pattern 'export type * from "$Y"' ./;查找某模块的全部导入:ast-grep run -l ts --pattern 'import { $$$X } from "$MOD"' ./;查找特定结构的函数调用:ast-grep run -l ts --pattern 'console.log($MSG)' ./、ast-grep run -l ts --pattern 'fetch($URL).then($H)' ./;检测反模式(如 Promise.all 内的 await):ast-grep run -l ts --pattern 'await $X' ./ --selector call_expression --pattern 'Promise.all($$_)'。

提示与限制:可用 --debug-query=ast 查看解析后的 AST 结构,并在 playground 校验模式;模式若无法解析会静默失败,需用 --debug-query 验证。资料未提供安装方式、收费、平台支持等更多信息。