1*7e63c127SSorin Basca<?xml version="1.0" encoding="UTF-8" ?> 2*7e63c127SSorin Basca<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3*7e63c127SSorin Basca<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 4*7e63c127SSorin Basca<head> 5*7e63c127SSorin Basca <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6*7e63c127SSorin Basca <link rel="stylesheet" href="resources/doc.css" charset="UTF-8" type="text/css" /> 7*7e63c127SSorin Basca <link rel="stylesheet" href="../coverage/jacoco-resources/prettify.css" charset="UTF-8" type="text/css" /> 8*7e63c127SSorin Basca <link rel="shortcut icon" href="resources/report.gif" type="image/gif" /> 9*7e63c127SSorin Basca <script type="text/javascript" src="../coverage/jacoco-resources/prettify.js"></script> 10*7e63c127SSorin Basca <title>JaCoCo - Ant Tasks</title> 11*7e63c127SSorin Basca</head> 12*7e63c127SSorin Basca<body onload="prettyPrint()"> 13*7e63c127SSorin Basca 14*7e63c127SSorin Basca<div class="breadcrumb"> 15*7e63c127SSorin Basca <a href="../index.html" class="el_report">JaCoCo</a> > 16*7e63c127SSorin Basca <a href="index.html" class="el_group">Documentation</a> > 17*7e63c127SSorin Basca <span class="el_source">Ant Tasks</span> 18*7e63c127SSorin Basca</div> 19*7e63c127SSorin Basca<div id="content"> 20*7e63c127SSorin Basca 21*7e63c127SSorin Basca<h1>Ant Tasks</h1> 22*7e63c127SSorin Basca 23*7e63c127SSorin Basca<p> 24*7e63c127SSorin Basca JaCoCo comes with Ant tasks to launch Java programs with execution recording 25*7e63c127SSorin Basca and for creating coverage reports from the recorded data. Execution data can 26*7e63c127SSorin Basca be collected and managed with the tasks 27*7e63c127SSorin Basca <a href="#coverage"><code>coverage</code></a>, 28*7e63c127SSorin Basca <a href="#agent"><code>agent</code></a>, 29*7e63c127SSorin Basca <a href="#dump"><code>dump</code></a> and 30*7e63c127SSorin Basca <a href="#merge"><code>merge</code></a>. Reports in different formats are 31*7e63c127SSorin Basca created with the <a href="#report"><code>report</code></a> task. For 32*7e63c127SSorin Basca <a href="offline.html">offline instrumentation</a> the task 33*7e63c127SSorin Basca <a href="#instrument"><code>instrument</code></a> can be used to prepare class 34*7e63c127SSorin Basca files. 35*7e63c127SSorin Basca</p> 36*7e63c127SSorin Basca 37*7e63c127SSorin Basca<p class="hint"> 38*7e63c127SSorin Basca If you want to have line number information included in the coverage reports 39*7e63c127SSorin Basca or you want source code highlighting the class files of the test target must 40*7e63c127SSorin Basca be compiled with debug information. 41*7e63c127SSorin Basca</p> 42*7e63c127SSorin Basca 43*7e63c127SSorin Basca<h2>Example</h2> 44*7e63c127SSorin Basca 45*7e63c127SSorin Basca<p> 46*7e63c127SSorin Basca The JaCoCo distribution contains a simple example how code coverage can be 47*7e63c127SSorin Basca added to a Ant based build. The 48*7e63c127SSorin Basca <a href="examples/build/build.xml">build script</a> compiles Java sources, 49*7e63c127SSorin Basca runs an simple Java program and creates a coverage report. The complete 50*7e63c127SSorin Basca example is located in the <code>./doc/examples/build</code> folder of the 51*7e63c127SSorin Basca distribution. 52*7e63c127SSorin Basca</p> 53*7e63c127SSorin Basca 54*7e63c127SSorin Basca 55*7e63c127SSorin Basca<h2>Prerequisites</h2> 56*7e63c127SSorin Basca 57*7e63c127SSorin Basca<p> 58*7e63c127SSorin Basca The JaCoCo Ant tasks require 59*7e63c127SSorin Basca</p> 60*7e63c127SSorin Basca 61*7e63c127SSorin Basca<ul> 62*7e63c127SSorin Basca <li>Ant 1.7.0 or higher and</li> 63*7e63c127SSorin Basca <li>Java 1.5 or higher (for both, the Ant runner and the test executor).</li> 64*7e63c127SSorin Basca</ul> 65*7e63c127SSorin Basca 66*7e63c127SSorin Basca 67*7e63c127SSorin Basca<p>All tasks are defined in <code>jacocoant.jar</code> (which is part of the 68*7e63c127SSorin Basca distribution) and can be included in your Ant scripts with the usual 69*7e63c127SSorin Basca <code>taskdef</code> declaration: 70*7e63c127SSorin Basca</p> 71*7e63c127SSorin Basca 72*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 73*7e63c127SSorin Basca<project name="Example" xmlns:jacoco="antlib:org.jacoco.ant"> 74*7e63c127SSorin Basca 75*7e63c127SSorin Basca <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml"> 76*7e63c127SSorin Basca <classpath path="<i>path_to_jacoco</i>/lib/jacocoant.jar"/> 77*7e63c127SSorin Basca </taskdef> 78*7e63c127SSorin Basca 79*7e63c127SSorin Basca ... 80*7e63c127SSorin Basca 81*7e63c127SSorin Basca</project> 82*7e63c127SSorin Basca</pre> 83*7e63c127SSorin Basca 84*7e63c127SSorin Basca<p> 85*7e63c127SSorin Basca Alternatively you might also place the <code>jacocoant.jar</code> in your 86*7e63c127SSorin Basca Ant <code><i>ANT_HOME</i>/lib</code> folder. If you use the name space URI 87*7e63c127SSorin Basca <code>antlib:org.jacoco.ant</code> for JaCoCo tasks Ant will find them 88*7e63c127SSorin Basca automatically without the <code>taskdef</code> declaration above. 89*7e63c127SSorin Basca</p> 90*7e63c127SSorin Basca 91*7e63c127SSorin Basca<p class="hint"> 92*7e63c127SSorin Basca Declaring a XML namespace for JaCoCo tasks is optional but always recommended 93*7e63c127SSorin Basca if you mix tasks from different libraries. All subsequent examples use the 94*7e63c127SSorin Basca <code>jacoco</code> prefix declared above. If you don't declare a separate 95*7e63c127SSorin Basca namespace the <code>jacoco</code> prefix must be removed from the following 96*7e63c127SSorin Basca examples. 97*7e63c127SSorin Basca</p> 98*7e63c127SSorin Basca 99*7e63c127SSorin Basca<h2><a name="coverage">Task <code>coverage</code></a></h2> 100*7e63c127SSorin Basca 101*7e63c127SSorin Basca<p> 102*7e63c127SSorin Basca The standard Ant tasks to launch Java programs are <code>java</code>, <code>junit</code> and 103*7e63c127SSorin Basca <code>testng</code>. To add code coverage recording to these tasks they can 104*7e63c127SSorin Basca simply be wrapped with the <code>coverage</code> task as shown in the 105*7e63c127SSorin Basca following examples: 106*7e63c127SSorin Basca</p> 107*7e63c127SSorin Basca 108*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 109*7e63c127SSorin Basca<jacoco:coverage> 110*7e63c127SSorin Basca <java classname="org.jacoco.examples.HelloJaCoCo" fork="true"> 111*7e63c127SSorin Basca <classpath> 112*7e63c127SSorin Basca <pathelement location="./bin"/> 113*7e63c127SSorin Basca </classpath> 114*7e63c127SSorin Basca </java> 115*7e63c127SSorin Basca</jacoco:coverage> 116*7e63c127SSorin Basca 117*7e63c127SSorin Basca 118*7e63c127SSorin Basca<jacoco:coverage> 119*7e63c127SSorin Basca <junit fork="true" forkmode="once"> 120*7e63c127SSorin Basca <test name="org.jacoco.examples.HelloJaCoCoTest"/> 121*7e63c127SSorin Basca <classpath> 122*7e63c127SSorin Basca <pathelement location="./bin"/> 123*7e63c127SSorin Basca </classpath> 124*7e63c127SSorin Basca </junit> 125*7e63c127SSorin Basca</jacoco:coverage> 126*7e63c127SSorin Basca</pre> 127*7e63c127SSorin Basca 128*7e63c127SSorin Basca<p> 129*7e63c127SSorin Basca Resulting coverage information is collected during execution and written 130*7e63c127SSorin Basca to a file when the process terminates. Note the <code>fork</code> attribute 131*7e63c127SSorin Basca above in the wrapped <code>java</code> task. 132*7e63c127SSorin Basca</p> 133*7e63c127SSorin Basca 134*7e63c127SSorin Basca<p class="hint"> 135*7e63c127SSorin Basca The nested task always has to declare <code>fork="true"</code>, otherwise the 136*7e63c127SSorin Basca <code>coverage</code> task can't record coverage information and will fail. 137*7e63c127SSorin Basca In addition the <code>junit</code> task should declare 138*7e63c127SSorin Basca <code>forkmode="once"</code> to avoid starting a new JVM for every single test 139*7e63c127SSorin Basca case and decreasing execution performance dramatically (unless this is 140*7e63c127SSorin Basca required by the nature of the test cases). Note that 141*7e63c127SSorin Basca <code>forkmode="perTest"</code> or <code>forkmode="perBatch"</code> should not 142*7e63c127SSorin Basca be combined with <code>append="false"</code> as the execution data file is 143*7e63c127SSorin Basca overwritten with the execution of every test. 144*7e63c127SSorin Basca</p> 145*7e63c127SSorin Basca 146*7e63c127SSorin Basca<p> 147*7e63c127SSorin Basca The coverage task must wrap exactly one task. While it typically works without 148*7e63c127SSorin Basca any configuration, the behavior can be adjusted with some optional attributes: 149*7e63c127SSorin Basca</p> 150*7e63c127SSorin Basca 151*7e63c127SSorin Basca<table class="coverage"> 152*7e63c127SSorin Basca <thead> 153*7e63c127SSorin Basca <tr> 154*7e63c127SSorin Basca <td>Attribute</td> 155*7e63c127SSorin Basca <td>Description</td> 156*7e63c127SSorin Basca <td>Default</td> 157*7e63c127SSorin Basca </tr> 158*7e63c127SSorin Basca </thead> 159*7e63c127SSorin Basca <tbody> 160*7e63c127SSorin Basca <tr> 161*7e63c127SSorin Basca <td><code>enabled</code></td> 162*7e63c127SSorin Basca <td>If set to <code>true</code> coverage data will be collected for the contained task.</td> 163*7e63c127SSorin Basca <td><code>true</code></td> 164*7e63c127SSorin Basca </tr> 165*7e63c127SSorin Basca <tr> 166*7e63c127SSorin Basca <td><code>destfile</code></td> 167*7e63c127SSorin Basca <td>Path to the output file for execution data.</td> 168*7e63c127SSorin Basca <td><code>jacoco.exec</code></td> 169*7e63c127SSorin Basca </tr> 170*7e63c127SSorin Basca <tr> 171*7e63c127SSorin Basca <td><code>append</code></td> 172*7e63c127SSorin Basca <td>If set to <code>true</code> and the execution data file already 173*7e63c127SSorin Basca exists, coverage data is appended to the existing file. If set to 174*7e63c127SSorin Basca <code>false</code>, an existing execution data file will be replaced. 175*7e63c127SSorin Basca </td> 176*7e63c127SSorin Basca <td><code>true</code></td> 177*7e63c127SSorin Basca </tr> 178*7e63c127SSorin Basca <tr> 179*7e63c127SSorin Basca <td><code>includes</code></td> 180*7e63c127SSorin Basca <td>A list of class names that should be included in execution analysis. 181*7e63c127SSorin Basca The list entries are separated by a colon (<code>:</code>) and 182*7e63c127SSorin Basca may use wildcard characters (<code>*</code> and <code>?</code>). 183*7e63c127SSorin Basca Except for performance optimization or technical corner cases this 184*7e63c127SSorin Basca option is normally not required. 185*7e63c127SSorin Basca </td> 186*7e63c127SSorin Basca <td><code>*</code> (all classes)</td> 187*7e63c127SSorin Basca </tr> 188*7e63c127SSorin Basca <tr> 189*7e63c127SSorin Basca <td><code>excludes</code></td> 190*7e63c127SSorin Basca <td>A list of class names that should be excluded from execution analysis. 191*7e63c127SSorin Basca The list entries are separated by a colon (<code>:</code>) and 192*7e63c127SSorin Basca may use wildcard characters (<code>*</code> and <code>?</code>). 193*7e63c127SSorin Basca Except for performance optimization or technical corner cases this 194*7e63c127SSorin Basca option is normally not required. If you want to exclude classes from 195*7e63c127SSorin Basca the report please configure the <code>report</code> task accordingly. 196*7e63c127SSorin Basca </td> 197*7e63c127SSorin Basca <td><i>empty</i> (no excluded classes)</td> 198*7e63c127SSorin Basca </tr> 199*7e63c127SSorin Basca <tr> 200*7e63c127SSorin Basca <td><code>exclclassloader</code></td> 201*7e63c127SSorin Basca <td>A list of class loader names, that should be excluded from execution 202*7e63c127SSorin Basca analysis. The list entries are separated by a colon 203*7e63c127SSorin Basca (<code>:</code>) and may use wildcard characters (<code>*</code> and 204*7e63c127SSorin Basca <code>?</code>). This option might be required in case of special 205*7e63c127SSorin Basca frameworks that conflict with JaCoCo code instrumentation, in 206*7e63c127SSorin Basca particular class loaders that do not have access to the Java runtime 207*7e63c127SSorin Basca classes. 208*7e63c127SSorin Basca </td> 209*7e63c127SSorin Basca <td><code>sun.reflect.DelegatingClassLoader</code></td> 210*7e63c127SSorin Basca </tr> 211*7e63c127SSorin Basca <tr> 212*7e63c127SSorin Basca <td><code>inclbootstrapclasses</code></td> 213*7e63c127SSorin Basca <td>Specifies whether also classes from the bootstrap classloader should 214*7e63c127SSorin Basca be instrumented. Use this feature with caution, it needs heavy 215*7e63c127SSorin Basca includes/excludes tuning. 216*7e63c127SSorin Basca </td> 217*7e63c127SSorin Basca <td><code>false</code></td> 218*7e63c127SSorin Basca </tr> 219*7e63c127SSorin Basca <tr> 220*7e63c127SSorin Basca <td><code>inclnolocationclasses</code></td> 221*7e63c127SSorin Basca <td>Specifies whether also classes without a source location should be 222*7e63c127SSorin Basca instrumented. Normally such classes are generated at runtime e.g. by 223*7e63c127SSorin Basca mocking frameworks and are therefore excluded by default. 224*7e63c127SSorin Basca </td> 225*7e63c127SSorin Basca <td><code>false</code></td> 226*7e63c127SSorin Basca </tr> 227*7e63c127SSorin Basca <tr> 228*7e63c127SSorin Basca <td><code>sessionid</code></td> 229*7e63c127SSorin Basca <td>A session identifier that is written with the execution data. Without 230*7e63c127SSorin Basca this parameter a random identifier is created by the agent. 231*7e63c127SSorin Basca </td> 232*7e63c127SSorin Basca <td><i>auto-generated</i></td> 233*7e63c127SSorin Basca </tr> 234*7e63c127SSorin Basca <tr> 235*7e63c127SSorin Basca <td><code>dumponexit</code></td> 236*7e63c127SSorin Basca <td>If set to <code>true</code> coverage data will be written on VM 237*7e63c127SSorin Basca shutdown. 238*7e63c127SSorin Basca </td> 239*7e63c127SSorin Basca <td><code>true</code></td> 240*7e63c127SSorin Basca </tr> 241*7e63c127SSorin Basca <tr> 242*7e63c127SSorin Basca <td><code>output</code></td> 243*7e63c127SSorin Basca <td>Output method to use for writing coverage data. Valid options are: 244*7e63c127SSorin Basca <ul> 245*7e63c127SSorin Basca <li><code>file</code>: At VM termination execution data is written to 246*7e63c127SSorin Basca the file specified in the <code>destfile</code> attribute.</li> 247*7e63c127SSorin Basca <li><code>tcpserver</code>: The agent listens for incoming connections 248*7e63c127SSorin Basca on the TCP port specified by the <code>address</code> and 249*7e63c127SSorin Basca <code>port</code> attribute. Execution data is written to this 250*7e63c127SSorin Basca TCP connection.</li> 251*7e63c127SSorin Basca <li><code>tcpclient</code>: At startup the agent connects to the TCP 252*7e63c127SSorin Basca port specified by the <code>address</code> and <code>port</code> 253*7e63c127SSorin Basca attribute. Execution data is written to this TCP connection.</li> 254*7e63c127SSorin Basca <li><code>none</code>: Do not produce any output.</li> 255*7e63c127SSorin Basca </ul> 256*7e63c127SSorin Basca </td> 257*7e63c127SSorin Basca <td><code>file</code></td> 258*7e63c127SSorin Basca </tr> 259*7e63c127SSorin Basca <tr> 260*7e63c127SSorin Basca <td><code>address</code></td> 261*7e63c127SSorin Basca <td>IP address or hostname to bind to when the output method is 262*7e63c127SSorin Basca <code>tcpserver</code> or connect to when the output method is 263*7e63c127SSorin Basca <code>tcpclient</code>. In <code>tcpserver</code> mode the value 264*7e63c127SSorin Basca "<code>*</code>" causes the agent to accept connections on any local 265*7e63c127SSorin Basca address. 266*7e63c127SSorin Basca </td> 267*7e63c127SSorin Basca <td><i>loopback interface</i></td> 268*7e63c127SSorin Basca </tr> 269*7e63c127SSorin Basca <tr> 270*7e63c127SSorin Basca <td><code>port</code></td> 271*7e63c127SSorin Basca <td>Port to bind to when the output method is <code>tcpserver</code> or 272*7e63c127SSorin Basca connect to when the output method is <code>tcpclient</code>. In 273*7e63c127SSorin Basca <code>tcpserver</code> mode the port must be available, which means 274*7e63c127SSorin Basca that if multiple JaCoCo agents should run on the same machine, 275*7e63c127SSorin Basca different ports have to be specified. 276*7e63c127SSorin Basca </td> 277*7e63c127SSorin Basca <td><code>6300</code></td> 278*7e63c127SSorin Basca </tr> 279*7e63c127SSorin Basca <tr> 280*7e63c127SSorin Basca <td><code>classdumpdir</code></td> 281*7e63c127SSorin Basca <td>Location relative to the working directory where all class files seen 282*7e63c127SSorin Basca by the agent are dumped to. This can be useful for debugging purposes 283*7e63c127SSorin Basca or in case of dynamically created classes for example when scripting 284*7e63c127SSorin Basca engines are used. 285*7e63c127SSorin Basca </td> 286*7e63c127SSorin Basca <td><i>no dumps</i></td> 287*7e63c127SSorin Basca </tr> 288*7e63c127SSorin Basca <tr> 289*7e63c127SSorin Basca <td><code>jmx</code></td> 290*7e63c127SSorin Basca <td>If set to <code>true</code> the agent exposes 291*7e63c127SSorin Basca <a href="./api/org/jacoco/agent/rt/IAgent.html">functionality</a> via 292*7e63c127SSorin Basca JMX under the name <code>org.jacoco:type=Runtime</code>. 293*7e63c127SSorin Basca </td> 294*7e63c127SSorin Basca <td><code>false</code></td> 295*7e63c127SSorin Basca </tr> 296*7e63c127SSorin Basca </tbody> 297*7e63c127SSorin Basca</table> 298*7e63c127SSorin Basca 299*7e63c127SSorin Basca 300*7e63c127SSorin Basca<h2><a name="agent">Task <code>agent</code></a></h2> 301*7e63c127SSorin Basca 302*7e63c127SSorin Basca<p> 303*7e63c127SSorin Basca If the <code>coverage</code> task is not suitable for your launch target, you 304*7e63c127SSorin Basca might alternatively use the <code>agent</code> task to create the 305*7e63c127SSorin Basca <a href="agent.html">Java agent</a> parameter. The following example defines a 306*7e63c127SSorin Basca Ant property with the name <code>agentvmparam</code> that can be directly used 307*7e63c127SSorin Basca as a Java VM parameter: 308*7e63c127SSorin Basca</p> 309*7e63c127SSorin Basca 310*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 311*7e63c127SSorin Basca<jacoco:agent property="agentvmparam"/> 312*7e63c127SSorin Basca</pre> 313*7e63c127SSorin Basca 314*7e63c127SSorin Basca<p> 315*7e63c127SSorin Basca This task has the same attributes as the <code>coverage</code> task plus an 316*7e63c127SSorin Basca additional property to specify the target property name: 317*7e63c127SSorin Basca</p> 318*7e63c127SSorin Basca 319*7e63c127SSorin Basca<table class="coverage"> 320*7e63c127SSorin Basca <thead> 321*7e63c127SSorin Basca <tr> 322*7e63c127SSorin Basca <td>Attribute</td> 323*7e63c127SSorin Basca <td>Description</td> 324*7e63c127SSorin Basca <td>Default</td> 325*7e63c127SSorin Basca </tr> 326*7e63c127SSorin Basca </thead> 327*7e63c127SSorin Basca <tbody> 328*7e63c127SSorin Basca <tr> 329*7e63c127SSorin Basca <td><code>enabled</code></td> 330*7e63c127SSorin Basca <td>When this variable is set to <code>false</code> the value of <code>property</code> will be set to an empty string, effectively 331*7e63c127SSorin Basca disabling coverage instrumentation for any tasks that used the value.</td> 332*7e63c127SSorin Basca <td><code>true</code></td> 333*7e63c127SSorin Basca </tr> 334*7e63c127SSorin Basca <tr> 335*7e63c127SSorin Basca <td><code>property</code></td> 336*7e63c127SSorin Basca <td>Name of the Ant property to set.</td> 337*7e63c127SSorin Basca <td><i>none (required)</i></td> 338*7e63c127SSorin Basca </tr> 339*7e63c127SSorin Basca <tr> 340*7e63c127SSorin Basca <td colspan="3"><i>All attributes of the <code>coverage</code> task.</i></td> 341*7e63c127SSorin Basca </tr> 342*7e63c127SSorin Basca </tbody> 343*7e63c127SSorin Basca</table> 344*7e63c127SSorin Basca 345*7e63c127SSorin Basca 346*7e63c127SSorin Basca<h2><a name="dump">Task <code>dump</code></a></h2> 347*7e63c127SSorin Basca 348*7e63c127SSorin Basca<p> 349*7e63c127SSorin Basca This task allows to remotely collect execution data from another JVM without 350*7e63c127SSorin Basca stopping it. For example: 351*7e63c127SSorin Basca</p> 352*7e63c127SSorin Basca 353*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 354*7e63c127SSorin Basca<jacoco:dump address="server.example.com" reset="true" destfile="remote.exec"/> 355*7e63c127SSorin Basca</pre> 356*7e63c127SSorin Basca 357*7e63c127SSorin Basca<p> 358*7e63c127SSorin Basca Remote dumps are usefull for long running Java processes like application 359*7e63c127SSorin Basca servers. 360*7e63c127SSorin Basca</p> 361*7e63c127SSorin Basca 362*7e63c127SSorin Basca<p class="hint"> 363*7e63c127SSorin Basca The target JVM needs to have a <a href="agent.html">JaCoCo agent</a> 364*7e63c127SSorin Basca configured with <code>output</code> mode <code>tcpserver</code>. See 365*7e63c127SSorin Basca <a href="#coverage"><code>coverage</code></a> and 366*7e63c127SSorin Basca <a href="#agent"><code>agent</code></a> tasks above. 367*7e63c127SSorin Basca</p> 368*7e63c127SSorin Basca 369*7e63c127SSorin Basca<p> 370*7e63c127SSorin Basca The <code>dump</code> task has the following attributes: 371*7e63c127SSorin Basca</p> 372*7e63c127SSorin Basca 373*7e63c127SSorin Basca<table class="coverage"> 374*7e63c127SSorin Basca <thead> 375*7e63c127SSorin Basca <tr> 376*7e63c127SSorin Basca <td>Attribute</td> 377*7e63c127SSorin Basca <td>Description</td> 378*7e63c127SSorin Basca <td>Default</td> 379*7e63c127SSorin Basca </tr> 380*7e63c127SSorin Basca </thead> 381*7e63c127SSorin Basca <tbody> 382*7e63c127SSorin Basca <tr> 383*7e63c127SSorin Basca <td><code>address</code></td> 384*7e63c127SSorin Basca <td>Target IP address or DNS name.</td> 385*7e63c127SSorin Basca <td><code>localhost</code></td> 386*7e63c127SSorin Basca </tr> 387*7e63c127SSorin Basca <tr> 388*7e63c127SSorin Basca <td><code>port</code></td> 389*7e63c127SSorin Basca <td>Target TCP port.</td> 390*7e63c127SSorin Basca <td><code>6300</code></td> 391*7e63c127SSorin Basca </tr> 392*7e63c127SSorin Basca <tr> 393*7e63c127SSorin Basca <td><code>retryCount</code></td> 394*7e63c127SSorin Basca <td>Number of retries which the goal will attempt to establish a 395*7e63c127SSorin Basca connection. This can be used to wait until the target JVM is 396*7e63c127SSorin Basca successfully launched.</td> 397*7e63c127SSorin Basca <td><code>10</code></td> 398*7e63c127SSorin Basca </tr> 399*7e63c127SSorin Basca <tr> 400*7e63c127SSorin Basca <td><code>dump</code></td> 401*7e63c127SSorin Basca <td>Flag whether execution data should be dumped.</td> 402*7e63c127SSorin Basca <td><code>true</code></td> 403*7e63c127SSorin Basca </tr> 404*7e63c127SSorin Basca <tr> 405*7e63c127SSorin Basca <td><code>reset</code></td> 406*7e63c127SSorin Basca <td>Flag whether execution data should be reset in the target agent after 407*7e63c127SSorin Basca the dump.</td> 408*7e63c127SSorin Basca <td><code>false</code></td> 409*7e63c127SSorin Basca </tr> 410*7e63c127SSorin Basca <tr> 411*7e63c127SSorin Basca <td><code>destfile</code></td> 412*7e63c127SSorin Basca <td>File location to write the collected execution data to.</td> 413*7e63c127SSorin Basca <td><i>none (required if dump=true)</i></td> 414*7e63c127SSorin Basca </tr> 415*7e63c127SSorin Basca <tr> 416*7e63c127SSorin Basca <td><code>append</code></td> 417*7e63c127SSorin Basca <td>If set to <code>true</code> and the execution data file already 418*7e63c127SSorin Basca exists, coverage data is appended to the existing file. If set to 419*7e63c127SSorin Basca <code>false</code>, an existing execution data file will be replaced. 420*7e63c127SSorin Basca </td> 421*7e63c127SSorin Basca <td><code>true</code></td> 422*7e63c127SSorin Basca </tr> 423*7e63c127SSorin Basca </tbody> 424*7e63c127SSorin Basca</table> 425*7e63c127SSorin Basca 426*7e63c127SSorin Basca 427*7e63c127SSorin Basca<h2><a name="merge">Task <code>merge</code></a></h2> 428*7e63c127SSorin Basca 429*7e63c127SSorin Basca<p> 430*7e63c127SSorin Basca This task can be used to merge the execution data from multiple test runs 431*7e63c127SSorin Basca into a single data store. 432*7e63c127SSorin Basca</p> 433*7e63c127SSorin Basca 434*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 435*7e63c127SSorin Basca<jacoco:merge destfile="merged.exec"> 436*7e63c127SSorin Basca <fileset dir="executionData" includes="*.exec"/> 437*7e63c127SSorin Basca</jacoco:merge> 438*7e63c127SSorin Basca</pre> 439*7e63c127SSorin Basca 440*7e63c127SSorin Basca<p> 441*7e63c127SSorin Basca The task definition can contain any number of resource collection types and 442*7e63c127SSorin Basca has the following mandatory attribute: 443*7e63c127SSorin Basca</p> 444*7e63c127SSorin Basca 445*7e63c127SSorin Basca<table class="coverage"> 446*7e63c127SSorin Basca <thead> 447*7e63c127SSorin Basca <tr> 448*7e63c127SSorin Basca <td>Attribute</td> 449*7e63c127SSorin Basca <td>Description</td> 450*7e63c127SSorin Basca <td>Default</td> 451*7e63c127SSorin Basca </tr> 452*7e63c127SSorin Basca </thead> 453*7e63c127SSorin Basca <tbody> 454*7e63c127SSorin Basca <tr> 455*7e63c127SSorin Basca <td><code>destfile</code></td> 456*7e63c127SSorin Basca <td>File location to write the merged execution data to.</td> 457*7e63c127SSorin Basca <td><i>none (required)</i></td> 458*7e63c127SSorin Basca </tr> 459*7e63c127SSorin Basca </tbody> 460*7e63c127SSorin Basca</table> 461*7e63c127SSorin Basca 462*7e63c127SSorin Basca 463*7e63c127SSorin Basca<h2><a name="report">Task <code>report</code></a></h2> 464*7e63c127SSorin Basca 465*7e63c127SSorin Basca<p> 466*7e63c127SSorin Basca Finally different reports can be created with the <code>report</code> task. 467*7e63c127SSorin Basca A report task declaration consists of different sections, two specify the 468*7e63c127SSorin Basca input data, additional ones specify the output formats: 469*7e63c127SSorin Basca</p> 470*7e63c127SSorin Basca 471*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 472*7e63c127SSorin Basca<jacoco:report> 473*7e63c127SSorin Basca 474*7e63c127SSorin Basca <executiondata> 475*7e63c127SSorin Basca <file file="jacoco.exec"/> 476*7e63c127SSorin Basca </executiondata> 477*7e63c127SSorin Basca 478*7e63c127SSorin Basca <structure name="Example Project"> 479*7e63c127SSorin Basca <classfiles> 480*7e63c127SSorin Basca <fileset dir="classes"/> 481*7e63c127SSorin Basca </classfiles> 482*7e63c127SSorin Basca <sourcefiles encoding="UTF-8"> 483*7e63c127SSorin Basca <fileset dir="src"/> 484*7e63c127SSorin Basca </sourcefiles> 485*7e63c127SSorin Basca </structure> 486*7e63c127SSorin Basca 487*7e63c127SSorin Basca <html destdir="report"/> 488*7e63c127SSorin Basca 489*7e63c127SSorin Basca</jacoco:report> 490*7e63c127SSorin Basca</pre> 491*7e63c127SSorin Basca 492*7e63c127SSorin Basca<p> 493*7e63c127SSorin Basca As you can see from the example above the <code>report</code> task is based 494*7e63c127SSorin Basca on several nested elements: 495*7e63c127SSorin Basca</p> 496*7e63c127SSorin Basca 497*7e63c127SSorin Basca<h3>Element <code>executiondata</code></h3> 498*7e63c127SSorin Basca 499*7e63c127SSorin Basca<p> 500*7e63c127SSorin Basca Within this element Ant resources and resource collections can be specified, 501*7e63c127SSorin Basca that represent JaCoCo execution data files. If more than one execution data 502*7e63c127SSorin Basca file is specified, execution data is combined. A particular piece of code is 503*7e63c127SSorin Basca considered executed when it is marked as such in any of the input files. 504*7e63c127SSorin Basca</p> 505*7e63c127SSorin Basca 506*7e63c127SSorin Basca<h3>Element <code>structure</code></h3> 507*7e63c127SSorin Basca 508*7e63c127SSorin Basca<p> 509*7e63c127SSorin Basca This element defines the report structure. It might contain the following 510*7e63c127SSorin Basca nested elements: 511*7e63c127SSorin Basca</p> 512*7e63c127SSorin Basca 513*7e63c127SSorin Basca<ul> 514*7e63c127SSorin Basca <li><code>classfiles</code>: Container element for Ant resources and resource 515*7e63c127SSorin Basca collections that can specify Java class files, archive files (jar, war, ear 516*7e63c127SSorin Basca etc. or Pack200) or folders containing class files. Archives and folders are 517*7e63c127SSorin Basca searched recursively for class files.</li> 518*7e63c127SSorin Basca <li><code>sourcefiles</code>: Optional container element for Ant resources and 519*7e63c127SSorin Basca resource collections that specify corresponding source files. If source 520*7e63c127SSorin Basca files are specified, some report formats include highlighted source code. 521*7e63c127SSorin Basca Source files can be specified as individual files or as source directories.</li> 522*7e63c127SSorin Basca</ul> 523*7e63c127SSorin Basca 524*7e63c127SSorin Basca<p> 525*7e63c127SSorin Basca The <code>sourcefiles</code> element has these optional attributes: 526*7e63c127SSorin Basca</p> 527*7e63c127SSorin Basca 528*7e63c127SSorin Basca<table class="coverage"> 529*7e63c127SSorin Basca <thead> 530*7e63c127SSorin Basca <tr> 531*7e63c127SSorin Basca <td>Attribute</td> 532*7e63c127SSorin Basca <td>Description</td> 533*7e63c127SSorin Basca <td>Default</td> 534*7e63c127SSorin Basca </tr> 535*7e63c127SSorin Basca </thead> 536*7e63c127SSorin Basca <tbody> 537*7e63c127SSorin Basca <tr> 538*7e63c127SSorin Basca <td><code>encoding</code></td> 539*7e63c127SSorin Basca <td>Character encoding of the source files.</td> 540*7e63c127SSorin Basca <td>Platform default encoding</td> 541*7e63c127SSorin Basca </tr> 542*7e63c127SSorin Basca <tr> 543*7e63c127SSorin Basca <td><code>tabwidth</code></td> 544*7e63c127SSorin Basca <td>Number of whitespace characters that represent a tab character.</td> 545*7e63c127SSorin Basca <td>4 characters</td> 546*7e63c127SSorin Basca </tr> 547*7e63c127SSorin Basca </tbody> 548*7e63c127SSorin Basca</table> 549*7e63c127SSorin Basca 550*7e63c127SSorin Basca<p class="hint"> 551*7e63c127SSorin Basca <b>Important:</b> Source file resources must always be specified relative to 552*7e63c127SSorin Basca the respective source folder. If directory resources are given, they must 553*7e63c127SSorin Basca directly point to source folders. Otherwise source lookup will not succeed. 554*7e63c127SSorin Basca</p> 555*7e63c127SSorin Basca 556*7e63c127SSorin Basca<p> 557*7e63c127SSorin Basca Note that the <code>classfiles</code> and <code>sourcefiles</code> elements 558*7e63c127SSorin Basca accept any 559*7e63c127SSorin Basca <a href="http://ant.apache.org/manual/Types/resources.html#collection">Ant 560*7e63c127SSorin Basca resource collection</a>. Therefore also filtering the class file set is 561*7e63c127SSorin Basca possible and allows to narrow the scope of the report, for example: 562*7e63c127SSorin Basca</p> 563*7e63c127SSorin Basca 564*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 565*7e63c127SSorin Basca<classfiles> 566*7e63c127SSorin Basca <fileset dir="classes"> 567*7e63c127SSorin Basca <include name="org/jacoco/examples/important/**/*.class"/> 568*7e63c127SSorin Basca </fileset> 569*7e63c127SSorin Basca</classfiles> 570*7e63c127SSorin Basca</pre> 571*7e63c127SSorin Basca 572*7e63c127SSorin Basca<p class="hint"> 573*7e63c127SSorin Basca <b>Performance Warning:</b> Although it is technically possible and sometimes 574*7e63c127SSorin Basca convenient to use Ant's <code>zipfileset</code> to specify class or source 575*7e63c127SSorin Basca files, this resource type has poor performance characteristics and comes with 576*7e63c127SSorin Basca an huge memory overhead especially for large scale projects. 577*7e63c127SSorin Basca</p> 578*7e63c127SSorin Basca 579*7e63c127SSorin Basca<p> 580*7e63c127SSorin Basca The structure can be refined with a hierarchy of <code>group</code> elements. 581*7e63c127SSorin Basca This way the coverage report can reflect different modules of a software 582*7e63c127SSorin Basca project. For each group element the corresponding class and source files can 583*7e63c127SSorin Basca be specified separately. For example: 584*7e63c127SSorin Basca</p> 585*7e63c127SSorin Basca 586*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 587*7e63c127SSorin Basca<structure name="Example Project"> 588*7e63c127SSorin Basca <group name="Server"> 589*7e63c127SSorin Basca <classfiles> 590*7e63c127SSorin Basca <fileset dir="${workspace.dir}/org.jacoco.example.server/classes"/> 591*7e63c127SSorin Basca </classfiles> 592*7e63c127SSorin Basca <sourcefiles> 593*7e63c127SSorin Basca <fileset dir="${workspace.dir}/org.jacoco.example.server/src"/> 594*7e63c127SSorin Basca </sourcefiles> 595*7e63c127SSorin Basca </group> 596*7e63c127SSorin Basca <group name="Client"> 597*7e63c127SSorin Basca <classfiles> 598*7e63c127SSorin Basca <fileset dir="${workspace.dir}/org.jacoco.example.client/classes"/> 599*7e63c127SSorin Basca </classfiles> 600*7e63c127SSorin Basca <sourcefiles> 601*7e63c127SSorin Basca <fileset dir="${workspace.dir}/org.jacoco.example.client/src"/> 602*7e63c127SSorin Basca </sourcefiles> 603*7e63c127SSorin Basca </group> 604*7e63c127SSorin Basca 605*7e63c127SSorin Basca ... 606*7e63c127SSorin Basca 607*7e63c127SSorin Basca</structure> 608*7e63c127SSorin Basca</pre> 609*7e63c127SSorin Basca 610*7e63c127SSorin Basca<p> 611*7e63c127SSorin Basca Both <code>structure</code> and <code>group</code> elements have the following 612*7e63c127SSorin Basca mandatory attribute: 613*7e63c127SSorin Basca</p> 614*7e63c127SSorin Basca 615*7e63c127SSorin Basca<table class="coverage"> 616*7e63c127SSorin Basca <thead> 617*7e63c127SSorin Basca <tr> 618*7e63c127SSorin Basca <td>Attribute</td> 619*7e63c127SSorin Basca <td>Description</td> 620*7e63c127SSorin Basca <td>Default</td> 621*7e63c127SSorin Basca </tr> 622*7e63c127SSorin Basca </thead> 623*7e63c127SSorin Basca <tbody> 624*7e63c127SSorin Basca <tr> 625*7e63c127SSorin Basca <td><code>name</code></td> 626*7e63c127SSorin Basca <td>Name of the structure or group.</td> 627*7e63c127SSorin Basca <td><i>none (required)</i></td> 628*7e63c127SSorin Basca </tr> 629*7e63c127SSorin Basca </tbody> 630*7e63c127SSorin Basca</table> 631*7e63c127SSorin Basca 632*7e63c127SSorin Basca<h3>Element <code>html</code></h3> 633*7e63c127SSorin Basca 634*7e63c127SSorin Basca<p> 635*7e63c127SSorin Basca Create a multi-page report in HTML format. The report can either be written as 636*7e63c127SSorin Basca multiple files into a directory or compressed into a single ZIP file. 637*7e63c127SSorin Basca</p> 638*7e63c127SSorin Basca 639*7e63c127SSorin Basca<table class="coverage"> 640*7e63c127SSorin Basca <thead> 641*7e63c127SSorin Basca <tr> 642*7e63c127SSorin Basca <td>Attribute</td> 643*7e63c127SSorin Basca <td>Description</td> 644*7e63c127SSorin Basca <td>Default</td> 645*7e63c127SSorin Basca </tr> 646*7e63c127SSorin Basca </thead> 647*7e63c127SSorin Basca <tbody> 648*7e63c127SSorin Basca <tr> 649*7e63c127SSorin Basca <td><code>destdir</code></td> 650*7e63c127SSorin Basca <td>Directory to create the report in. Either this property or 651*7e63c127SSorin Basca <code>destfile</code> has to be supplied.</td> 652*7e63c127SSorin Basca <td><i>none (required)</i></td> 653*7e63c127SSorin Basca </tr> 654*7e63c127SSorin Basca <tr> 655*7e63c127SSorin Basca <td><code>destfile</code></td> 656*7e63c127SSorin Basca <td>Zip file to create the report in. Either this property or 657*7e63c127SSorin Basca <code>destdir</code> has to be supplied.</td> 658*7e63c127SSorin Basca <td><i>none (required)</i></td> 659*7e63c127SSorin Basca </tr> 660*7e63c127SSorin Basca <tr> 661*7e63c127SSorin Basca <td><code>footer</code></td> 662*7e63c127SSorin Basca <td>Footer text for each report page.</td> 663*7e63c127SSorin Basca <td><i>no footer</i></td> 664*7e63c127SSorin Basca </tr> 665*7e63c127SSorin Basca <tr> 666*7e63c127SSorin Basca <td><code>encoding</code></td> 667*7e63c127SSorin Basca <td>Character encoding of generated HTML pages.</td> 668*7e63c127SSorin Basca <td><code>UTF-8</code></td> 669*7e63c127SSorin Basca </tr> 670*7e63c127SSorin Basca <tr> 671*7e63c127SSorin Basca <td><code>locale</code></td> 672*7e63c127SSorin Basca <td>Locale specified as ISO code (en, fr, jp, ...) used for number 673*7e63c127SSorin Basca formatting. Locale country and variant can be separated with an underscore 674*7e63c127SSorin Basca (de_CH).</td> 675*7e63c127SSorin Basca <td><i>platform locale</i></td> 676*7e63c127SSorin Basca </tr> 677*7e63c127SSorin Basca </tbody> 678*7e63c127SSorin Basca</table> 679*7e63c127SSorin Basca 680*7e63c127SSorin Basca<h3>Element <code>xml</code></h3> 681*7e63c127SSorin Basca 682*7e63c127SSorin Basca<p> 683*7e63c127SSorin Basca Create a single-file report in XML format. 684*7e63c127SSorin Basca</p> 685*7e63c127SSorin Basca 686*7e63c127SSorin Basca<table class="coverage"> 687*7e63c127SSorin Basca <thead> 688*7e63c127SSorin Basca <tr> 689*7e63c127SSorin Basca <td>Attribute</td> 690*7e63c127SSorin Basca <td>Description</td> 691*7e63c127SSorin Basca <td>Default</td> 692*7e63c127SSorin Basca </tr> 693*7e63c127SSorin Basca </thead> 694*7e63c127SSorin Basca <tbody> 695*7e63c127SSorin Basca <tr> 696*7e63c127SSorin Basca <td><code>destfile</code></td> 697*7e63c127SSorin Basca <td>Location to write the report file to.</td> 698*7e63c127SSorin Basca <td><i>none (required)</i></td> 699*7e63c127SSorin Basca </tr> 700*7e63c127SSorin Basca <tr> 701*7e63c127SSorin Basca <td><code>encoding</code></td> 702*7e63c127SSorin Basca <td>Encoding of the generated XML document.</td> 703*7e63c127SSorin Basca <td><code>UTF-8</code></td> 704*7e63c127SSorin Basca </tr> 705*7e63c127SSorin Basca </tbody> 706*7e63c127SSorin Basca</table> 707*7e63c127SSorin Basca 708*7e63c127SSorin Basca<h3>Element <code>csv</code></h3> 709*7e63c127SSorin Basca 710*7e63c127SSorin Basca<p> 711*7e63c127SSorin Basca Create single-file report in CSV format. 712*7e63c127SSorin Basca</p> 713*7e63c127SSorin Basca 714*7e63c127SSorin Basca<table class="coverage"> 715*7e63c127SSorin Basca <thead> 716*7e63c127SSorin Basca <tr> 717*7e63c127SSorin Basca <td>Attribute</td> 718*7e63c127SSorin Basca <td>Description</td> 719*7e63c127SSorin Basca <td>Default</td> 720*7e63c127SSorin Basca </tr> 721*7e63c127SSorin Basca </thead> 722*7e63c127SSorin Basca <tbody> 723*7e63c127SSorin Basca <tr> 724*7e63c127SSorin Basca <td><code>destfile</code></td> 725*7e63c127SSorin Basca <td>Location to write the report file to.</td> 726*7e63c127SSorin Basca <td><i>none (required)</i></td> 727*7e63c127SSorin Basca </tr> 728*7e63c127SSorin Basca <tr> 729*7e63c127SSorin Basca <td><code>encoding</code></td> 730*7e63c127SSorin Basca <td>Encoding of the generated CSV document.</td> 731*7e63c127SSorin Basca <td><code>UTF-8</code></td> 732*7e63c127SSorin Basca </tr> 733*7e63c127SSorin Basca </tbody> 734*7e63c127SSorin Basca</table> 735*7e63c127SSorin Basca 736*7e63c127SSorin Basca<h3>Element <code>check</code></h3> 737*7e63c127SSorin Basca 738*7e63c127SSorin Basca<p> 739*7e63c127SSorin Basca This report type does not actually create a report. It checks coverage 740*7e63c127SSorin Basca counters and reports violations of configured rules. Every rule is applied to 741*7e63c127SSorin Basca elements of a given type (class, package, bundle, etc.) and has a list of 742*7e63c127SSorin Basca limits which are checked for every element. The following example checks that 743*7e63c127SSorin Basca for every package the line coverage is at least 80% and no class is missed: 744*7e63c127SSorin Basca</p> 745*7e63c127SSorin Basca 746*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 747*7e63c127SSorin Basca<check> 748*7e63c127SSorin Basca <rule element="PACKAGE"> 749*7e63c127SSorin Basca <limit counter="LINE" value="COVEREDRATIO" minimum="80%"/> 750*7e63c127SSorin Basca <limit counter="CLASS" value="MISSEDCOUNT" maximum="0"/> 751*7e63c127SSorin Basca </rule> 752*7e63c127SSorin Basca</check> 753*7e63c127SSorin Basca</pre> 754*7e63c127SSorin Basca 755*7e63c127SSorin Basca<p> 756*7e63c127SSorin Basca The <code>check</code> element has the following attributes: 757*7e63c127SSorin Basca</p> 758*7e63c127SSorin Basca 759*7e63c127SSorin Basca<table class="coverage"> 760*7e63c127SSorin Basca <thead> 761*7e63c127SSorin Basca <tr> 762*7e63c127SSorin Basca <td>Attribute</td> 763*7e63c127SSorin Basca <td>Description</td> 764*7e63c127SSorin Basca <td>Default</td> 765*7e63c127SSorin Basca </tr> 766*7e63c127SSorin Basca </thead> 767*7e63c127SSorin Basca <tbody> 768*7e63c127SSorin Basca <tr> 769*7e63c127SSorin Basca <td><code>rules</code></td> 770*7e63c127SSorin Basca <td>List of rules to check.</td> 771*7e63c127SSorin Basca <td><i>none</i></td> 772*7e63c127SSorin Basca </tr> 773*7e63c127SSorin Basca <tr> 774*7e63c127SSorin Basca <td><code>failonviolation</code></td> 775*7e63c127SSorin Basca <td>Specifies whether build should fail in case of rule violations.</td> 776*7e63c127SSorin Basca <td><code>true</code></td> 777*7e63c127SSorin Basca </tr> 778*7e63c127SSorin Basca <tr> 779*7e63c127SSorin Basca <td><code>violationsproperty</code></td> 780*7e63c127SSorin Basca <td>The name of an Ant property which is filled with the violation 781*7e63c127SSorin Basca messages.</td> 782*7e63c127SSorin Basca <td><i>none</i></td> 783*7e63c127SSorin Basca </tr> 784*7e63c127SSorin Basca </tbody> 785*7e63c127SSorin Basca</table> 786*7e63c127SSorin Basca 787*7e63c127SSorin Basca<p> 788*7e63c127SSorin Basca Within the <code>check</code> element any number of <code>rule</code> elements 789*7e63c127SSorin Basca can be nested: 790*7e63c127SSorin Basca</p> 791*7e63c127SSorin Basca 792*7e63c127SSorin Basca<table class="coverage"> 793*7e63c127SSorin Basca <thead> 794*7e63c127SSorin Basca <tr> 795*7e63c127SSorin Basca <td>Attribute</td> 796*7e63c127SSorin Basca <td>Description</td> 797*7e63c127SSorin Basca <td>Default</td> 798*7e63c127SSorin Basca </tr> 799*7e63c127SSorin Basca </thead> 800*7e63c127SSorin Basca <tbody> 801*7e63c127SSorin Basca <tr> 802*7e63c127SSorin Basca <td><code>element</code></td> 803*7e63c127SSorin Basca <td>The elements this rule applies to. Possible values are 804*7e63c127SSorin Basca <code>BUNDLE</code>, <code>PACKAGE</code>, <code>CLASS</code>, 805*7e63c127SSorin Basca <code>SOURCEFILE</code> and <code>METHOD</code>.</td> 806*7e63c127SSorin Basca <td><code>BUNDLE</code></td> 807*7e63c127SSorin Basca </tr> 808*7e63c127SSorin Basca <tr> 809*7e63c127SSorin Basca <td><code>includes</code></td> 810*7e63c127SSorin Basca <td>A list of element names that should be checked. The list entries are 811*7e63c127SSorin Basca separated by a colon (:) and may use wildcard characters (* and ?).</td> 812*7e63c127SSorin Basca <td><code>*</code></td> 813*7e63c127SSorin Basca </tr> 814*7e63c127SSorin Basca <tr> 815*7e63c127SSorin Basca <td><code>excludes</code></td> 816*7e63c127SSorin Basca <td>A list of element names that should not be checked. The list entries 817*7e63c127SSorin Basca are separated by a colon (:) and may use wildcard characters (* and ?).</td> 818*7e63c127SSorin Basca <td><i>empty (no excludes)</i></td> 819*7e63c127SSorin Basca </tr> 820*7e63c127SSorin Basca <tr> 821*7e63c127SSorin Basca <td><code>limits</code></td> 822*7e63c127SSorin Basca <td>List of limits to check.</td> 823*7e63c127SSorin Basca <td><i>none</i></td> 824*7e63c127SSorin Basca </tr> 825*7e63c127SSorin Basca </tbody> 826*7e63c127SSorin Basca</table> 827*7e63c127SSorin Basca 828*7e63c127SSorin Basca<p> 829*7e63c127SSorin Basca Within the <code>rule</code> element any number of <code>limit</code> elements 830*7e63c127SSorin Basca can be nested: 831*7e63c127SSorin Basca</p> 832*7e63c127SSorin Basca 833*7e63c127SSorin Basca<table class="coverage"> 834*7e63c127SSorin Basca <thead> 835*7e63c127SSorin Basca <tr> 836*7e63c127SSorin Basca <td>Attribute</td> 837*7e63c127SSorin Basca <td>Description</td> 838*7e63c127SSorin Basca <td>Default</td> 839*7e63c127SSorin Basca </tr> 840*7e63c127SSorin Basca </thead> 841*7e63c127SSorin Basca <tbody> 842*7e63c127SSorin Basca <tr> 843*7e63c127SSorin Basca <td><code>counter</code></td> 844*7e63c127SSorin Basca <td>The <a href="counters.html">counter</a> which should be checked. 845*7e63c127SSorin Basca Possible options are <code>INSTRUCTION</code>, <code>LINE</code>, 846*7e63c127SSorin Basca <code>BRANCH</code>, <code>COMPLEXITY</code>, <code>METHOD</code> and 847*7e63c127SSorin Basca <code>CLASS</code>.</td> 848*7e63c127SSorin Basca <td><code>INSTRUCTION</code></td> 849*7e63c127SSorin Basca </tr> 850*7e63c127SSorin Basca <tr> 851*7e63c127SSorin Basca <td><code>value</code></td> 852*7e63c127SSorin Basca <td>The counter value that should be checked. Possible options are 853*7e63c127SSorin Basca <code>TOTALCOUNT</code>, <code>MISSEDCOUNT</code>, 854*7e63c127SSorin Basca <code>COVEREDCOUNT</code>, <code>MISSEDRATIO</code> and 855*7e63c127SSorin Basca <code>COVEREDRATIO</code>.</td> 856*7e63c127SSorin Basca <td><code>COVEREDRATIO</code></td> 857*7e63c127SSorin Basca </tr> 858*7e63c127SSorin Basca <tr> 859*7e63c127SSorin Basca <td><code>minimum</code></td> 860*7e63c127SSorin Basca <td>Expected minimum value. If the minimum refers to a ratio it must be 861*7e63c127SSorin Basca in the range from 0.0 to 1.0 where the number of decimal places will 862*7e63c127SSorin Basca also determine the precision in error messages. A limit ratio may 863*7e63c127SSorin Basca optionally be declared as a percentage where 0.80 and 80% represent 864*7e63c127SSorin Basca the same value.</td> 865*7e63c127SSorin Basca <td><i>none</i></td> 866*7e63c127SSorin Basca </tr> 867*7e63c127SSorin Basca <tr> 868*7e63c127SSorin Basca <td><code>maximum</code></td> 869*7e63c127SSorin Basca <td>Expected maximum value, see <code>minimum</code> for details.</td> 870*7e63c127SSorin Basca <td><i>none</i></td> 871*7e63c127SSorin Basca </tr> 872*7e63c127SSorin Basca </tbody> 873*7e63c127SSorin Basca</table> 874*7e63c127SSorin Basca 875*7e63c127SSorin Basca<h2><a name="instrument">Task <code>instrument</code></a></h2> 876*7e63c127SSorin Basca 877*7e63c127SSorin Basca<p class="hint"> 878*7e63c127SSorin Basca <b>Warning:</b> The preferred way for code coverage analysis with JaCoCo is 879*7e63c127SSorin Basca on-the-fly instrumentation. Offline instrumentation has several drawbacks and 880*7e63c127SSorin Basca should only be used if a specific scenario explicitly requires this mode. 881*7e63c127SSorin Basca Please consult <a href="offline.html">documentation</a> about offline 882*7e63c127SSorin Basca instrumentation before using this mode. 883*7e63c127SSorin Basca</p> 884*7e63c127SSorin Basca 885*7e63c127SSorin Basca<p> 886*7e63c127SSorin Basca This task is used for <a href="offline.html">offline instrumentation</a> of 887*7e63c127SSorin Basca class files. The task takes a set of files and writes instrumented 888*7e63c127SSorin Basca versions to a specified location. The task takes any file type as input. Java 889*7e63c127SSorin Basca class files are instrumented. Archives (jar, war, ear etc. or Pack200) are 890*7e63c127SSorin Basca searched recursively for class files which then get instrumented. All other 891*7e63c127SSorin Basca files are copied without modification. 892*7e63c127SSorin Basca</p> 893*7e63c127SSorin Basca 894*7e63c127SSorin Basca<pre class="source lang-xml linenums"> 895*7e63c127SSorin Basca<jacoco:instrument destdir="target/classes-instr"> 896*7e63c127SSorin Basca <fileset dir="target/classes" includes="**/*.class"/> 897*7e63c127SSorin Basca</jacoco:instrument> 898*7e63c127SSorin Basca</pre> 899*7e63c127SSorin Basca 900*7e63c127SSorin Basca<p> 901*7e63c127SSorin Basca The task definition can contain any number of resource collection types and 902*7e63c127SSorin Basca has the following mandatory attribute: 903*7e63c127SSorin Basca</p> 904*7e63c127SSorin Basca 905*7e63c127SSorin Basca<table class="coverage"> 906*7e63c127SSorin Basca <thead> 907*7e63c127SSorin Basca <tr> 908*7e63c127SSorin Basca <td>Attribute</td> 909*7e63c127SSorin Basca <td>Description</td> 910*7e63c127SSorin Basca <td>Default</td> 911*7e63c127SSorin Basca </tr> 912*7e63c127SSorin Basca </thead> 913*7e63c127SSorin Basca <tbody> 914*7e63c127SSorin Basca <tr> 915*7e63c127SSorin Basca <td><code>destdir</code></td> 916*7e63c127SSorin Basca <td>Directory location to write the instrumented files to.</td> 917*7e63c127SSorin Basca <td><i>none (required)</i></td> 918*7e63c127SSorin Basca </tr> 919*7e63c127SSorin Basca <tr> 920*7e63c127SSorin Basca <td><code>removesignatures</code></td> 921*7e63c127SSorin Basca <td>If set to <code>true</code> all signature related information is 922*7e63c127SSorin Basca stripped from JARs. This is typically necessary as instrumentation 923*7e63c127SSorin Basca breaks the signatures of the original class files.</td> 924*7e63c127SSorin Basca <td><code>true</code></td> 925*7e63c127SSorin Basca </tr> 926*7e63c127SSorin Basca </tbody> 927*7e63c127SSorin Basca</table> 928*7e63c127SSorin Basca 929*7e63c127SSorin Basca</div> 930*7e63c127SSorin Basca<div class="footer"> 931*7e63c127SSorin Basca <span class="right"><a href="${jacoco.home.url}">JaCoCo</a> ${qualified.bundle.version}</span> 932*7e63c127SSorin Basca <a href="license.html">Copyright</a> © ${copyright.years} Mountainminds GmbH & Co. KG and Contributors 933*7e63c127SSorin Basca</div> 934*7e63c127SSorin Basca 935*7e63c127SSorin Basca</body> 936*7e63c127SSorin Basca</html> 937