A Jenkins plugin to visualize Jacoco code coverage reports

Ognjen Bubalo

Abstract

JaCoCo is a tool which generates code coverage reports based on Java unit tests. The project is about writing a Jenkins plugin to visualize JaCoCo code coverage reports.

Additional Information

This information is based on my proposal.

Aim of the project:

Write a Jenkins plugin to visualize JaCoCo code coverage reports. Add a solution for creating series of snapshots of Java coverage data over time, so the developer can track the code coverage trends and  have more information about the project. The enormous Java community needs a critical tool like this.


Motivation:

Usage of tools which helps determine the status of a growing software are very important. We need to test the software as much as we can. Nowadays writing tests became an inseparable part of software development. Also we need to know how much code is being tested.
I am very interested in Java programming and I have experience in developing and maintaining Continuous Integration systems, so I was very excited when I found the JaCoCo project. JaCoCo is a tool which generates code coverage reports based on Java unit tests. It's being positioned by its author as the successor to Emma.
Every build has to be tested, and this should be done automatically. Jenkins is a Continuous Integration framework which helps us in the automation. Obviously it would be very helpful if Jenkinks could pickup the results and generate reports from the coverage data generated by the JaCoCo. The JaCoCo plugin for Jenkins is a fork of the well known Emma plugin. It is an open source software, and it would be an honor and of course a huge experience if I could develop a software used by a big community.


Objectives:

Currently the Jenkins plugin is not ready. I would like to make some improvements to bring the software to a more stable version and to finish the switching from the Emma plugin. 

These improvements are:

  • Fix the failing unit tests and add new tests into the testset.
  • Make the build automation easier. Create and configure a Jenkins project for JaCoCo.
  • Replace the existing Emma line-by-line coverage report with the JaCoCo one (leveraging the existing functionality in JaCoCo's Maven plugin).
  • Ensure all JaCoCo data is stored in Jenkins history (presently, only the intersection of JaCoCo and Emma datapoints are stored).
  • Continuously refactor the code. Clean up code related to Emma, features not present in JaCoCo.
  • Rename the packages (emma to jacoco) to avoid problems in systems that use both plugins.
  • Test the plugin on existing open source projects.
  • Prepare the code for further development, add more javadoc comments.
  • It would be good to develop a standalone tool also, using Eclipse JDT features, to add hyperlinks into the line-by-line coverage reports (go to definition, find usages, etc.).

References:

 

Code samples