• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

持续检查--把自己从软件检查员寻常的手工检查工作中解放出来

发布: 2008-4-03 17:50 | 作者: Andrew Glover | 来源: IBM | 查看: 247次 | 进入软件测试论坛讨论

领测软件测试网
在开始新项目时,多数人计划在将代码投入生产发行之前审核它们;但是,当提交日程超越了其他因素时,审核常常成为第一个被抛弃的实践。如果能够自动执行其中一些审核,那么情况又会怎样呢?在新系列 “让开发自动化” 的第一篇文章中,开发自动化专家 Paul Duvall 首先将研究如何自动化检查器(例如 CheckStyle、JavaNCSS 和 CPD)、如何改进开发过程,以及应该什么时候使用它们。

代码检查可以采用不同的形式。有些企业使用正式的同级评审(peer review),在该评审过程中,开发人员要为代码提供同级评价,并提供改进意见;其他一些企业使用结对编程;还有一些人则考虑使用高级设计决策和推荐的代码改进。有些团队会在将代码提交到版本控制存储库之前,让其他开发人员用 “桌面检查” 的形式审查他们的代码。

不论企业采用哪种方式进行代码检查,有一件事是肯定的:它们几乎都是手工过程。正如我多年所观察到的,手工过程很容易出错,如果工作紧张,就会忘记自己正在做什么。但是,软件检查不必总是手工完成;实际上,有一大堆开源工具和商业工具(我称之为软件检查器),可以用它们很方便地对代码进行静态分析(这些工具也称为静态分析工具)。

使用软件检查器,代码检查可以通过 Ant 或 Maven 这样的构建工具来自动完成。通过使用这种自动化,一些低级的源代码细节(如编码标准、复杂性和重复程度等)的处理成为了机器的职责。这种职责转移通过将重点转向更高级的开发方面(比如设计和长期维护问题)提高了人们手工检查的效率。

关于本系列
作为开发人员,我们的工作就是为用户提供自动化处理;但是,我们中的许多人却忽视了自动化自己的开发过程的机会。出于这个目的,让开发自动化 这一系列的文章专门研究了自动化软件开发过程的实际应用,并教您什么时候如何 成功地应用自动化。

用软件检查器来解决问题

软件检查器有很多,范围从复杂的商业工具到简单的开源替代工具。但是,我发现其中三个特别有用,它们是 CheckStyle、CPD 和 JavaNCSS (请参阅 参考资料):

  • CheckStyle 报告与项目预定的编码标准的偏离度。
  • CPD 报告代码重复。
  • JavaNCSS 可以帮助团队专注于更高级的代码复杂性领域。
所有这些工具都可以免费得到,而且易于集成到 Ant 或 Maven 这样的构建平台中,因此它们极易集成到持续集成(CI)系统中。

什么是持续集成?

持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。诸如 CruiseControl 之类的检查工具是在后台运行的,它们轮询版本控制存储库,从中寻找更改之处。当发现某一更改时,这类工具就会通过 Ant 执行预定义的构建脚本。持续检查借助持续集成的实践得以改进。

检查器样式标准

我参与了几家公司的委员会,花了很多时间来定义编码标准。有一次,我们定义了几乎没人 遵守的 25 页的编码标准文档。结果,我们的代码审查非常痛苦,因为团队要花时间来挑错,看看开发人员是否使用了两个空格规则(与四个空格规则相对),以及是否将参数声明为 final。如果把这些低级检查工作交给软件检查器,我们会节省许多宝贵的时间。

使用自动的源代码检查工具(如 CheckStyle)可以提供执行可配置规则集的简单途径,规则集可以根据项目的编码标准而定。此外,可以通过 CheckStyle 插件在 IDE 中运行 CheckStyle,CheckStyle 通过它的 Ant 任务或 Maven 插件直接集成到构建脚本中。CheckStyle 发现的所有规则偏离都会以报告的形式显示,清楚地指出哪一个文件违规。除此之外,还可以将 Ant 和 Maven 配置成与 CheckStyle 相呼应,这样,在违反规则时,构建工作就会失败。

例如,清单 1 演示了 Ant 构建脚本的一个代码段,它运行 CheckStyle 生成 HTML 报告。请注意 failOnViolation 属性,在这里它被设为 false。如果将该属性设为 true,则在发现任何 源代码违规时,构建都会失败。


清单 1. 将 CheckStyle 用于 Ant
<taskdef resource="checkstyletask.properties" classpath="${checkstyle.jar}"/><checkstyle config="${basedir}/cs-rules.xml" failOnViolation="false">  <formatter toFile="${checkstyle.data.file}" type="xml" />  <fileset casesensitive="yes" dir="${src.dir}" includes="**/*.java" /></checkstyle><xslt taskname="checkstyle"  in="${checkstyle.data.file}"  out="${checkstyle.report.file}"  style="${checkstyle.xsl.file}" />

在清单 1 中,config 被设置成 cs-rules.xml,这表示将根据源代码目录(在 fileset dir 属性中)以递归的方式运行规则文件。xslt 任务接受根据 formatter toFile 属性生成的文件。该任务使用 XSL 文件 checkstyle.xsl 将清单 1 生成的 XML 转换成一个可读的 HTML 文件,XSL 文件 checkstyle.xsl 包含在 CheckStyle 安装文件中。

清单 2 是 CheckStyle 规则文件的示例片段。CheckStyle 可以在代码基上运行 120 多个规则。


清单 2. 在 cs-rules.xml 文件中定义的 CheckStyle 规则
<module name="Checker">  <module name="TreeWalker">    <property name="cacheFile" value="target/checkstyle.cache"/>    <property name="tabWidth" value="4"/>    <module name="ImportOrder">      <property name="ordered" value="true"/>      <property name="separated" value="true"/>	</module>    <module name="LineLength">      <property name="max" value="120"/>    </module>    <module name="FileLength">      <property name="max" value="400"/>    </module>	<module name="UnusedImports"/>  </module></module>

每个 CheckStyle 规则都是一个模块。例如,LineLength 模块建立的规则是:所有行中的字符都不得超过 120 个字符,否则 CheckStyle 就生成错误。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

31/3123>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网