| | 1 | = 代码审查方案 = |
| | 2 | |
| | 3 | 代码审查的目的 |
| | 4 | |
| | 5 | - 检查代码规范,保证团队编码风格的一致性 |
| | 6 | - 保证代码逻辑符合需求,减少测试bug的数量 |
| | 7 | - 提高代码的质量,促使团队成员编码能力共同进步 |
| | 8 | |
| | 9 | 代码审查的参与对象 |
| | 10 | |
| | 11 | - 代码的编写人员,简称作者 |
| | 12 | - 代码审查的执行人员,简称审查者,可以为一个或多个 |
| | 13 | |
| | 14 | 代码审查的前提条件 |
| | 15 | |
| | 16 | - 代码可以顺利运行 |
| | 17 | - 作者已经做过单元测试 |
| | 18 | - 审查者对需求有基本的了解 |
| | 19 | |
| | 20 | 代码审查的审查点 |
| | 21 | |
| | 22 | 1. 代码规范,符合团队统一的代码规范 |
| | 23 | 2. 单元测试,保证代码已经编写对应的单元测试 |
| | 24 | 3. 代码逻辑,审查代码符合需求 |
| | 25 | 4. 代码安全,检验是否存在xss漏洞和sql注入漏洞,权限漏洞等安全性问题 |
| | 26 | 5. 代码设计,包括对数据库设计,对象设计,方法设计,性能消耗等方面进行评审,提出优化和重构的建议 |
| | 27 | |
| | 28 | 代码审查的要求 |
| | 29 | |
| | 30 | - 审查者必须对第1,2点进行审查 |
| | 31 | - 审查者可以根据个人时间及需求和代码的复杂程度决定是否审查第3,4点 |
| | 32 | - 第5点不作强制要求,建议有时间的审查者及有经验的同事对第5点进行审查 |
| | 33 | |
| | 34 | 代码审查的工具和流程 |
| | 35 | |
| | 36 | - 使用ReivewBoard进行代码审查,安装及初次使用请参考:[http://svn.demo.pc.com.cn/svn/bbs7/docs/dev/ReviewBoard.wps ReivewBoard插件安装文档] |
| | 37 | - 完成需求后,作者需要先提交代码审查,再提交代码到svn |
| | 38 | - 由作者视具体情况决定本次提交审核的审核员,建议至少为2人 |
| | 39 | - 审查者可以根据自己的时间安排,登陆[http://ci.pc.com.cn/rb/dashboard ReviewBoard面板]进行代码审查 |
| | 40 | - 审查者进行代码审查后,可以对代码进行提问或提出review的意见,作者需要就问题进行回答或修复对应的问题 |
| | 41 | - 作者修改问题后,需要重新提交审核 |
| | 42 | - 审核人员认为代码通过,则可点击ship it。否则继续与作者进行review的交互沟通。 |
| | 43 | - 所有审核人员都对代码通过审核后,作者可以把本次审查纪录关闭,这样则完成了代码审查的一个生命周期 |
| | 44 | |
| | 45 | 代码审查实施中的问题与总结 |
| | 46 | |
| | 47 | - ReivewBoard工具暂时只支持eclipse,建议习惯使用其他IDE的同事可以继续用原有工具进行开发,单独用eclipse进行代码审查的提交 |
| | 48 | - 审查者的审查时间固定在每天早会以后,每个需求大概在15分钟以内,既保证自身时间,也不会耽搁提交者的时间。 |
| | 49 | - 目前ReivewBoard工具对代码规范的检查还不能完全支持,例如空格和换行,利用工具无法检查到。 |
| | 50 | |
| | 51 | |
| | 52 | === 定期回顾与总结 === |
| | 53 | ---- |
| | 54 | 各人总结出代码审查过程中发现或思考的问题,提交对应的问题和代码,进行交流和讨论。以促成以下2点: |
| | 55 | 1. 达成代码规范和代码设计编写的共识,避免日后犯同样错误。 |
| | 56 | 2. 在交流中发现项目代码已有问题,项目负责人自行安排时间修改,以更好地改善各项目代码质量。 |
| | 57 | |