第 7 课 · 现代软件开发者(斯坦福 CS146S)
Modern Software Support: AI Code Review
本篇听书与视频
AI 代码审查:机器能查什么,人必须守什么
第七周讲代码审查。讲师认为代码审查是让自己成为更好的工程师、提升团队代码质量最有效的投入之一。而在 AI 写代码越来越多的今天,审查只会比以前更重要。本周先回顾审查本身的价值和方法,再看 AI 审查工具带来了什么、还缺什么。周五的嘉宾是 Graphite 的首席产品官 Tomas Reimers。
学习目标
- 了解代码审查的实证价值,以及它要拦截哪几类问题。
- 能写出一条“好的”审查意见。
- 认识 AI 代码审查的长处和局限,知道哪些部分必须由人负责。
- 能对同一个 PR 比较自己的审查意见和 AI 的审查意见。
核心概念
审查为什么值得做。 课上引用的统计数据显示:代码审查的缺陷发现率是 55%~60%,而各类测试是 25%~45%。一项研究里,经过审查的程序每百行错误数从 4.5 降到 0.82。AT&T 的研究也显示,引入审查后生产率提升 14%,缺陷减少 90%。
审查要拦截什么。 逻辑和正确性错误、可读性和可维护性、性能、安全,以及是否符合团队的最佳实践。最后一项包括代码库里的惯用写法,比如“访问数据库要走这个服务,不要直接查表”。审查还有几个容易被忽略的作用:帮团队成员更新对系统的理解,确认改动真的解决了问题,引发对设计优劣的讨论,并保持代码风格和组织方式一致。
什么是好的审查意见。 一句“这样不行”没什么用。好的意见要给出具体细节,指向具体的代码或问题,提出解决办法,并说明理由或证据。课上举的例子大意是:先肯定新方法沿用了文件里已有的风格,再指出参数过多影响可读性、也说明函数职责太多,最后建议在之后的 PR 里统一重构,并以问句征求对方意见。
AI 带来了什么。 课上提到的工具包括 Graphite、Greptile、CodeRabbit,以及 Claude Code 和 Codex。它们带来的变化有:效率更高,自动化缩短了审查时间、更早发现问题;标准统一,每次审查都用同一套标准;知识共享,开发者能从 AI 的建议里学到最佳实践;认知负担更轻,例行检查交给 AI,人专心看复杂逻辑;能持续改进,随着数据积累越来越好;还能结合上下文做更深入的分析。
AI 审查的局限。 需要更多配置;误报多;要持续训练才能适应团队;目前还抓不准代码库的惯用写法和最佳实践;处理不了复杂的业务逻辑和架构决策,这恰恰是最需要人的地方;安全相关的改动要格外谨慎;还经常漏掉边界情况。课上给了三条实用建议:明确告诉 AI 哪些不用审、团队有哪些写法惯例;特别留意用户输入、身份认证、文件操作和网络请求这几类改动;以及代码合并上线后由你负责,不能把锅甩给 AI。
实践步骤
第七周的作业要在一个更复杂的代码库上,把智能体开发和 AI 审查串起来,完成 week7/docs/TASKS.md 里的四个任务:
- 注册 Graphite(学生有教育优惠)。
- 每个任务开一个单独的分支,用任意 AI 编程工具,一次提示就把任务实现出来。
- 自己逐行审查改动,修掉发现的问题,必要时在提交说明里解释原因。也可以和同学互相审查。
- 为每个任务开一个 PR,描述里写清问题和思路、做过哪些测试(包括命令和结果)、权衡取舍和后续事项。
- 用 Graphite Diamond 对每个 PR 生成 AI 审查意见。
- 写一份反思:你自己的审查意见通常属于哪几类(正确性、性能、安全、命名、测试缺口、接口设计、用户体验、文档);逐个 PR 对比你的意见和 Graphite 的意见,举出 AI 审得更好和更差的具体例子;最后说说你今后有多信任 AI 审查,以及什么情况下可以依赖它。
常见误区
- 有了 AI 审查,就跳过人工审查。 AI 擅长例行检查,但业务逻辑、架构取舍和团队惯例仍然需要人来把关。
- 对 AI 意见要么全收、要么全不理。 误报会消耗大家的注意力,所以要通过配置告诉它重点看什么、哪些不用看,再根据效果调整。
- 审查意见只给结论。 不说明理由、不给改法的意见,对方很难照着改,也学不到东西。
动手练习
挑你最近合并的一个 PR,自己补写一份审查意见,再让任意一个 AI 审查工具审同一个 PR。把两份意见按“正确性、安全、可读性、团队惯例、误报”分类计数,写下你今后在哪类问题上信任 AI、在哪类问题上一定要亲自看。
要点回顾
代码审查的价值有实证数据支持;AI 把审查的门槛和成本都降了下来。但在 AI 写代码越来越多的情况下,人的审查不是可有可无了,而是更重要了:机器负责例行检查,人负责业务逻辑、架构和团队惯例,合并的代码由你负责。
参考来源
- CS146S Fall 2025 课程大纲(Week 7):themodernsoftware.dev/fall2025,核验日期:2026-10-23。
- 讲义幻灯片:AI Code Review(Google Slides)。
- 作业 Week 7 – Exploring AI Code Review Using Graphite:week7/assignment.md。