课程目录

第 7 课 · 现代软件开发者(斯坦福 CS146S)

Modern Software Support: AI Code Review

本篇听书与视频

6 分钟 · 双主持人讲解

B 站第三方搬运视频(UP 主:世界课程精选站,中文配音),原课程为斯坦福 CS146S Fall 2025 · 在 B 站打开

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 里的四个任务:

  1. 注册 Graphite(学生有教育优惠)。
  2. 每个任务开一个单独的分支,用任意 AI 编程工具,一次提示就把任务实现出来。
  3. 自己逐行审查改动,修掉发现的问题,必要时在提交说明里解释原因。也可以和同学互相审查。
  4. 为每个任务开一个 PR,描述里写清问题和思路、做过哪些测试(包括命令和结果)、权衡取舍和后续事项。
  5. 用 Graphite Diamond 对每个 PR 生成 AI 审查意见。
  6. 写一份反思:你自己的审查意见通常属于哪几类(正确性、性能、安全、命名、测试缺口、接口设计、用户体验、文档);逐个 PR 对比你的意见和 Graphite 的意见,举出 AI 审得更好和更差的具体例子;最后说说你今后有多信任 AI 审查,以及什么情况下可以依赖它。

常见误区

  • 有了 AI 审查,就跳过人工审查。 AI 擅长例行检查,但业务逻辑、架构取舍和团队惯例仍然需要人来把关。
  • 对 AI 意见要么全收、要么全不理。 误报会消耗大家的注意力,所以要通过配置告诉它重点看什么、哪些不用看,再根据效果调整。
  • 审查意见只给结论。 不说明理由、不给改法的意见,对方很难照着改,也学不到东西。

动手练习

挑你最近合并的一个 PR,自己补写一份审查意见,再让任意一个 AI 审查工具审同一个 PR。把两份意见按“正确性、安全、可读性、团队惯例、误报”分类计数,写下你今后在哪类问题上信任 AI、在哪类问题上一定要亲自看。

要点回顾

代码审查的价值有实证数据支持;AI 把审查的门槛和成本都降了下来。但在 AI 写代码越来越多的情况下,人的审查不是可有可无了,而是更重要了:机器负责例行检查,人负责业务逻辑、架构和团队惯例,合并的代码由你负责。

参考来源