AI 代码审查清单:五层过滤
一句话定义
AI 代码审查清单是五层过滤网——正确性、安全性、一致性、可维护性、测试性——每层一组可勾选检查项,专门拦截 AI 产出中「编译通过、测试全绿、但仍然是错的」的内容。
为什么重要
AI 代码的外观质量(格式、命名、注释)往往高于人类新手,这会造成「看起来专业」的错觉,让人放松到比审人写代码更松的标准。而 AI 的高发缺陷恰恰藏在清单覆盖的地方:看起来正确的边界处理、被省略的错误分支、第二套编码风格、幽灵依赖。清单的价值是把「凭手感审查」变成「逐层过网」,并把审查标准团队化——所有人对「合格」的定义一致。
前置知识
kp-013(Diff 审查工作流——本清单是流程中第 5 步「清单放行」的具体内容)。
核心概念
第一层 · 正确性:边界值(空/零/单元素/最大值);错误分支是否实现还是被静默吞掉;并发与幂等(AI 最易忽略);数据类型与精度(分/元、时区、编码)。
第二层 · 安全性:注入风险(拼接 SQL/命令/路径);对外部输入的校验;新增依赖是否核验过(kp-022);硬编码的密钥或敏感值(kp-024)。
第三层 · 一致性:是否复用了仓库已有的工具函数(AI 爱重造轮子);错误处理风格、命名风格是否与仓库一致;是否引入第二套抽象/框架。
第四层 · 可维护性:过度防御(无意义的 try/except 层层包裹);死代码与残留调试输出;抽象层级是否恰当(不为炫技引入间接层);注释说的是「为什么」还是复述代码。
第五层 · 测试性:新行为是否对应新测试;测试是否独立(不依赖顺序与外部状态);断言强度(对照 kp-012 弱断言清单)。
原理与机制
清单按「AI 缺陷分布」定制与传统评审的关键差异:人类评审的重心常在可读性与设计,而 AI 代码的外观可读性普遍不错,重心必须移到「语义正确性与一致性」——这些恰是概率生成最容易失守、又最难被编译器和测试自动捕获的区域。五层的顺序也有讲究:正确性与安全性是放行前提(一票否决),一致性与可维护性影响长期成本,测试性闭环验证。每层检查项都设计成「可观察」的(看 diff 能判断),避免「设计是否优雅」这类无法收敛的主观项。
实例或案例
操作步骤(10 分钟 AI diff 审查节奏):
- 通读 diff 一遍建立全貌(2 分钟),不逐行。
- 第一、二层逐项过(4 分钟)——这层不过直接打回,无需继续。
- 第三层:对每个新工具函数问一句「仓库里已有吗」;对风格漂移点做标记。
- 第四层:找出所有 try/except 与注释,判断是否过度防御/复述式注释。
- 第五层:核对测试映射(行为→用例),抽 1 个用例读断言强度。
- 结论:放行 / 带问题放行(列出整改项)/ 打回。
审查意见模板(对 AI 或对同事):
[正确性] order.py:92 —— amount_cents 为 0 时的分支缺失,规格 3.4 要求全额退款路径。
[一致性] utils.py 新增的 format_currency 与 src/format.py 已有实现重复,建议复用。
[测试性] test_export.py:18 断言仅检查返回非空,请改为逐字段断言。排错清单:
- 看着对但说不出为什么对 → 回到规格,让 diff 与条目逐条对映射,映射不出的打回。
- 清单走过场(每层都秒过) → 说明你在被「外观质量」催眠;强制每层至少找出一个提问。
- 同类问题反复出现 → 把它升级进 kp-006 规则文件的禁区,从生成端拦截。
公式或模型
本节不适用:清单执行质量无量化公式;团队可跟踪「评审拦效率故率」观察清单有效性。
图示
diff ──▶ ①正确性 ──▶ ②安全性 ──▶ ③一致性 ──▶ ④可维护性 ──▶ ⑤测试性 ──▶ 放行
└────── ①② 一票否决;③④⑤ 问题可整改 ──────┘直观类比
像食品出厂的五道检验关:外观再好也要逐关过——菌落(正确性)、毒素(安全)、配方标准(一致性)、包装工艺(可维护性)、留样复检(测试性),跳任何一关都是赌运气。
常见误区
- 被「专业外观」降低警惕:AI 代码要按高于人类新手的清单标准审,而不是更低。
- 清单当形式:每层「至少提出一个问题」是防止走过场的硬规则。
- 只审新增不审删除:AI diff 里被删除的校验与测试同样是风险点。
与其他知识点的关系
kp-013 提供流程与节奏,本节提供检查内容;kp-022/024/025 分别展开第二层的依赖、密钥与高频错误模式。
自测题
要点:正确性、安全性、一致性、可维护性、测试性;正确性与安全性一票否决。
要点:概率生成最易在语义与仓库惯例上失守,而其外观可读性常造成虚假的安全感。
- 五层过滤是什么?哪两层一票否决?
- 为什么 AI 代码的审查重心要移向语义正确性与一致性?
延伸阅读
《Code Complete(第2版)》Steve McConnell——评审检查单方法的经典出处。