一、概要
代码Review 是被鼓励在开过过程全阶段执行,在一些关键点代码Review是被正式要求执行。本指南中规范代码审查活动,并指导审查人员按照该指南执行该活动。
二、过程
1、新增代码
ACTION1:开分人员提交代码列表(Email)
· 并对代码review状态列设置成未Review标志
· 在列表上边注释中指定review人员(例如David: pls review)
· 在SVN注释中,提供标准信息:SVN diffs,branch info ,and explanation
ACTION2:审查人员收到代码审查Email
· 如果代码通过审查,添加注释ok
· 如果代码没有通过审查,需要田间注释说明问题(如需要可开bug跟踪)
2、BUG导致修改代码
ACTION1:开分人员提交代码审查申请,在当前bug下(Jira),触发Email
· 并对代码review状态列设置成未Review标志
· 在注释中指定review人员(例如David: pls review)
· 在SVN注释中,提供标准信息:SVN diffs,branch info ,and explanation
ACTION2:审查人员收到代码审查Email
· 如果代码通过审查,在jira中添加注释ok
· 如果代码没有通过审查,需要在jira中添加注释说明问题(如需要可开bug跟踪)
3、小需求导致修改代码(jira)
ACTION1:开分人员提交代码审查申请,在当前需求管理下(Jira),触发Email
· 并对代码review状态列设置成未Review标志
· 在注释中指定review人员(例如David: pls review)
· 在SVN注释中,提供标准信息:SVN diffs,branch info ,and explanation
ACTION2:审查人员收到代码审查Email
· 如果代码通过审查,在jira中添加注释ok
· 如果代码没有通过审查,需要在jira中添加注释说明问题(如需要可开bug跟踪)
三、代码标准
* C++: C&C++编程规范
* Java: Java编程规范
* SQL: SQL 编写规范
四、代码检查列表
功能正确性:代码是否满足他要实现的功能需求
代码复用性:是否已经有其他的代码实现了这部分功能,部分或者全部?
代码样式/可读性:是否提供了正确的注释、代码缩进,并遵循了编码规范?
效率:是否有更好的方法来执行这个功能
内存分配:是否有可能内存泄露
无效内存操作:是否有些用例导致无效的内存访问,包括可能的缓存溢出的可能
边界情况:是否所有可能的边界都进行了覆盖
线程安全:在多线程环境是否有竞争条件和其他不安全的数据存在
版本注释:确认不敢修改信息、新的log错误代码和配置变更信息加到了版本注释中
五、模板
CODE REVIEW:
Functionality:
Code Re-use:
Style:
Efficiency:
Memory Allocation:
Invalid Memory Ops:
Boundary Cases:
Thread Safety:
Release Notes:
Logging:
每一项需要添加标识“OK” 或者”NG” ,如果是“NG”,需要提供注释进行解释。
Example1:
CODE REVIEW:
Functionality: OK
Code Re-use: OK
Style: OK
Efficiency: OK
Memory Allocation: OK
Invalid Memory Ops: OK
Boundary Cases: OK
Thread Safety: OK
Release Notes: OK
Logging: OK
Example 2:
CODE REVIEW:
Functionality: OK
Code Re-use: OK
Style: OK
Efficiency: OK
Memory Allocation: OK
Invalid Memory Ops: OK
Boundary Cases: NG. Does not properly handle the case where i is0.
Thread Safety: OK
Release Notes: NG. New configuration parameter not listed.
Logging: OK.