三步教你改善Java代码质量(2)

时间:2008-01-10 00:00 来源:网管之家bitsCN.com 字体:[ ]

  上面的简单的XSL模板需要产生一个只包含我们需要的值的属性文件,内容如下:

  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:output method="text" omit-xml-declaration="yes"/>

  <xsl:template match="coverage">

  total.line-rate=

  <xsl:value-of select="floor(@line-rate*100)"/>

  </xsl:template>

  </xsl:stylesheet>

  要注意的是方法floor(@line-rate*100),可以将小数覆盖率转换为整型覆盖率。最终结果是一个只包含下面一行的coverage.properties文件:

  total.line-rate=44

  现在我们可以使用Ant的属性任务来从coverage.properties读取这个Ant属性所需要的覆盖率:

  <property file="build/coverage.properties" />

  最后,我们可以将最初的"80"使用新的Ant属性替换,代码如下:

  <cobertura-check totallinerate="${total.line-rate}"/>

  三、将内容放到一起

  最后的build.xml文件看上去的形似如下:

  <target name="coverage_check" depends="check_against_previous_rate">

  <antcall target="coverage_report"/>

  </target>

  <target name="coverage_report">

  <cobertura-report format="xml" destdir="." />

  </target>

  <target name="check_against_previous_rate" depends="coverage_xml_to_properties">

  <property file="build/coverage.properties" />

  <cobertura-check totallinerate="${coverage.line-rate}" />

  </target>

  <target name="coverage_xml_to_properties">

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

  </target>

  要注意一个新的覆盖报告仅仅当覆盖核对被通过后才能被产生,也就是说,每次提高覆盖率后,都会比上一次建立的代码质量有所提高。

  四、改善跟踪率的其他方法

  还有一些递增地改善代码质量的方法是通过将覆盖率记录到文件中来跟踪代码改善率。我们可以通过Ant的echo任务建立如下的代码:

  <target name="time">

  <tstamp>

  <format property="date.time" pattern="yyyy-MM-dd HH:mm"/>

  </tstamp>

  </target>

  <target name="log" depends="time">

  <echo file="${history.txt}" append="true">

  ${date.time};total.line-rate;${total.line-rate}

  </echo>

  </target>

  五、结果可测量、改善可视化

  经过对一个工程的测试,在这个工作使用本文所提供的策略后的一周内定,这个工程的代码质量改善了超过30%.而更另人兴奋的是以前开发人员都不需要对代码进行测试,而现在它们会为通过测试而使他们的代码质量的提高感到骄傲。

  当然,我们不需要只停留在本文所介绍的方法和理论上。我们也可以将增量改善策略用在其他的代码规则中。因为大多数的代码核对工具都可以产生基于XML格式的输出,我们可以使用XSL模板来过滤出与之相关的代码规则,并将这些规则作为当前的代码核对工具的输入。

顶一下(0) 踩一下(0)
最新图文 1 2 3 4 5
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码: