Configuring reports
Choosing Report Formats
The clover:clover
goal generates an HTML and an XML report by default. You can use the generateHtml, generatePdf, generateXml and generateJson configuration elements to choose which report formats should be produced:
<configuration>
...
<generatePdf>true</generatePdf>
<generateXml>true</generateXml>
<generateHtml>false</generateHtml>
<generateJson>false</generateJson>
</configuration>
You may need to run clover:aggregate or clover:merge goals before running clover:clover.
Getting Information about your Clover Database
The clover:log goal will summarize your Clover database.
Generating Historical Reports
To include the generation of historical reports in your Clover reports, add the generateHistorical
element to your Clover plugin configuration:
<configuration>
...
<generateHistorical>true</generateHistorical>
</configuration>
That will include your historical savepoints, if any, in the generated report.
To generate a savepoint, run the clover:save-history goal.
To avoid having mvn clean
remove your savepoints you may want to set the location of the history directory (default location is $project.build.directory/clover/history)
, for example:
<configuration>
<historyDir>${user.home}/.clover/${project.groupId}-${project.artifactId}</historyDir>
</configuration>
Creating consolidated reports
In order to create a consolidated report for multiple modules or projects, you have to merge databases first. You can use clover:aggregate or clover:merge goal, followed by the clover:clover one. Example:
mvn clean clover:setup test clover:aggregate clover:clover
Creating custom reports
clover-maven-plugin
is:<project name="Clover Report" default="current">
<clover-format id="clover.format" type="${type}" orderBy="${orderBy}" filter="${filter}"/>
<clover-setup initString="${cloverdb}"/>
<clover-columns id="clover.columns">
<totalChildren/>
<avgMethodComplexity/>
<uncoveredElements format="raw"/>
<totalPercentageCovered format="longbar"/>
</clover-columns>
<target name="historical">
<clover-report>
<current outfile="${output}" summary="${summary}">
<format refid="clover.format"/>
<testsources dir="${tests}"/>
<columns refid="clover.columns"/>
</current>
<historical outfile="${historyout}" historydir="${history}">
<format refid="clover.format"/>
<columns refid="clover.columns"/>
</historical>
</clover-report>
</target>
<target name="current">
<clover-report>
<current outfile="${output}" title="${title}" summary="${summary}">
<format refid="clover.format"/>
<testsources dir="${tests}"/>
<columns refid="clover.columns"/>
</current>
</clover-report>
</target>
</project>
This is a very simple Ant file, which defines two known targets: "historical" and "current" .
If there are no history points saved (via: clover:save-history
) then only the "current" target will be called. Otherwise, the "historical" target gets called which generates both a historical and current report which are linked together.
To change Clover's default reporting behavior, it is easiest to copy this file and add the changes you require. For a full list of clover-report elements and attributes, please consult the clover-report documentation.
This file can be stored either on your local file system, or in your maven repository as a classified artifact.
If stored on the file system, set this system property:
-Dmaven.clover.reportDescriptor=/path/to/clover-report.xml
or specify this element:
<reportDescriptor>/path/to/clover-report.xml</reportDescriptor>
in the <configuration>
element for the clover-maven-plugin
in your pom.xml.
If you wish to keep this descriptor in your maven repository you must specify this system property:
-Dmaven.clover.resolveReportDescriptor=true
or set this element:
<resolveReportDescriptor>true</resolveReportDescriptor>
in the <configuration>
element for the clover-maven-plugin
in your pom.xml.
The descriptor should be deployed using the "clover-report" classifier. For example:
mvn deploy:deploy-file -DgroupId=my.group.id -DartifactId=my-artifact-id -Dversion=X.X -Dclassifier=clover-report \
-Dpackaging=xml -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Properties for Custom Reports
Standard Maven properties
A custom clover report descriptor can access the standard Maven 2 and 3 properties. The following properties are available:
project.url
project.version
project.name
project.description
project.id
project.groupId
project.inceptionYear
In addition to these properties, any additional properties defined in pom.xml
will also be available.
Clover configuration properties
Configuration options defined for clover:clover MOJO are available in report descriptor under following names:
- ${cloverdb} = full path to Clover database, depending on settings:
- default database location (<build directory>/clover/clover.db) or
- maven.clover.cloverDatabase or
- maven.clover.cloverMergeDatabase
- ${output} = full path to report directory or file:
- absolute path of maven.clover.outputDirectory (HTML/JSON reports) or
- maven.clover.outputDirectory + "/clover.pdf" (PDF report) or
- maven.clover.outputDirectory + "/clover.xml" (XML report)
- ${history} = maven.clover.historyDir
- ${title} = report title, one of:
- maven.clover.title or
- project's artifactId + version
- in case when maven.clover.cloverMergeDatabase is set then the "(Aggregated)" word is appended
- ${titleAnchor} = maven.clover.titleAnchor
- ${projectDir} = project base dir
- ${testPattern} = "**/src/test/**"
- ${filter} = maven.clover.contextFilters
- ${orderBy} = maven.clover.orderBy
- ${charset} = maven.clover.charset
- ${type} = html / pdf / xml / json
- depends on maven.clover.generateHtml / maven.clover.generatePdf / maven.clover.generateXml / maven.clover.generateJson
- custom report will be run for each of types enabled
- ${reportStyle} = style of the report ("adg" / "classic") - since Clover 4.0
- ${span} = maven.clover.span
- ${alwaysReport} = maven.clover.alwaysReport
- ${summary} = whether to generate a summary, true for PDF report
- ${historyout} = location of history report
- ${output} for HTML
- ${output}/historical.pdf for PDF