源代码库里的代码审查流程,其实没那么神秘

小王刚进新公司,被拉进一个 Git 仓的 PR(Pull Request)流程里,一头雾水:为啥改三行代码,要等两个人点绿勾才能合并?其实这背后就是「源代码库代码审查流程」——不是走形式,而是让代码更稳、更易读、更少埋雷。

代码审查不是挑刺,是团队协作的日常

你写的代码,别人要读、要改、要上线。审查不是质疑能力,而是提前发现隐患。比如有个同事提交了这样一段 Python 逻辑:

def calculate_discount(total):
    if total > 100:
        return total * 0.9
    elif total > 200:  # 这个条件永远不成立!
        return total * 0.8
    else:
        return total

表面看没问题,但第二个判断永远不会触发。审查时一眼就能揪出来,省得上线后用户满减算错,客服电话被打爆。

典型流程长啥样?以 GitHub/GitLab 为例

1. 开发者在 feature 分支写完功能,推送代码;
2. 提交 Pull Request 或 Merge Request,填写清晰描述(比如「修复登录页手机号校验正则漏掉 +86」);
3. 系统自动触发 CI 检查(单元测试、格式检查、安全扫描);
4. 指定 reviewer 收到通知,打开页面逐行看变更(diff),加评论、提建议;
5. 开发者修改后重新推送,评论自动标记为已解决;
6. 至少两人 approve(或按团队规则满足最小审批数),才能合并进主干。

审查时盯哪几处,效率最高?

边界和异常:空值、超长输入、网络失败有没有兜底?
可读性:变量名是 data 还是 userProfileJsonString?函数是不是塞了 80 行逻辑?
重复代码:这个校验逻辑上个月在支付模块写过一遍,这次又抄?
权限与日志:敏感操作有没有记录?错误信息会不会把数据库密码打到日志里?

有次我们审一个导出 Excel 的接口,发现它把整个用户表 SELECT 出来再内存过滤,reviewer 直接留言:“查 10 万条再筛 3 条?加 WHERE 条件吧。”当天就改了,服务器负载立马降了一半。

别让流程卡死,也别跳过它

紧急 hotfix 可以简化流程(比如一人 approve + 自动 CI 通过即可),但不能跳过审查本身。曾有项目图快跳过审查,结果上线后某个 if 判断少了个等号,导致优惠券全量发放,财务差点报警。后来团队立下铁规:哪怕改一行 CSS,也要走完整流程。

说白了,代码审查不是给谁设门槛,而是让每个人写的代码,都经得起另一个人下班前顺手翻一眼的底气。