SuperAPI AI 工具集

ast-grep-rule-crafter

编程与开发

查看项目

更新于 10-15 22:15

技能介绍

用途:产出可直接运行的 ast-grep YAML 规则,用 tree-sitter 将代码解析为 AST,实现结构化搜索、lint 与机械改写。核心要求是规则经正例与反例夹具验证,既能命中目标,也不误伤相似代码。

主要能力:lint 规则(pattern + message + severity)用于 CI 或编辑器提示;需要自动修复时在原规则追加一行 fix,例如 fix: logger.log($$$ARGS),并用 ast-grep scan -r rules/no-console-log.yml --update-all src/ 应用(不加该标志仅报告)。项目扫描需在根目录提供 sgconfig.yml,其中用 ruleDirs 指定规则目录,再执行 ast-grep scan;ast-grep run -p 可单独使用,不依赖配置文件。语法要点:$VAR 匹配单节点,$$$ARGS 匹配多节点,同名变量要求内容一致,$_VAR 为非捕获,$$VAR 可捕获未命名节点;组合规则包括 pattern、kind、all、any、not、has、inside 等。

使用方式:先用 ast-grep -p 'console.log($ARG)' src/ 在 CLI 探索模式,必要时加 --debug-query ast 检查节点类型;再写规则文件并分别对正例与反例目录执行 ast-grep scan -r rule.yml fixtures/ 验证,若反例被命中则通过 not、inside、has 等约束收窄;最后按模板以 Goal、Rule、Fix、Validation、Notes 五部分交付,而非裸 YAML。

适用场景:跨多个文件的结构化模式匹配与机械改写。限制:纯文本或正则替换、单文件一次性编辑、依赖类型语义的重构、主观代码质量评审、格式化或导入排序,均不适合本技能。支持语言包括 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。