
代码走查
你写完一篇文章,自己看三遍都觉得没问题,发给朋友一读,立刻发现错别字和语病。代码走查,就是给代码找一个"挑错的朋友"。它不是走形式,不是盖章签字,而是用人工逐行阅读代码,把编译器查不出、工具扫不到的逻辑错误、设计缺陷、安全隐患一条条揪出来。
理由一:工具有盲区,人眼有优势。
静态扫描工具能抓到SQL注入、空指针这类"硬伤",但抓不到逻辑错误。比如一个订单系统,代码写的是 if (order.status == "paid") { refund(); }——工具不会报错,但业务逻辑是"未发货才能退款",这段代码会让已发货的订单也能退款。这类问题,只有人能看出来。
理由二:发现得越早,修复越便宜。
这是软件工程里最经典的一条曲线Boehm缺陷放大模型:需求阶段修复成本为1倍,编码阶段为10倍,测试阶段为30倍,上线之后修复成本可达100-1000倍,代码走查发生在编码阶段,相当于用10块钱的成本,避免了上线后1000块的损失。去年我们合作的银行因一个未走查的逻辑漏洞,导致重复扣款,事后赔偿+公关损失超过200万,而这个bug,走查时5分钟就能发现。
理由三:走查不只是找bug,更是知识传递。
Google一项内部研究显示,代码审查平均每小时能发现约15个缺陷,同时让团队成员互相理解彼此的代码逻辑。新员工通过走查,能在两周内熟悉整个系统架构,比自己啃代码快三倍。
不是所有走查都一样,根据正式程度和适用场景,常用的有五种:
最轻量,一个人就能干。 作者写完代码,自己对照需求逐行读一遍,边读边在纸上模拟执行。
适用场景:改动小于50行的小功能,自己快速自查。
最常用,也是GitHub Pull Request的本质。 一个人写,另一个人看,在代码仓库里提评论。不需要开会,异步完成。
适用场景:日常开发,每次提交代码前必须过一遍。GitLab/GitHub的Code Review就是这种形式。据Google统计,他们70%的代码走查都是这种异步方式。
有组织,有议程。 作者逐行讲解代码逻辑,参会者(3~5人)随时提问、记录问题。不是批斗会,重点是"搞懂逻辑+发现问题"。
适用场景:核心模块上线前,比如支付、权限管理。通常控制在60分钟以内,超过就跑题了。
最正式,有严格流程。 由经过培训的检视员按检查清单逐条核对,会议前必须发材料,会上只记录缺陷,不讨论解决方案。
适用场景:航空、医疗、金融等高安全等级项目。NASA的飞行软件就是用Fagan检视,缺陷检出率高达90%以上。
最实时,边写边审。 两个人坐一台电脑,一个写一个看,写一行审一行。
适用场景:复杂算法、新技术探索。据研究,配对编程虽然编码速度慢15%,但缺陷率降低40%,总体效率反而更高。
工具能发现"代码写错了",走查能发现"代码写对了但逻辑错了"。前者是语法检查,后者是思维校验。 前者交给机器,后者必须交给人。如果你的团队还没有代码走查机制,建议从最简单的同伴审查开始,每次合并代码前,至少一个人看过。这一个动作,就能挡住大多数本不该上线的bug。
标签:代码走查、