SuperAPI AI 工具集

semgrep-coderabbit-review

编程与开发

查看项目

更新于 10-15 12:39

技能介绍

用途

本技能提供一套两阶段代码审查工作流,将快速模式检测(Semgrep)与 AI 驱动的语义分析(CodeRabbit)结合,以在提交或合并前获得更全面的覆盖与效率。

主要能力

第一阶段:快速模式检测(10-20 秒)

运行 Semgrep 捕获安全模式、架构违规与代码质量问题,包括:

  • 硬编码密钥(API key、token、密码)
  • SQL 注入模式(字符串拼接、未验证输入)
  • XSS 漏洞(不安全的 {@html}、模板注入)
  • 受保护路由缺失认证守卫
  • 绕过 Repository Pattern 的直接数据库访问
  • 弱加密(MD5、SHA1、已弃用函数)
  • 代码质量(console.log、any 类型、注释代码)

命令:

semgrep scan --config .semgrep.yaml --error

第二阶段:AI 语义审查(5-30 分钟)

运行 CodeRabbit 分析代码逻辑、架构与业务上下文,包括:

  • 逻辑正确性与边界情况
  • 行为变更上的测试覆盖缺口
  • 错误处理与韧性
  • 架构与设计模式
  • API 契约与破坏性变更
  • 多租户隔离与安全
  • 性能优化机会

命令:

coderabbit --prompt-only -t uncommitted

合并报告

  • 按优先级排列的发现(CRITICAL → HIGH → MEDIUM → LOW)
  • 每个问题的清晰说明与修复指引
  • 性能指标与改进建议
  • 合规验证(安全、架构、代码质量)

使用方式

  1. 在 OpenCode 中加载技能:/skill semgrep-coderabbit-review
  2. 安装插件:安装 opencode-semgrep-coderabbit-plugin 以获取工具
  3. 运行审查:使用提供的命令之一
  4. 遵循工作流:第一阶段(Semgrep)→ 第二阶段(CodeRabbit)→ 修复 → 验证

执行顺序:

  • 第一阶段 Semgrep:运行扫描;若失败则修复所有违规并重跑直至通过;若通过则进入第二阶段。
  • 第二阶段 CodeRabbit:运行审查、评估发现、修复问题。CRITICAL 立即修复(安全、认证、数据损坏);HIGH 合并前修复(架构、破坏性变更);MEDIUM 合理时修复(代码质量);LOW 可选考虑(建议)。
  • 验证:重跑两个工具,确认未引入新问题。

适用场景

  • 提交前审查未提交变更
  • 审计特定功能实现
  • 验证 API 层合规
  • 检查数据库查询安全
  • 审查前端代码(Svelte 5、TypeScript)
  • 合并前安全与架构验证
  • 确保多租户隔离与数据保护
  • 验证 API 契约(OpenAPI 同步)

不适用场景:

  • 仅需快速语法/linter 检查(直接使用 linter)
  • 样式或格式化修复(使用 Prettier/ESLint)
  • 文档审查(使用 Codex 安全审查)

各层审查重点

API 层(Fastify 路由)

Semgrep 捕获:受保护路由缺失 preHandler: [fastify.authenticate]、直接 db.query() 而非 Repository Pattern、原始查询中的 SQL 注入模式、路由定义中的硬编码密钥。

CodeRabbit 捕获:OpenAPI schema 不匹配、HTTP 状态码错误(创建应为 201、删除应为 204 等)、错误响应格式不一致、限流配置错误、API 契约破坏性变更。

数据库层(Repository Pattern)

Semgrep 捕获:原始 SQL 查询(应使用 Oracle 参数化查询)、缺失错误处理、路由中的直接数据库访问。

CodeRabbit 捕获:参数化正确性、用户上下文作用域(多租户隔离)、错误恢复逻辑、查询性能模式。

前端层(Svelte 5、TypeScript)

Semgrep 捕获:旧版 Svelte 4 语法($:、export let、bind:)、未净化的 {@html}(XSS 风险)、any 类型、console.log 语句。

CodeRabbit 捕获:Svelte 5 runes 合规($state、$derived 等)、组件逻辑正确性、性能(N+1 查询、不必要的重渲染)、可访问性问题、移动端响应式。

共享类型与契约

Semgrep 捕获:共享定义中的 any 类型、硬编码值(应为常量或环境变量)。

CodeRabbit 捕获:Zod schema 完整性(匹配 OpenAPI 定义)、类型推断正确性、破坏性变更文档。

优先级参考

  • CRITICAL(阻塞):密钥、认证绕过、SQL 注入、XSS、数据泄露——合并前必须修复
  • HIGH(架构):缺失守卫、schema 不匹配、破坏性变更、竞态条件——合并前修复
  • MEDIUM(质量):弱加密、错误处理不佳、类型安全、重复——合理时修复
  • LOW(打磨):建议、优化、风格——可选考虑

常见问题与修复

安全:硬编码密钥移至 process.env.SECRET 或 OCI Vault;SQL 字符串拼接改用参数化绑定;{@html userContent} 改用 {@html DOMPurify.sanitize(userContent)};缺失认证守卫添加 preHandler: [fastify.authenticate];console.log(token) 移除或使用不含密钥的安全日志。

架构:await fastify.db.query(...) 改用 await request.repos.entity.method(ctx);缺失 DbContext 时向所有数据库操作传递用户 ID 上下文;Svelte 的 export let prop 改用 let { prop } = $props();状态码修正(创建 201、删除 204、验证 400);any 类型改为显式类型或带类型守卫的 unknown。

代码质量:生产环境 console.log 移除或使用日志层;MD5 改用 crypto.subtle.digest('SHA-256', ...);补充测试覆盖;重复逻辑提取为可复用函数/组件;N+1 查询改为批量查询或数据库 join。

效率提示

  • 先修复 Semgrep:模式确定、验证快、无歧义。
  • 仔细阅读 CodeRabbit:它提供上下文与推理,可用行内评论澄清。
  • 批量修复相似问题:不要在不同问题类型间切换上下文,每批后运行单元测试。
  • 最多 3 轮:若需超过 3 个审查周期,拆分为更小的 PR。
  • 边改边测:每批修复后运行单元测试,立即验证 Semgrep 通过,提交前运行一次 CodeRabbit。

相关技能与参考

  • 插件:opencode-semgrep-coderabbit-plugin(为本技能提供工具)
  • 文档:AGENTS.md、.semgrep.yaml、.coderabbit.yaml
  • Repository Pattern:packages/database/src/repositories/
  • API 示例:apps/api/src/routes/

故障排查

  • Semgrep 超过 30 秒:变更集过大或模式复杂——在更小子集上运行或按规则过滤。
  • CodeRabbit 超过 30 分钟:变更过大(>500 行)——拆分为更小 PR。
  • 发现过多:代码质量债务积累——修复 critical/high,为 medium/low 安排后续。
  • 重跑出现相同问题:修复不完整或理解有误——重读反馈,向 CodeRabbit 请求澄清。
  • Semgrep 误报:规则过宽或上下文特定——审查规则定义,若安全可标记为预期。
  • 工具反馈冲突:工具视角不同——信任 Semgrep(确定性),结合上下文验证 CodeRabbit。

限制

  • 需要安装并配置 opencode-semgrep-coderabbit-plugin(>= 1.0.0)。
  • 需要 .semgrep.yaml 与 .coderabbit.yaml 配置文件。
  • 不适用于仅需语法/linter 检查、样式格式化或文档审查的场景。
  • 具体收费、价格、平台支持范围等资料暂未提供。

版本:1.0;最后更新:2026 年 1 月 22 日;状态:Production Ready。