SuperAPI AI 工具集

pr-reviewer

编程与开发

查看项目

更新于 10-15 17:26

技能介绍

用途:自动审查 GitHub 拉取请求(PR)。分析 diff,识别安全问题、错误处理缺口、风格问题与测试覆盖情况,输出结构化报告。

前提:已安装并认证 gh CLI(gh auth status);具备仓库访问权限(只读起步,发评论需写权限);可选 golangci-lint(Go)与 ruff(Python)做 lint。

用法:

  • 审查当前仓库全部开放 PR:scripts/github/pr-reviewer.sh check
  • 审查指定 PR:scripts/github/pr-reviewer.sh review 42
  • 以 GitHub 评论发布审查:scripts/github/pr-reviewer.sh post 42
  • 查看全部开放 PR 状态:scripts/github/pr-reviewer.sh status
  • 列出未审查 PR(可用于心跳/定时任务):scripts/github/pr-reviewer.sh list-unreviewed

配置(环境变量,未设置时从当前 git 仓库自动探测):PR_REVIEW_REPO(owner/repo)、PR_REVIEW_DIR(本地检出路径,用于 lint)、PR_REVIEW_STATE(默认 ./data/pr-reviews.json)、PR_REVIEW_OUTDIR(默认 ./data/pr-reviews/)。状态文件记录已审查 PR 及其 HEAD SHA;输出目录存放 Markdown 报告。

检查项:安全(硬编码凭据、AWS 密钥、代码中的密钥)、错误处理(Go 丢弃错误如 _ :=、Python 裸 except、未检查的 Close())、风险(panic()、process.exit())、风格(生产代码中的 fmt.Print/print()/console.log、超长行)、TODO 标记(TODO、FIXME、HACK、XXX)、测试覆盖(改了源码却没有对应测试改动)。

智能重审:按 PR 记录 HEAD SHA,仅在有新提交时重新审查;用 review <PR#> 可强制重审。

报告内容:PR 元数据(作者、分支、变更)、提交列表、按语言/类型分类的变更文件、带文件/行号/类别/上下文的自动 diff 发现、测试覆盖分析、本地 lint 结果(本地有检出时)、汇总结论(🔴 SECURITY / 🟡 NEEDS ATTENTION / 🔵 MINOR NOTES / ✅ LOOKS GOOD)。

集成:可在心跳、cron 或 CI 中周期性调用;示例:UNREVIEWED=$(scripts/github/pr-reviewer.sh list-unreviewed),若非空则执行 check。

扩展:分析模式按语言组织,可在 analyze_diff() 的相应模式列表中追加新模式,例如 go_patterns.append((r'^+.*os.Exit(', 'RISK', 'Direct os.Exit() — consider returning error'))。

限制:资料未提供定价、支持平台范围、性能数据或错误码说明。