用途:该技能通过抽象语法树(AST)进行结构化代码搜索、lint 与转换,区别于正则搜索,能理解代码语法并按 AST 结构匹配模式,适用于正则难以表达的嵌套调用、跨文件语义重构、SQL 注入与 XSS 等漏洞模式扫描、API 迁移与弃用处理,以及在语法层面强制代码风格。
主要能力:支持模式搜索、基于规则的扫描、代码重写与规则测试。模式语法中 $VAR 捕获单个 AST 节点,$$$ARGS 可变捕获零个或多个节点,$$_ 为匿名单节点捕获。支持 Python、JavaScript、TypeScript、Go、Rust、Java、Kotlin、C、C++、Ruby、Swift、C#、PHP、Scala、Elixir、Lua、HTML、Vue、Svelte 等 40 多种语言。规则支持 inside、has、follows、precedes、not、all、any 等关系与组合操作符。
使用方式:安装可用 brew install ast-grep、npm install -g @ast-grep/cli 或 cargo install ast-grep。模式搜索执行 sg run 并指定 pattern、lang 与源目录;规则扫描执行 sg scan 并指定 config 指向 sgconfig.yml;代码转换在 sg run 中加 rewrite;规则校验执行 sg test。示例:sg -p 'authenticate($$$)' --lang python -r src/。YAML 规则可设置 id、language、rule、fix、message、severity。
适用场景:类层次分析、函数签名匹配、导入依赖映射、API 使用模式检测、安全规则扫描、批量重构。与 MoAI-ADK 集成时作为 AST_ANALYZER 类型,支持 Write/Edit 后自动安全扫描,并自动允许 Bash(sg:) 与 Bash(ast-grep:)。
限制:资料未提供具体性能基准的完整数据、收费与价格信息、平台支持范围及效果保证;复杂多文件转换、自定义语言配置与 CI/CD 集成细节需参考其模块文档。