Skip to main content
Version: QB80

Publish EMMA Report

To publish EMMA report, you only need two steps:

  1. Generate EMMA XML report from Ant or Maven or any other build tool.
  2. Add EMMA publish step by choosing Publish -> EMMA Report from the step menu.

Generate EMMA Report

QuickBuild will NOT generate EMMA report automatically, so first make sure that the EMMA report is produced by ANT or by any other build tool. The following example shows how to generate EMMA code coverage with Ant EMMA task:
EMMA target in build.xml

<target name="emma.instr" depends="clean, compile.tests" if="emma.enabled">
<available file="lib/emma.jar" property="emma.available"/>
<fail unless="emma.available" message="Error: emma.jar not found" />
<path id="emma.lib.dir">
<pathelement location="${lib.dir}/emma.jar" />
<pathelement location="${lib.dir}/emma_ant.jar" />
</path>

<taskdef resource="emma_ant.properties" classpathref="emma.lib.dir" />
<mkdir dir="${emma.report.dir}" />
<emma>
<instr instrpath="${build.home}/classes"
destdir="${build.home}/classes"
metadatafile="${emma.report.dir}/metadata.emma"
merge="true" mode="overwrite" />
</emma>
</target>

<!-- Run all the JUnit Tests -->
<target name="junit" depends="emma.instr">
<mkdir dir="${junit.report.dir}" />
<mkdir dir="${junit.report.dir}/test-out" />
<record name="${junit.report.dir}/test-output.txt" append="no" action="start"/>
<junit printsummary="yes" haltonfailure="false" fork="yes">
<jvmarg value="-Demma.coverage.out.file=${emma.report.dir}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />

<classpath refid="test.classpath"/>
<!-- <formatter type="plain"/> -->
<formatter type="xml"/>
<batchtest fork="yes" todir="${junit.report.dir}/test-out">
<fileset dir="${test.home}">
<include name="**/*Test.java"/>
<exclude name="**/*AbstractTest.java"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${junit.report.dir}">
<fileset dir="${junit.report.dir}/test-out">
<include name="TEST-*.xml"/>
</fileset>
</junitreport>
<record name="${junit.report.dir}/test-output.txt" action="stop"/>
</target>

<!-- Generate Emma Report -->
<target name="emma.report" depends="junit" if="emma.enabled">
<emma enabled="true">
<report sourcepath="${dir.src}"
sort="+name,+class,+method,+block"
metrics="method:70,block:80,line:80,class:100">
<fileset dir="${emma.report.dir}">
<include name="*.emma" />
</fileset>
<xml outfile="${emma.report.dir}/coverage.xml" depth="method" />
</report>
</emma>

<!-- deleted the instrumented .class files -->
<!-- <delete dir="${build.home}/classes" /> -->
</target>

The code snippet will generate the XML report for all the source code. XML report coverage.xml will be generated in 'reports/emma directory' directory which is relative to the workspace directory.

After adding the target above, generate the XML code coverage report for your source code, and after that you can tell QuickBuild to publish the results.

Publish EMMA Report

Add Publish EMMA Report step to your build workflow. If you have several report sets, you can add several steps with different report set names. Reference this page for more details.