AI 时代的代码审查:解决代码生成的非对称性
生成式 AI 的出现从根本上改变了软件开发生命周期。虽然编写代码所需的时间大幅下降,但审查代码所需的时间却保持不变,甚至有所增加。这造成了一种危险的非对称性:代码生成的速率远远超过了人类进行有效审计的能力。
当生成一个 pull request (PR) 的成本趋于零时,确保质量的负担完全转移到了审查者身上。这种转变往往导致两个极端:审查者被海量的 PR 淹没,或者他们屈服于“盖章式审查”(rubber-stamping),即为了清理积压工作而不再进行批判性审查就直接合并代码。
从代码审查转向计划审查
为了应对这种非对称性,一些团队正在将干预点从流程的末端移向流程的开头。与其审查最终的实现,不如将重点转向审查 计划。
通过在编写任何一行代码之前,就对技术计划进行协作和迭代,团队可以确保在架构、逻辑和边缘情况方面达成一致。这降低了 AI 生成大量在方法论上存在根本缺陷的代码的风险,因为审查和拒绝这些代码的成本远高于审查一份简单的计划文档。当计划获得批准后,随后的代码审查就变成了一个验证步骤——检查实现是否符合计划——而不是发现架构缺陷的过程。
利用 AI Agent 进行质量保证
虽然以人为本的计划审查对于高层设计至关重要,但代码审查的战术层面可以通过 AI 来增强。目标不是取代人类审查者,而是减轻他们的“认知负荷”。
自动化审查轮次
一些组织正在实施多层审查流水线,要求代码在到达人类之前,必须先通过针对公司特定编码标准、鲁棒性和质量模式训练的独立 AI agent 的审查。这创建了一个过滤器,可以捕捉到一些显而易见的问题——例如 docstring 错误或风格违规——从而让人们能够专注于高层逻辑。
基于风险的路由
另一种新兴策略是使用“爆炸半径”(blast radius)评估。通过根据复杂度和潜在影响对变更进行分类,团队可以为低风险变更实现自动化合并,同时将高复杂度变更标记为需要严格的人类审查。
"如果复杂度/爆炸半径较低,则自动合并。如果复杂度/爆炸半径较高,则标记为人工审查。"
AI 增强型人工审查
即使在必须由人类审查代码时,AI 也可以作为补充指南。Agent 可以生成代码意图的描述,并突出显示潜在问题供人类调查。这创造了一种共生关系:AI 处理那些“懒惰的人类眼睛”可能会忽略的琐碎细节,而人类提供最终判断,确定标记的问题是否确实构成 concern。
结论
传统的 PR 流程是为编写代码是最难的部分的世界设计的。在 AI 时代,最难的部分现在是审查。通过向左移,转向基于计划的协作,并利用 AI agent 来过滤和增强人工审查过程,团队可以保持高代码质量,而不会成为 AI 所提供的速度本身的瓶颈。