从 Ant 脚本启用代码覆盖

要验证构建的代码是否符合指定的代码覆盖接受条件,可从 Ant 脚本启用代码覆盖。要执行此操作,您需要:

还可在工作台中查看代码覆盖结果

将 Ant 脚本配置为启用代码覆盖

要将 Ant 脚本配置为启用代码覆盖,请将以下行添加到 CLASSPATH 环境变量中:
<install_dir>/plugins/com.ibm.rational.llc.engine_1.0.0.<version_number>
然后在构建文件中定义新任务。例如:

<taskdef name="instrument" classname="com.ibm.rational.llc.engine.instrumentation.anttask.InstrumentationTask" classpath="${install_dir}/plugins/com.ibm.rational.llc.engine_1.0.0.<version_number>"/>

检测任务的格式如下:

<instrument buildPath="" baseLineFile="" saveBackups="" outputDir=""/>

其中:

buildPath:
指定将要为其收集代码覆盖数据的文件。构建路径可引用类文件名、jar 文件名或目录名。可以像定义 Ant 中所使用的任何其他路径引用一样来定义该路径。


baseLineFile:
指定存储基线文件的路径。基线文件是作为基准的文件,已检测的代码将与该文件进行对比,代码覆盖统计信息将根据该文件生成。它还用作报告生成 ant 任务的输入。


saveBackups:
指定是否要将原始类文件和 jar 文件重命名为 *.bak。将 saveBackups 设置为 true 将生成备份文件;将 saveBackups 设置为 false 则会覆盖原始文件(从而丢失原始文件)。
注:saveBackups 是可选的,其缺省值为 false。


outputDir:
指定将存储已检测文件的位置。缺省情况下,已检测的文件与正在检测的文件存储在同一位置。

示例 1

在以下示例中,将收集 bin/ 下所有文件的代码覆盖数据,基线文件存储在 blfile.coveragedata 中,不生成这些文件的备份,已检测的文件存储在 coverageData_files 中。

<instrument saveBackups="false" baseLineFile="blfile.coveragedata" buildPath="bin/" outputDir="coverageData_files"/>

示例 2

在以下示例中,将收集 bin(引用为 build.Dir)下所有文件的代码覆盖数据,基线文件存储在 blfile.coveragedata 中,将生成所有这些文件的备份。

<path id="build.Dir"> <pathelement location="bin"/> </path>
<instrument saveBackups="true" baseLineFile="blfile.coveragedata" buildPathRef="build.Dir" />

示例 3

在以下示例中,将收集 bin 下所有文件的代码覆盖数据,基线文件存储在 blfile.coveragedata 中,将生成所有这些文件的备份。

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <pathelement location="bin"/> </buildPath> </instrument>

示例 4

在以下示例中,将对 bin/ 下目录名中包含 com 的所有子目录启用代码覆盖数据,但排除这些子目录中名称包含 Test 的文件。对经过代码覆盖分析的每个文件都将生成备份,基线文件存储在 blfile.coveragedata 中。

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <fileset dir="bin"> <exclude name="**/*Test*"/> <include name="**/*com*/*"> </fileset> </buildPath> </instrument>

示例 5

在以下示例中,将对 bin/ 下的所有文件启用代码覆盖数据,但排除 bin 的子目录下名称中包含 Test 的文件以及 bin2/ 下的文件。对经过代码覆盖分析的每个文件都将生成备份,基线文件存储在 blfile.coveragedata 中。

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <fileset dir="bin"> <exclude name="**/*Test*"/> </fileset> </buildPath> <buildPath> <pathelement location="bin2"/> </buildPath> </instrument>

运行 Ant 脚本

在将 Ant 脚本配置为启用代码覆盖之后,就可以从命令行或工作台运行 Ant 脚本。

从命令行运行

要从命令行运行 Ant 脚本:

  1. 将 JAVA_HOME 环境变量设置为安装了 JDK 的目录。
  2. 确保 CLASSPATH 环境变量包含 probekit.jar 文件的完整路径和文件名。probekit.jar 文件位于所安装产品的 plugins 文件夹下版本号较高且时间戳记最新的 org.eclipse.hyades.probekit 子文件夹中。
  3. 确保 CLASSPATH 环境变量包含 JAVA_HOME(所安装 Java 的路径,以使 JAVA_HOME/bin/java 有效)。
  4. 确保 PATH 环境变量包含适于平台的 org.eclipse.hyades.probekit 子文件夹的完整路径。例如:
  5. 将 LLC_PLUGIN 设置为 plugins 文件夹的路径:
    set LLC_PLUGIN=<install_dir>\plugins

示例

ant -lib=<install_dir>\plugins\org.eclipse.hyades.probekit_<version>\probekit.jar myTarget

从工作台运行

要从工作台运行 Ant 脚本:

生成代码覆盖统计信息

确保类路径包含以下路径:
<install_dir>\plugins\com.ibm.rational.llc.engine_1.0.0.<version_number>

要从命令行生成代码覆盖统计信息,请从代码所在的目录运行:

java -Dcoverage.out.file=C:\coverage_report\coverage_data.coveragedata com.ibm.rational.llc.example

注:可能需要将 Java 设置为与所安装产品的 Java 匹配。

生成代码覆盖报告

要使用 Ant 生成报告:
下载 BIRT 运行时报告引擎,并解压缩其内容。设置以下环境变量:

例如:
<path id="lib.path"> <pathelement location="${env.LLC_COMMON_PLUGIN}"/> <pathelement location="${env.LLC_REPORT_PLUGIN}"/> <fileset dir="${env.BIRT_HOME}/lib" includes="*.jar"/> </path>

在构建文件中为代码覆盖报告生成定义新任务,例如:

<taskdef name="code-coverage-report" classname="com.ibm.rational.llc.report.birt.adapters.ant.ReportGenerationTask" classpathref="lib.path"/>

代码覆盖报告任务的格式如下:

<code-coverage-report outputDir="" coverageDataFile="" baseLineFiles=""> <filters> <filter type="" value=""/> </filters> <configurations> <configuration name="" value=""/> </configurations> </code-coverage-report>

其中:

outputDir:
指定将存储报告结果的位置。


coverageDataFile:
指定要在其上生成报告的一个或多个覆盖数据文件。可以像定义 Ant 中所使用的任何其他路径引用一样来定义该项。


baseLineFiles:
指定作为检测任务的一部分生成的一个或多个基线文件。可以像定义 Ant 中所使用的任何其他路径引用一样来定义该项。


filters:
可选:用于过滤报告结果。


filter:
type:要应用于报告的过滤器的类型。

value:要应用于报告的过滤器的值。
可用的过滤器:

Configurations:
可选:用于指定各种计算配置。


Configuration:
name:配置名称。

value:配置的值。
可用配置:

示例 1

在以下示例中,将使用 coverage-data/blfile.coveragedata 作为基线文件收集对 coverage-data/coverage.coveragedata 生成的报告,报告存储在 coverage-reports 中,将应用阈值为 80% 的 line_coverage_threshold 过滤器。代码覆盖计算将排除缺省构造函数。

<code-coverage-report outputDir="coverage-reports/" coverageDataFile="coverage-data/coverage.coveragedata" baseLineFiles="coverage-data/blfile.coveragedata"> <filters> <filter type="line_coverage_threshold" value="80"/> </filters> <configurations> <configuration name="excludeDefaultConstructor" value="true"/> </configurations> </code-coverage-report>

示例 2

在以下示例中,将使用 blfile1.coveragedatablfile2.coveragedata 作为基线文件收集对两个覆盖文件 coverage1.coveragedatacoverage2.coveragedata 生成的报告,报告存储在 coverage-reports 中。缺省情况下,代码覆盖计算中包含了缺省构造函数。

<code-coverage-report outputDir="coverage-reports/" coverageDataFile="coverage-data/coverage1.coveragedata;coverage-data/coverage2.coveragedata" baseLineFiles="coverage-data/blfile1.coveragedata;coverage-data/blfile2.coveragedata"> </code-coverage-report>

在工作台中查看代码覆盖结果

要在工作台中查看 Ant 脚本代码覆盖结果:

禁用代码覆盖

要使用 ant 任务禁用已检测的类,请重新编译项目,或者如果启用了 saveBackups,可以将 .class 文件替换为 .class.bak 文件。

相关概念
代码覆盖指示符

相关任务
启用代码覆盖
配置代码覆盖级别和过滤器
配置代码覆盖指示符
分析代码覆盖报告