The plugin provides generation of code coverage reports using Clover.
To use the Clover plugin, include in your build script:
apply plugin: 'clover'
The plugin JAR needs to be defined in the classpath of your build script. You can either get the plugin from the GitHub download
section or upload it to your local repository. To define the Clover dependency please use the testRuntime
configuration name in your dependencies
closure.
buildscript {
repositories {
add(new org.apache.ivy.plugins.resolver.URLResolver()) {
name = 'GitHub'
addArtifactPattern 'http://cloud.github.com/downloads/[organisation]/[module]/[module]-[revision].[ext]'
}
}
dependencies {
classpath 'bmuschko:gradle-clover-plugin:0.3'
}
}
dependencies {
testRuntime 'com.cenqua.clover:clover:3.1.0'
}
The Clover plugin defines the following tasks:
cloverGenerateReport
: Generates Clover code coverage report.cloverAggregateReports
: Aggregate Clover code coverage reports in a multi-module project setup. This task can only be run from the root directory of your project and requires at least one submodule.
initString
: The location to write the Clover coverage database (defaults to.clover/clover.db
). The location you define will always be relative to the project's build directory.classesBackupDir
: The temporary backup directory for classes (defaults tofile("${sourceSets.main.classesDir}-bak")
).licenseFile
: The Clover license file to be used (defaults tofile('clover.license')
).includes
: A list of String Ant Glob Patterns to include for instrumentation (defaults to'**/*.java'
for Java projects, defaults to'**/*.java'
and'**/*.groovy'
for Groovy projects).excludes
: A list of String Ant Glob Patterns to exclude for instrumentation. By default no files are excluded.testIncludes
: A list of String Ant Glob Patterns to include for instrumentation for per-test coverge (defaults to'**/*Test.java'
for Java projects, defaults to'**/*Test.java'
and'**/*Test.groovy'
for Groovy projects).targetPercentage
: The required target percentage total coverage e.g. "10%". The build fails if that goals is not met. If not specified no target percentage will be checked.
Within clover
you can define coverage contexts
in a closure named contexts
. There are two types of coverage contexts: statement contexts and method contexts. You can
define as many contexts as you want. Each of the context type closure define the following attributes:
name
: A unique name that identifies the context. If you want to apply the context to your report you got to use this name as part of reportfilter
attribute.regexp
: The specified structure or pattern that matches a context as part of the instrumented source code. Make sure that you correctly escape special characters.
Within clover
you can define which report types should be generated in a closure named report
:
xml
: Generates XML report (defaults totrue
).json
: Generates JSON report (defaults tofalse
).html
: Generates HTML report (defaults tofalse
).pdf
: Generates PDF report (defaults tofalse
).filter
: A comma or space separated list of contexts to exclude when generating coverage reports. See Using Coverage Contexts. By default no filter is applied.
The Clover plugin defines the following convention properties in the clover
closure:
clover {
classesBackupDir = file("${sourceSets.main.classesDir}-backup")
licenseFile = file('clover-license.txt')
excludes = ['**/SynchronizedMultiValueMap.java']
targetPercentage = '85%'
contexts {
statement {
name = 'log'
regexp = '^.*LOG\\..*'
}
method {
name = 'main'
regexp = 'public static void main\\(String args\\[\\]\\).*'
}
}
report {
html = true
pdf = true
filter = 'log,if,else'
}
}