Code Review Game Rule 代码审查游戏规则
10 前言
代码审查目前可谓是开发流程中唯一的一个人工检查环节(XP 中的结对编程是另一个),对代码质量的保证非常重要,然而现实是很多开发团队的代码审查实际上只是扫一眼(几秒钟),就会点 Approve 合并代码了,完全没有达到代码审查的重要目的。
主要存在的心态如下:
- 提 PR 的开发人员急于通过审查, 这样可以部署 SIT 请 QA 进行测试,人工测试没问题的话,任务就算完成了;
- 审查人员可能忙于自己的工作,对于审查别人的代码担心会费太多时间;
- 审查人员可能碍于情面,不好对同事指出代码上的小问题,怕同事说自己鸡蛋里挑骨头,没事找事;
- 审查人员可能共情了提 PR 人员的急迫心情, 本着帮忙的心态快速通过审查而点了 Approve;
- 审查人员可能迫于项目进度的考虑,QA 等着要测试,明天就要 Release 等压力,没办法细致地审查代码;
- ……
AI 补充如下:
- 快速通过:开发人员急于完成任务,希望尽快得到反馈和批准,因此在代码审查过程中,他们可能会选择快速通过,而不是仔细检查代码质量。
- 缺乏经验:一些开发人员可能缺乏代码审查的经验,他们可能不知道如何有效地进行代码审查,或者不知道如何识别潜在的问题。
- 缺乏动力:代码审查可能需要花费大量的时间和精力,一些开发人员可能缺乏动力去进行代码审查,因为他们可能认为这是一项无聊的任务。
- 缺乏沟通:代码审查需要开发人员和审查人员之间的有效沟通,如果沟通不畅,可能会导致代码审查效率低下。
- 缺乏反馈:开发人员可能没有得到足够的反馈,他们可能不知道如何改进代码,或者不知道如何回应审查人员的反馈。
- 缺乏责任感:开发人员可能没有意识到代码质量的重要性,他们可能认为代码质量是审查人员的责任,而不是自己的责任。
本文希望通过一个虚构的代码审查游戏,来促进团队内部对代码审查的重视,同时改变原来走走形式,并未真正审查代码的问题。
本方法未经过实践检验,仅是个人灵感产生,希望对大家有所启发, 也希望有试用的朋友反馈结果,欢迎加入我们的讨论和改进。
20 代码审查游戏
20.10 大家都是“凡人鹰眼”

游戏一开始, 团队内的所有开发人员,都是“凡人鹰眼”,他们需要对代码进行审查,找出潜在的问题,并提出改进意见,彼此平等,均无特权,日常开发写代码,互相做 Code Review 代码审查。
设置所有 PR 均要经过至少两人来做 Code Review 后都 Approve 了才能合并进入主分支。
20.20 代码审查的日常规则
- 修改哪怕只有一行代码,也要有对应的单元测试的添加或者修改;
- 所有单元测试必须全部通过,团队可以设置 pre-commit 钩子,确保每次提交代码时自动运行单元测试,且全部都能通过。
- 修改内容必须与 Commit Message 中的 Jira ID 严格匹配,不能有不相关的其他修改;
- 修改的代码内容不能过多,否则可以拒绝 PR,要求拆分为数个组织清晰的较小的 PR。
- 代码要求满足: 易阅读、易理解、易修改、易扩展、鲁棒性等特性;
- 静态扫描 SonarQube,确保代码质量符合标准,结果只能更优,不能更差,特别是单元测试覆盖率、代码重复率以及代码坏味道数量等;
- 必要时,可以 checkout PR 的分支,多人在会议室中一起讨论 review。
20.30 发生一次 UAT 或 Prod Issue 后
团队可以规定,发生一次 UAT 或 Prod Issue 时触发,甚至可以规定,发生一次 SIT 的 Issue, 即 QA 报来了 bug 即算触发;
20.30.10 找出“无敌浩克”绿巨人

经过开发人员排查 Bug 产生的根本原因,找到对应的某一次提交的某些代码修改,可以找到对应修改的开发人员,即标记此开发人员为“无敌浩克”绿巨人!
20.30.20 找出“钢铁侠”和“美国队长”

这两个人就是 bug 对应的那次 PR 的 Code Reviewer 即审查的人员,可以根据人员气质,分别标记为“钢铁侠”和“美国队长”!
20.40 复仇者联盟的“特权”
20.40.10 “无敌浩克”可以快速通过代码审查
后面“无敌浩克”可以找“钢铁侠”和“美国队长”做代码审查,“钢铁侠”和“美国队长”对于“无敌浩克”提交的 PR 有特权可以快速点击 Approve,让“无敌浩克”可以快速通过代码审查。
当然,复仇者联盟要不要使用这项特权是另外一回事,因为他们要全权负责组织下一次的 Release 了。
20.40.20 “钢铁侠” 和 “美国队长” 组织复仇
下一次的 Release,由 “钢铁侠”和“美国队长” 来全权负责组织,如果一切顺利发布,并没有再出现任何问题 Issue, 则恢复他们的 “凡人鹰眼” 标识。
如果又有问题,则查出 Root Cause 代码的开发者替换“无敌浩克”的身份,和相应的 “钢铁侠” 和 “美国队长” 组成新一轮的“复仇者联盟”,继续复联一、二、三、四……

30 欢迎头脑网暴,继续补充
欢迎大家加入头脑网暴,补充更多有趣且有效的游戏细节!