GitHub PR Code Review
通过 GitHub App 自动检查 Pull Request,并在 PR 中提供总结与行内评论。
公网 MonkeyScan 当前通过 GitHub App 接入仓库,并为 GitHub Pull Request 提供自动 Review 和评论闭环。GitLab 仓库目前可用于全量安全扫描,暂不提供公开的 MR Review 接入。
什么时候会触发 Review
仓库“已接入”只表示 MonkeyScan 获得了访问权限,不代表自动 Review 已经开启。自动 Review 还需要满足:
- 目标仓库已启用自动 Review;
- PR 的目标分支符合仓库配置;
- 仓库授权仍然有效;
- 当前变更不与同一版本的运行中任务重复。
满足条件后,PR 创建、更新或新增提交会触发 Review。Webhook 重复投递不会重复创建同一次 Review。
你也可以在 GitHub PR 评论中使用 @monkeyscan:
@monkeyscan 请重新评审当前改动,重点检查权限绕过和敏感信息泄露。明确要求“重新评审”或“评审当前改动”时,MonkeyScan 会尝试触发一次完整 PR Review,即使仓库没有开启自动 Review;仓库仍需完成接入,授权和目标分支也必须有效。同一个 head commit 已有任务运行时,不会再创建重复任务。
Review 检查哪些内容
Code Review 引擎只围绕当前变更工作,但会按需读取相关文件、符号和历史发现来理解上下文。它重点检查:
- 安全与隐私;
- 数据完整性与集成;
- 功能正确性;
- 稳定性与可用性;
- 性能与可扩展性;
- 可维护性与代码质量。
仓库可以选择 Review 风格、目标分支和关注类别,也可以配置仓库级规则。通过 @monkeyscan 生成的规则建议默认只是候选,确认并启用后才会影响后续 Review。
增量 Review 是怎么工作的
PR 在线性新增提交时,MonkeyScan 只评审上一次成功检查之后的增量,减少重复评论。遇到 rebase、force push 或无法可靠确定提交祖先关系时,会回退到当前 PR 的完整变更范围,优先避免漏审。
Review 同时执行两件事:
- 检查本次变更,生成 walkthrough 和新的行内问题;
- 复核历史问题在新提交中是否仍存在、位置是否变化或已经修复。
因此,同一个问题在后续提交中通常会延续原有生命周期,而不是每次都创建一条全新的发现。关闭评论线程或回复“已修复”不等于问题已经被采纳;采纳以系统在后续代码中确认问题已修复为准。
Review 结果怎么看
GitHub PR 中通常会看到:
- 一条本次改动的整体 walkthrough;
- 对具体代码行的评论,包含严重程度、类别、问题说明和修复建议;
- 在可表达时给出的建议 Diff。
建议 Diff 需要人工检查
建议 Diff 不是可以盲目应用的补丁。它没有运行你的完整测试,也可能缺少业务约束;合并前应检查行为变化并执行相应测试。
Review 只检查本次变更及必要上下文,不等价于全仓库安全扫描。旧代码中的既有问题如果没有被当前改动触达,可能不会出现在 Review 中。
没有触发 Review 时先检查什么
按以下顺序排查:
- 仓库是否已同步到 MonkeyScan,授权是否有效;
- 该仓库是否开启自动 Review;
- PR 的目标分支是否在配置范围内;
- 当前 head commit 是否已有 Review 正在运行或已经完成;
- Webhook 或评论事件是否属于受支持的事件类型;
- 使用
@monkeyscan时,是否是新建评论且包含真实 mention。编辑旧评论不会重新触发。
MonkeyScan 文档