code review 有助于尽早发现代码中的问题,协调并逐渐统一各个编程人员的代码规范和习惯,以常用的Jupiter为例.
Jupiter里,代码评审(code review)分为4个流程:
- Configuration(配置):review发起者设置“Review ID”,指定要评审的代码,参与代码评审的人员,要讨论的问题等
- Individual review(个人评审):每个人独自审查代码,把可能出现问题的代码加入checklist
- Team review(团队评审):大家在一起讨论之前检查出的问题代码,并决定如何处理
- Rework:开发人员根据之前评审的结果,对代码进行修复
流程
Configuration
由评审发起者(代码作者、team leader或者PM)进行配置。打开项目属性->Review选项页。点击“New...”,设置相应的ReviewId和description:
接着添加本次要评审的代码和文件
添加参与代码评审的人员
接下来设置各种缺陷类型、严重性之类的。然后就是指定存放评审数据的目录。这个目录是相对于项目根目录的。如下图:
设置完成后,Jupiter将在项目根目录下生成“.jupiter”文件,把此文件存入CVS。现在评审发起者可以通知大家进行代码评审了。可以通过发邮件的方式进行通知,通知的内容最好有以下部分:
即:
- 项目名称、Review ID、参与评审人员名单。
- 被评审代码的描述信息,如功能,需求等等
- 新增加和删除的文件
- 受影响但没有在Configuration中指定的组件
通知完毕后,各成员即可正式进行代码评审。
Individual review
从CVS取出最新的代码和.jupiter文件,在eclipse里->窗口(Window)->打开透视图(Open Perspective)->Review。然后选择Individual Phase:
选择项目名称,Review ID和Reviewer ID(评审者ID),然后就可以开始查看代码了。
在代码评审过程中,发现有问题的代码,即可在上面点击右键菜单->Add Review Issue...把问题添加到Jupiter中,指定问题类型、严重性和描述信息,点击保存。
完成个人的代码评审后,把Jupiter评审数据目录下的文件传入CVS,就可以一起进行讨论了。
Team review
大家在一起,使用一台电脑或者投影仪,选择Team Phase
现在Individual Phase里检查出的所有的问题都会显示在ReviewTable里,点击Go To就能链接到问题所在代码,然后大家讨论这段代码是否有问题,如何解决等等,把结果写到ReviewEditor里,保存。
所有的问题讨论出结果后,把Jupiter评审数据文件传入CVS,散会,各自回到自己位置,进行下一个步骤
Rework
从CVS取出最新的Jupiter评审数据文件,选择Rework Phase
选择自己的ID后,上一步骤中分配给自己的问题就会显示到ReviewTable里,一个一个地把问题修复吧,修复后把状态置为Resolved。完毕后把Jupiter数据传CVS。
各自的rework完成后,各位评审者取出最新的Jupiter数据,关闭ReviewTable的过滤器,就能查看到本次评审中发现的各种问题,对各种问题进行验证,感到满意后可以把状态置为Closed,或者验证未通过,就置为Re-Opened。
总结
如此,便完成了一次代码评审……
工具仅仅是一种辅助措施,更主要的是如何发挥积极主动性,不断提高编码水平和定制规范.
参考资料
- Jupiter User's Guide http://csdl.ics.hawaii.edu/Tools/Jupiter/Core/doc/UsersGuide.html
- Effective Code Reviews Without the Pain http://www.developer.com/java/other/article.php/3579756
- Peer Code Reviews Made Easy with Eclipse Plug-Inhttp://www.devx.com/enterprise/Article/31658/0/page/1