pr-reviewer

🔍 自动审查 GitHub PR,拦截安全与风格隐患

GitHub PR 自动代码审查工具,支持安全漏洞、错误处理、代码风格检测,可集成 linter 生成结构化报告,适合团队代码质量管控。

收藏
16.5k
安装
6.5k
版本
1.0.1
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

PR Reviewer 是一个面向 GitHub 仓库的自动化代码审查脚本工具,主要用于在合并前捕获潜在问题。它通过 gh CLI 获取 PR 的 diff 内容,结合正则模式匹配和本地 linter(golangci-lintruff)执行多维度分析,最终生成 Markdown 格式的审查报告。

工作流程
1. 调用 gh pr view/diff 获取 PR 元数据和变更内容

2. 按语言分类(Go/Python/JavaScript/TypeScript)应用内置检测模式

3. 可选执行本地 lint 检查(需仓库 checkout)

4. 生成结构化报告并保存至指定目录

5. 支持将评论直接发布到 GitHub PR

检测维度

| 类别 | 检测内容 |
|------|---------|
| 🔴 安全 | 硬编码凭证、AWS 密钥、secrets 泄露 |
| 🟡 错误处理 | Go 的 `_ :=` 丢弃错误、Python 裸 `except:`、未检查的 `Close()` |
| 🟠 风险代码 | `panic()`、`process.exit()` 等危险调用 |
| 🔵 代码风格 | 生产环境残留 `fmt.Print`/`console.log`、超长行 |
| 📝 TODO 标记 | TODO/FIXME/HACK/XXX 追踪 |
| 📊 测试覆盖 | 源文件变更但无对应测试文件变更 |

智能重审机制:记录每个 PR 的 HEAD SHA,仅在新提交推送时触发重新审查,避免重复劳动。

显著优点

  • 开箱即用:单一 bash 脚本,依赖仅为 gh CLI 和可选 linter
  • 多语言支持:覆盖 Go、Python、JavaScript/TypeScript 主流栈
  • 状态持久化:JSON 状态文件跟踪审查历史,支持 cron/heartbeat 集成
  • 可扩展架构:通过修改 analyze_diff() 中的 pattern 列表即可添加新规则
  • CI 友好:返回码和 list-unreviewed 子命令便于自动化流水线集成

潜在局限与风险

| 局限 | 说明 |
|-----|------|
| 静态分析限制 | 基于正则的模式匹配,无法替代深度语义分析或 SAST 工具(如 CodeQL、Semgrep) |
| 误报率 | 简单的正则可能产生误报(如注释中的 "TODO" 被标记) |
| gh CLI 依赖 | 完全依赖 GitHub CLI 的认证状态,token 权限不足会导致静默失败 |
| 本地 lint 耦合 | 完整功能需要本地仓库 checkout,纯远程模式仅能做 diff 分析 |
| 并发安全 | 状态文件为本地 JSON,多进程同时写入可能存在竞态条件 |
| 无策略配置 | 缺乏 severity 阈值、忽略规则、团队配置等高级功能 |

适用人群

  • 小型团队需要轻量级、零成本的 PR 预检流程
  • 个人开发者管理多个开源项目,需要批量审查 open PR
  • 已有 CI 流水线,希望补充快速安全扫描层(非替代完整 SAST)
  • 需要生成结构化审查报告用于审计或团队同步的场景

常规风险

1. 凭证泄露风险:脚本需 gh CLI 认证,若运行环境(如共享 CI runner)未妥善隔离,可能导致 GitHub token 暴露
2. 权限放大post 子命令需要写权限,错误的 token 配置可能意外暴露评论到生产仓库

3. 规则绕过:简单的正则模式可被刻意构造的代码绕过(如字符串拼接的 os.Exit

4. 数据残留:状态文件和报告目录默认写入 ./data/,若未加入 .gitignore 可能意外提交敏感信息(如内部 PR 分析结果)

5. 供应链风险:依赖 gh CLI 和 linter 的二进制,若安装源不可信可能引入恶意工具链

pr-reviewer 内容

暂无文件树

手动下载zip · 8.1 kB
contentapplication/octet-stream
请选择文件