让开发自动化让开发自动化:持续检查持续检查
火龙果软件工程技术中心
本文内容包括:
用软件检查器来解决问题
对每个更改都进行检查,将缺陷控制在限度内
在合适的时候自动化
下载
参考资料
在开始新项目时,多数人计划在将代码投入生产发行之前审核它们;但是,当提交日程超越了其他因
素时,审核常常成为第一个被抛弃的实践。如果能够自动执行其中一些审核,那么情况又会怎样呢?
在新系列 “让开发自动化” 的第一篇文章中,开发自动化专家 Paul Duvall 首先将研究如何自动化检查
器(例如 CheckStyle、JavaNCSS 和 CPD)、如何改进开发过程,以及应该什么时候使用它们。
代码检查可以采用不同的形式。有些企业使用正式的同级评审(peer review),在该评审过程中,开发人员要为
代码提供同级评价,并提供改进意见;其他一些企业使用结对编程;还有一些人则考虑使用高级设计决策和推荐
的代码改进。有些团队会在将代码提交到版本控制存储库之前,让其他开发人员用 “桌面检查” 的形式审查他们的
代码。
不论企业采用哪种方式进行代码检查,有一件事是肯定的:
它们几乎都是手工过程
。正如我多年所观察到的,手
工过程很容易出错,如果工作紧张,就会忘记自己正在做什么。但是,软件检查不必总是手工完成;实际上,有
一大堆开源工具和商业工具(我称之为
软件检查器
),可以用它们很方便地对代码进行静态分析(这些工具也称
为静态分析工具)。
使用软件检查器,代码检查可以通过 Ant 或 Maven 这样的构建工具来自动完成。通过使用这种自动化,一些低
级的源代码细节(如编码标准、复杂性和重复程度等)的处理成为了机器的职责。这种职责转移通过将重点转向
更高级的开发方面(比如设计和长期维护问题)提高了人们手工检查的效率。
用软件检查器来解决问题用软件检查器来解决问题
软件检查器有很多,范围从复杂的商业工具到简单的开源替代工具。但是,我发现其中三个特别有用,它们是
CheckStyle、CPD 和 JavaNCSS (请参阅 参考资料):
CheckStyle 报告与项目预定的编码标准的偏离度。
CPD 报告代码重复。
JavaNCSS 可以帮助团队专注于更高级的代码复杂性领域。
所有这些工具都可以免费得到,而且易于集成到 Ant 或 Maven 这样的构建平台中,因此它们极易集成到持续集
成(CI)系统中。
检查器样式标准
我参与了几家公司的委员会,花了很多时间来定义编码标准。有一次,我们定义了几乎
没人
遵守的 25 页的编码
标准文档。结果,我们的代码审查非常痛苦,因为团队要花时间来挑错,看看开发人员是否使用了两个空格规则
(与四个空格规则相对),以及是否将参数声明为 final。如果把这些低级检查工作交给软件检查器,我们会节省
许多宝贵的时间。
使用自动的源代码检查工具(如 CheckStyle)可以提供执行可配置规则集的简单途径,规则集可以根据项目的
编码标准而定。此外,可以通过 CheckStyle 插件在 IDE 中运行 CheckStyle,CheckStyle 通过它的 Ant 任务或
Maven 插件直接集成到构建脚本中。CheckStyle 发现的所有规则偏离都会以报告的形式显示,清楚地指出哪一
个文件违规。除此之外,还可以将 Ant 和 Maven 配置成与 CheckStyle 相呼应,这样,在违反规则时,构建工作
就会失败。
例如,清单 1 演示了 Ant 构建脚本的一个代码段,它运行 CheckStyle 生成 HTML 报告。请注意 failOnViolation
属性,在这里它被设为 false。如果将该属性设为 true,则在发现
任何
源代码违规时,构建都会失败。
清单清单 1. 将将 CheckStyle 用于用于 Ant