网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 核心技术 > 高级编程 > 三步教你改善Java代码质量  

三步教你改善Java代码质量

2008-01-10  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

  本文讨论了如何以递进的方式使用Apache Ant来改善我们的代码质量。并按着三步走的原则给出了具体的实现步骤。 中国网管论坛bbs.bitsCN.com

  一、充分利用单元测试、代码覆盖 网管u家u.bitsCN.com

  单元测试、代码覆盖是最容易被接受和实现的方式。事实上,大多数开发人员都知道单元测试对他们很重要。在我们开始讨论这些东西之前,先看一下Google研究院主管Peter Norvig的一段话:“如果你认为你们不需要对自己的代码进行单元测试,那么就写在纸上写一所有的原因,并且仔细研究这张纸,然后扔了它,继续测试自己的程序吧”。看来Google也是非常推崇进行单元测试的。那么谁又来测试那么测试者呢?也就是说,我们怎么能验证对程序做了足够的测试呢?这是一个非常有价值的问题,因为那些未通过测试的程序才是我们更应该关注的地方。这个问题的一个解决方案就是使用代码覆盖工具,这种工具将告诉我们我们到底测试了多少代码(也就是被测试代码的百分比),然后使用一般的综合处理来合并覆盖核对结果。如果覆盖核对失败,那么我们建立应用程序的过程也就失败了。

网管下载dl.bitscn.com

  对了本文所讨论的递增代码策略选择了代码覆盖工具Cobertura,这是由于它非常容易使用,而且拥有良好的定义格式,以及四个Ant任务接口。这些任务之一就是cobertura-check,当代码不能完成我们要求的覆盖率时,它就会失败。如下面的代码显示如果覆盖率未达到80%,Ant在建立工程时就会失败: 网管联盟bitsCN_com

  <target name="coverage_check"> 网管网www_bitscn_com

  <cobertura-check totallinerate="80"/> 网管u家u.bitsCN.com

  </target name="coverage_check"> 网管网www_bitscn_com

  除了使用硬编码来指定这个覆盖率外,我们还可能以使用一个更容易建立的结果作为当前核对的覆盖率。我们可以通过使用两个核心Ant任务连接一对Cobertura任务来完成这个任务。并不不用担心各种覆盖率的具体的值。我们的目标是完成可测量的代码改善,而不是设置一个绝对的代码覆盖率。 网管论坛bbs_bitsCN_com

  在建立用于测试和运行我们的代码的targets后,我们可以将用于核对我们的建立脚本的增量覆盖率。第一步是使用一个cobertura报吿任务建立一个XML格式的覆盖报表。代码如下: 网管联盟bitsCN_com

  <cobertura-report format="xml"/>

网管网www_bitscn_com

  下面是由一个cobertura报表任务产生的

网管联盟bitsCN@com

  coverage.xml 网管网www.bitscn.com

  <?xml version="1.0"?> 中国网管论坛bbs.bitsCN.com

  <!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-02.dtd"> 网管u家u.bitsCN.com

  <coverage line-rate="0.43612334801762115" branch-rate="0.48344370860927155" version="1.8" timestamp="1181043899853"> 网管下载dl.bitscn.com

  <sources> 网管网www_bitscn_com

  <source>./src/java</source> 网管u家u.bitsCN.com

  </sources>

中国网管论坛bbs.bitsCN.com

  <packages>

网管u家u.bitsCN.com

  …… 网管下载dl.bitscn.com

  </packages> 网管网www_bitscn_com

  </coverage> 网管bitscn_com

  现在要确保将这个文件保存在某个硬盘上,因为我们在后面会需要这个文件。

网管网www_bitscn_com

  二、从报表中取出覆盖率

网管u家u.bitsCN.com

  一开始,我们可以试着使用Ant的XmlProperty任务来直接获得这个覆盖率,并给一个Ant属性。但是这个方法有以下两个问题:

网管网www_bitscn_com

  1. 在coverage.xml中的覆盖率是一个小数,但当核对任务时需要一个整数百分比。

网管bitscn_com

  2. 在实际的项目中,coverage.xml的文件尺寸非常大,如果在Java中尝试使用XmlProperty任务时可能会出现Java OutOfMemoryError错误。而我们只想从coverage.xml文件中获得以下的内容:

网管网www_bitscn_com

  <xslt in="coverage.xml" out="build/coverage.properties" style="src/xsl/coverage.xsl" />

网管bitscn_com

网管u家u.bitsCN.com


TAGs   质量   代码   改善   <   我们   测试   覆盖率   >   使用   />      
 上一篇:当前Java软件开发中几种认识误区   下一篇:争论:Java是否应该停止增加新特性
三步教你改善Java代码质量 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户