This Jenkins plugin integrates and publishes multiple coverage report types. It has been developed during GSoC 2018.
- Pipeline support
- Modernized coverage chart
- Coverage trend
- Source code navigation
- Parallel execution in pipeline support
- Reports combining
- REST API
- Failed conditions and flexible threshold setting
- Other small features
See the GitHub Releases.
Configure Maven to generate Cobertura coverage reports:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>xml</format>
</formats>
<check/>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
More information about Cobertura.
Configure Maven to generate JaCoCo coverage reports:
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
More Information about JaCoCo.
Use llvm-cov to generate JSON format report:
$ llvm-cov export -instr-profile /path/to/foo.profdata /path/to/foo
More Information llvm-cov.
2. (Optional) Install Jenkins plugins which implement Code Coverage API plugin (cobertura-plugin, llvm-cov-plugin).
5. (Optional) Use the forensics-api plugin to discover the reference build that is used to compute a delta report of the coverage results.
We also support pipeline configuration, you can generate pipeline code in Jenkins Snippet Generator.
publishCoverage adapters: [jacocoAdapter('target/site/jacoco/jacoco.xml')]
You can also use jacoco
instead of jacocoAdapter
if you didn't install Jacoco-Plugin.
We support parallel pipeline. You can call the Code Coverage API plugin in different branches like this:
node {
parallel firstBranch: {
publishCoverage adapters: [jacocoAdapter('target/site/jacoco/jacoco.xml')]
}, secondBranch: {
publishCoverage adapters: [jacocoAdapter('jacoco.xml')]
}
}
You can add tag on publishCoverage and Code Coverage API plugin will combine reports have same tag:
node {
parallel firstBranch: {
publishCoverage adapters: [jacocoAdapter('target/site/jacoco/jacoco.xml')], tag: ‘t’
}, secondBranch: {
publishCoverage adapters: [jacocoAdapter('jacoco.xml')], tag: ‘t’
}
}
There is also a possibility to merge multiple reports (e.g. from multiple xml files) into one using the mergeToOneReport
option with an ant-style path pattern.
All reports found by the adapter will then be combined into a single report:
publishCoverage adapters: [jacocoAdapter(mergeToOneReport: true, path: '**/*.xml')]
We provide a REST API to retrieve coverage data:
- Coverage result:
…/{buildNumber}/coverage/…/result/api/\{json|xml\}?depth={number}
- Trend result:
…/{buildNumber}/coverage/…/trend/api/\{json|xml\}?depth={number}
- Coverage result of last build:
…/{buildNumber}/coverage/…/last/result/api/\{json|xml\}?depth={number}
- Trend result of last build:
…/{buildNumber}/coverage/…/last/trend/api/\{json|xml\}?depth={number}
Note: The larger the number, the deeper of coverage information can be retrieved.