Clover Plugin

Plugin Information

Plugin ID clover
Latest Release 4.3.0
Latest Release Date Apr 2, 2014
Sources Github
Support Eclipse Hudson Forum
Issue Tracking Eclipse Bugzilla

This plugin allows you to capture code coverage reports from Clover. Hudson will generate and track code coverage across time. This plugin can be used without the need to modify your build.xml.

On this page:

Installation

You can use the Hudson Plugin Manager to install this plugin automatically (Manage Hudson > Manage Plugins > Available > search "clover")

You can also download the HPI package from the OSS Sonatype repository:

and next install it manually (Manage Hudson > Manage Plugins > Advanced > Manual Plugin Installation).

IMPORTANT
The Clover Plugin for Hudson 3 (Clover plug-in version 4.0.6 and above) requires the JFreechart Plugin (org.hudsonci.plugins:jfreechart-plugin, version 1.4 or later) installed in Hudson.

Automatic integration for Ant Builds

Since version 2.0 of the Clover Plugin, Clover can be integrated into any* Ant build without the need to modify the build.xml .
Simply check the "Automatically record and report Code Coverage" checkbox in the Job configuration screen.

The Clover plugin will add an Ant BuildListener and

appropriate configuration parameters to allow Clover HTML, XML, JSON and Historical reports to be generated for your Job.

These will automatically be linked to from the Job and Build pages.

The Clover License string can be configured either per-Job, or globally view the "Manage Hudson -> Configure System -> Manage Clover" screen.

* most. we've not tested this on every Ant build

Manual integration

Manually Configuring Clover Plugin for Ant or Maven

  1. Install the clover plugin
  2. Configure your project's build script to generate clover XML reports
  3. (Optional) configure your project's build script to generate clover HTML or PDF reports (this plugin prefers HTML reports to PDF).  The plugin will not extract any information from these reports, but will use them as a better formatted most recent coverage report when they are available.
  4. Enable the "Publish Clover Coverage Report" publisher
  5. Specify the directory where the clover.xml report is generated.
  6. (Optional) Configure the coverage metric targets to reflect your goals.

Maven Configuration (with freestyle project)

The maven-clover-plugin is one of the plugins that highlights an issue with how Maven 2 handles aggregator goals.

Hudson cannot handle maven aggregator goals with the maven2 project (alpha) project type due to how this project type calls Maven.

In order to obtain multi-module clover reports, you must therefore use the free-style software project project type.  In any case, the hudson clover plugin does not currently support the maven2 project (alpha) project type.

In order to ensure that the correct aggregated report is generated, it is necessary to invoke maven multiple times.

Short answer:

  • Create the job as a "free-style software project".
  • Enable the "Invoke top-level Maven targets" Build.
  • Specify the following goals for Maven: (Note the use of the pipe character | to invoke maven three times).
install
-Dmaven.test.failure.ignore=true
|
-Dclover.license.file=path-to-clover-license
clover:instrument
clover:aggregate
|
-Dclover.license.file=path-to-clover-license
-N
clover:aggregate
clover:clover

* Enable the "Publish Clover Coverage Report" publisher.

  • Depending on your Source Code Management, the clover report directory will either be "target/site/clover" or "module-name/target/site/clover"
  • Don't forget to configure the pom.xml to generate the clover.xml report
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      ...
      <build>
        ...
        <plugins>
          ...
          <plugin>
            <artifactId>maven-clover-plugin</artifactId>
            ...
    	<configuration>
              ...
              <licenseLocation>${clover.license.file}</licenseLocation>
              <generateHtml>true</generateHtml>
              <generateXml>true</generateXml>
              ...
            </configuration>
            ...
          </plugin>
          ...
        </plugins>
        ...
      </build>
      ...
    </project>
    

Maven2, Clover and Multimodule with a <packaging>ear</packaging> child module

The maven2 ear packaging will break if you use the clover goal at any time during the same invokation of maven if you ivoke the package or later phases (as it will see artifacts without a classifier and with the clover classifier, get confused and give up)

To work around this, you should configurer your root pom to include the <packaging>ear</packaging> targets only when you are not using clover... how to do this:

<project>
  ...
  <profiles>
    ...
    <profile>
      <id>running-clover</id>
      <activation>
        <property>
          <name>clover.license.file</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-clover-plugin</artifactId>
              <configuration>
                <licenseLocation>${clover.license.file}</licenseLocation>
                <generateHtml>true</generateHtml>
                <generateXml>true</generateXml>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>not-running-clover</id>
      <activation>
        <property>
          <name>!clover.license.file</name>
        </property>
      </activation>
      <modules>
        <module>my-ear-artifact</module>
        <!-- list any other ear child modules here -->
      </modules>
    </profile>
    ...
  </profiles>
  ...
</project>

 The above... hack... is why it is recommended to invoke maven three times.  If you don't need this hack, you could simplify down to two invocations and specify the clover license file location in the pom.xml, i.e. install clover:instrument | -N clover:aggregate clove:site

Version History

Code base for all Hudson plug-ins was split for Hudson2 and Hudson3:

Therefore, code base as well as version numbering for Clover Plug-in was split too.


Clover Plugin for Hudson 2 Clover Plugin for Hudson 3
Version 3.3.0
Update plug-in to use Clover 3.3.0. This new major release supports Spock framework.
Version 4.3.0
Update plug-in to use Clover 3.3.0. This new major release supports Spock framework.
Version 3.2.0
Update plug-in to use Clover 3.2.0. This new major release supports Java8 language.
Version 4.2.0
Update plug-in to use Clover 3.2.0. This new major release supports Java8 language.
Version 3.1.12
Update plug-in to use Clover 3.1.1.
Version 4.1.0
Update plug-in to use Clover 3.1.12.
  Version 4.0.6-h-1
Update plug-in to use org.hudsonci.plugins:clover artifact name. Updated various URLs in pom.xml.
Plug-in is still based on Clover 3.1.5.



Older versions (common history):

Version 3.1.5

  • Update plug-in to use Clover 3.1.5

Version 3.1.2

  • Update plug-in to use Clover 3.1.3

Version 3.1.1

  • Update plug-in to use Clover 3.1.1

Version 3.1.0

  • Update plug-in to use Clover 3.1.0

Version 3.0.2

Version 3.0.1

  • Upgrade to Clover 3.0 which has Support for Groovy
  • View Release Notes
  • No other changes to the Hudson Clover plugin, apart from its dependency on Clover 3.0

Version 2.6.3

Version 2.3

  • support for running builds on Windows
  • updated Clover dependency to 2.6.1 to support IE6

Version 2.2

  • minor bug fix

Version 2.1

  • Scriptless integration for Ant Builds - no modifications to build.xml required - just check the "With Clover" checkbox.
  • New bar-charts
  • Clover HTML linked from each Build to make comparing changes in coverage easier

Version 1.7

  • Clover processing runs before notifications run, to avoid inconsistency in the build status reporting (issue #1285)

Version 1.5 (17/08/2007)

  • Fixed a number of issues relating to rendering of the trend graph when there was no trend present.

References

Labels:

clover clover Delete
plugin-report plugin-report Delete
tier3-hudson-plugin tier3-hudson-plugin Delete
tier2-plugin tier2-plugin Delete
Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.
  1. Sep 28, 2010

    Peter Kreidermacher says:

    Hello, I have Clover set up in a m2 style project in Hudson. The setup wasn't t...

    Hello,

    I have Clover set up in a m2 style project in Hudson. The setup wasn't too difficult and it seems to work on the two that I did.

    All that needs to be added to the pom is this:

    <plugin>
         <groupId>com.atlassian.maven.plugins</groupId>
         <artifactId>maven-clover2-plugin</artifactId>
         <version>3.0.2</version>
         <configuration>
              <licenseLocation>${maven.clover.licenseLocation}</licenseLocation>
              <generateHtml>true</generateHtml>
              <generateXml>true</generateXml>
         </configuration>
    </plugin>
    

    Then configure the projects "Goals and options" with this:

    -Dmaven.clover.licenseLocation=path/to/clover.license clover2:setup install clover2:aggregate clover2:clover

    Then simply select to Public Clover Coverage Reports just like the other setups.

    Since it is possible to run these with m2 projects, would it be possible to get a link to the reports put on the main page menu of an m2 projects like they are for freestyle projects?

    Thanks,

    Peter

  2. Nov 14, 2010

    Anirudh Zala says:

    Recently we have started to use this plugin. But we have found 2 problems with t...

    Recently we have started to use this plugin. But we have found 2 problems with this. 1: issue #5881 and 2: "Coverage Breakdown by Package" have some links on columns but they are not expanded. Seems YUI related issue?

  3. Mar 02, 2011

    Damien Gallagher says:

    Hi I have a quick question about this plugin in Hudson. Is it possible in hudso...

    Hi

    I have a quick question about this plugin in Hudson.
    Is it possible in hudson to specify a property to exclude certain packages and/or classes from being run though Clover?

    Thanks
    Damien