Codex Review 真能发现问题吗?我用一个测试全绿的 diff 实测
Codex Review 真能发现问题吗?我用一个测试全绿的 diff 实测
代码提交前测试已经全绿,还需要 Review 吗?这次我用一个 4 文件的 Node.js 项目实测:第一次改动 4 项测试全部通过,git diff --check 也正常,Codex Review 仍找到一个可以复现的优惠码匹配回归。修复并补反例后,6 项测试通过,第二次 Review 没有再报告问题。
1. 先确认本机 Review 参数
本次实际使用 codex-cli 0.148.0:
codex review --help
当前帮助中的主要范围:
| 参数 | 范围 |
|---|---|
--uncommitted |
staged、unstaged 和 untracked 改动 |
--base <BRANCH> |
相对指定基线分支的改动 |
--commit <SHA> |
指定提交引入的改动 |
本文检查提交前改动,使用:
codex review --uncommitted
本机帮助虽显示可以带 [PROMPT],但 codex review --uncommitted "..." 实际返回参数冲突,退出码 1。因此本文不把组合命令写成成功用法,参数以本机真实结果为准。
2. 示例项目与明确规则
项目名:codex-review-shipping-demo。
codes/codex-review-shipping-demo/
├── README.md
├── package.json
├── src/shipping.js
└── test/shipping.test.js
规则很短:会员免运费;订单不低于 99 元免运费;优惠码精确等于 FREESHIP 时免运费;其他订单收 12 元。
“精确等于”是 Review 结论能否成立的依据。没有 README 或需求,只看实现,无法判断宽松匹配是不是产品设计。
3. 第一次 diff:4 项测试全部通过
第一次加入优惠码时,我写成:
if (isMember || subtotal >= 99 || couponCode.includes("FREESHIP")) {
return 0;
}
测试只覆盖合法优惠码:
assert.equal(calculateShipping(50, false, "FREESHIP"), 0);
真实结果:4 项测试通过、0 失败、退出码 0,git diff --check 也通过。

图 1:测试全绿并不代表未覆盖输入没有问题。
4. Review 前先检查发送范围
--uncommitted 会覆盖 staged、unstaged 和 untracked 改动。运行前先看:
git status --short
git diff --stat
git diff
git diff --cached
本次只有两个文件变化:
M src/shipping.js
M test/shipping.test.js
2 files changed, 6 insertions(+), 2 deletions(-)
如果状态里混有真实 API Key、Authorization、Cookie、客户代码或不准备发送的文件,应先停止并清理,不能等截图时再打码。
5. 第一次 Review 找到一个问题
codex review --uncommitted
$LASTEXITCODE
退出码为 0,核心问题如下:
[P1] Require exact coupon-code equality - src/shipping.js:6
NOTFREESHIP 或 FREESHIP-EXPIRED 也会命中 includes("FREESHIP"),
从而错误免除运费。README 要求精确匹配,应使用严格相等判断。

图 2:保留相对文件、行号、触发输入和影响;私人路径、Provider、模型、会话 ID 与认证信息已隐藏。
这条问题是否一定属于 P1 可以讨论,但问题本身可以直接复现,不依赖相信模型。
6. 用反例人工复核
我输入两个包含目标字符串、但不应生效的优惠码:
NOTFREESHIP
FREESHIP-EXPIRED
修复前,两者都返回运费 0;订单金额只有 50 元,也不是会员,正确结果应为 12。

图 3:反例证明这不是代码风格建议,而是会错误免邮的行为回归。
如果 Review 只写“建议用 ===”,却不给触发输入和影响,我不会直接接受。
7. 修复并补回归测试
实现改为严格相等:
if (isMember || subtotal >= 99 || couponCode === "FREESHIP") {
return 0;
}
同时把两个反例加入测试:
for (const couponCode of ["NOTFREESHIP", "FREESHIP-EXPIRED"]) {
test(`does not accept ${couponCode}`, () => {
assert.equal(calculateShipping(50, false, couponCode), 12);
});
}
修复后 6 项测试全部通过,两个反例均返回 12,git diff --check 通过。
8. 第二次 Review 闭环
我对最终 diff 再运行一次:
codex review --uncommitted
第二次退出码为 0,没有报告新问题,核心结果是精确匹配保留原行为,正向和反向测试均已覆盖。

图 4:6 项测试通过,第二次 Review 未报告新问题。
这不等于代码被证明完全正确。最终仍要人工查看 git diff,确认没有临时日志、配置和无关文件。
提交前清单
[ ] codex review --help 与本机版本一致
[ ] git status --short 没有意外文件
[ ] git diff 与 git diff --cached 已人工查看
[ ] 测试通过并记录退出码
[ ] Review 问题包含文件、输入和影响
[ ] 每条问题都已用规则、源码或反例复核
[ ] 修复后补了回归测试
[ ] 最终 diff 已二次 Review 和人工检查
Codex Review 不是批准按钮。它负责从测试已通过的 diff 里再找遗漏;反例负责证明,测试负责防止同一问题回来。
llapi.org 配置提醒
Codex Review 会使用本机配置的模型服务。若使用 llapi.org,请到 https://llapi.org 查看当前申请入口、Base URL 和服务规则;本文不承诺模型效果、价格、额度或稳定性。
只使用 <YOUR_LLAPI_API_KEY> 占位符。真实 Key、Authorization、Cookie、完整配置和用户私密数据不能进入 Review 输入、文章、截图或 Git。
葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。
更多推荐


所有评论(0)