今天有人问我,他们现在使用Scrum了,而且也部分的使用Pair programming了,是否就可以不做Code inspection了?
我想Scrum + Pair programming,对于开发过程中的沟通和Review的确起到了很大的帮助。通过Pair programming帮助我们在Code Review的层面上作到了经常化,随时随地Review每一行代码,减少了低级失误。
Code Inspection相对于code review来说更加正式,比如说对于Bug fixing,是否修改的代码真正的解决了问题,进一步分析有没有衍伸的风险,这些都是Code inspection需要做到的。甚至一些时候需要邀请第三方(需求方、测试方...)一起讨论参加。
在《代码大全》这本书中有一个数据:
代码测试行为 找到的缺陷比例
Code Inspection 45-70%
非正式代码审查 20-40%
单元测试 15-50%
系统测试 25-55%
可以看到Code inspection是一种发现缺陷最多的一种正式的代码审查方式,应该是不可忽略的,不管是传统研发组织,还是敏捷团队。
现在可以找到很多代码检查工具来辅助我们的工作:
- Checkstyle: 代码格式检查工具,检查如过大的类、太长的方法和未使用的变量等这样违反编程规范的问题。
- RAD Software Analyzer:可以基于规则进行国际化、J2EE最佳实践、性能、安全等检查。
- CSAR:用于扫描代码检查开源软件等。
- JDepend:可以检查包依赖关系。
- CPD:Eclipse 的 PMD 插件提供了一项叫做 CPD(或复制粘贴探测器)的功能,用于寻找重复的代码。
- Eclipse Metrics 插件:提供了很多有效地查出代码复杂度的功能。
- Klocwork:静态代码分析工具,在业内具有一定知名度,但费用较高。