跳到主要内容

合并前代码评审闸门

收藏0

提交合并前对代码变更逐项检查正确性、边界、并发、性能、安全与可读性,输出结构化评审报告与三态结论

让 AI 安装

自由如风最新版本 0.1.0更新于 2026-11-02下载 0 次

SKILL.md

合并前代码评审闸门#

在代码提交、合并或发版前,对本次变更做逐项评审:拦截正确性、边界、并发、性能、安全、可读性六类缺陷并产出评审报告。纯指令技能:不带脚本、不联网、不写任何文件,产出直接在对话中给出。

触发时机#

  • 用户要求「review / 评审 / 看看这段改动能不能合」;
  • 提交 PR、合并分支、发版前的最后一道检查。

前置输入#

  1. 先读 diff(变更范围),再读 diff 涉及文件的完整上下文——只看 diff 容易误判;
  2. 明确本次变更的意图(修什么、为什么改);意图不明时先确认意图本身,不猜。

六维检查清单(逐项过,不得跳项)#

1 正确性#

  • 逻辑是否实现了声明的意图;反向用例是否成立;
  • 返回值与错误分支是否都被处理;空值、零值、空集合是否安全;
  • 状态机与流程的每个分支是否可达且正确。

2 边界条件#

  • 输入为空、单元素、极大值、非法值时的行为;
  • 数组与字符串越界、整数溢出、浮点精度;
  • 时间边界:月末、闰年、时区、毫秒截断。

3 并发与状态#

  • 共享状态是否有锁保护;锁粒度与加锁顺序是否可能死锁;
  • 异步回调的时序假设是否成立;
  • 重试、超时、部分失败之后的状态一致性。

4 性能#

  • 循环内是否有可外提的 IO 或查询;N+1 查询;
  • 数据量增长后的复杂度趋势——不是当前快,是十倍量级后是否还可用;
  • 不必要的全量拷贝与重复计算。

5 安全#

  • 外部输入是否校验;拼接 SQL、命令、路径是否可注入;
  • 敏感信息(密钥、个人信息)是否落日志;
  • 权限校验是否在入口处统一完成。

6 可读性#

  • 命名是否表达意图;函数是否只做一件事;
  • 注释解释「为什么」而非复述「做什么」;
  • 与项目既有风格是否一致。

输出格式(评审报告)#

编号位置(文件:行)维度严重级别问题建议修法
  • 严重级别:P0 阻断合并(正确性/安全);P1 应修(并发/性能);P2 建议(可读性)。
  • 没有发现问题的维度也要写明「已检查,未发现」——不写视为漏检。

结论三态#

  • 通过:无 P0、无 P1;
  • 有条件通过:有 P1,列出合并前必须修完的编号;
  • 驳回:有 P0,说明理由与最小修复路径。

红线#

  • 不以「能编译、能跑」替代评审——能跑不等于正确;
  • 不用「整体没问题」这类总评替代逐项枚举;
  • 发现 P0 必须同时给出可执行的修复建议,不能只报不修。

用途与依赖

作者没写,这些是平台读文件后整理的,以文件为准。

使用示例

请求:这是我这次改的 diff,帮我看看能不能合到主分支。

预期

先向你确认本次变更的意图(修什么、为什么改),意图明确后再读取 diff 以及 diff 涉及文件的完整上下文。然后按六个维度逐项检查:正确性(逻辑是否实现意图、返回值与错误分支是否处理、空值零值空集合是否安全、状态机分支是否可达)、边界条件(空输入、单元素、极大值、非法值、越界、溢出、浮点精度、月末、闰年、时区、毫秒截断)、并发与状态(共享状态加锁、锁粒度与加锁顺序、异步回调时序、重试与超时后的状态一致)、性能(循环内 IO 或查询、N+1、数据量增长后的复杂度、重复计算与全量拷贝)、安全(外部输入校验、SQL、命令、路径注入、敏感信息落日志、入口处权限校验)、可读性(命名、函数职责、注释解释为什么、是否符合项目风格)。最终输出一张评审报告表格,每行包含编号、位置(文件:行)、维度、严重级别(P0 阻断合并、P1 应修、P2 建议)、问题、建议修法;没有发现问题的维度也写明“已检查,未发现”。最后给出三态结论:无 P0 且无 P1 为通过;有 P1 为有条件通过,并列出合并前必须修完的编号;有 P0 为驳回,说明理由和最小修复路径。

适用场景
  • 提交 PR 或合并分支前,检查这段改动能不能合
  • 用户说“帮我 review 一下这个 diff”
  • 发版前的最后一道代码检查
  • 针对某次变更排查边界条件、并发、性能、安全、可读性隐患
  • 需要在合并前给出通过、有条件通过或驳回的明确结论
输入
  • 本次变更的 diff(变更范围)
  • diff 涉及文件的完整上下文代码
  • 本次变更的意图(修什么、为什么改)
输出
  • 结构化评审报告表格(编号、位置、维度、严重级别、问题、建议修法)
  • 每个维度的检查结论,包括未发现问题的说明
  • 三态结论:通过、有条件通过(附必须修完的编号)或驳回(附理由与最小修复路径)
  • 对 P0 问题的可执行修复建议
运行环境
未说明
依赖
无