This is a draft proposal, feel free to contribute to it!
JaCoCo is a free code coverage library for Java, which is currently developed by the EclEmma team based on the lessons learned from using and integration existing libraries over the last three years.
JaCoCo is proposed as an open source project under the Eclipse Technology Project (http://www.eclipse.org/technology/). This proposal is still in the Project Proposal Phase, and is being made in order to call for more community participation. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.jacoco newsgroup.
Background and Goal
There are several open source coverage technologies for Java available. While implementing the Eclipse plug-in EclEmma (http://www.eclemma.org/) the observation was that none of them are really designed for integration. Most of them are specifically fit to a particular tool (Ant tasks, command line, IDE plug-in) and do not offer a documented API that allows embedding in different contexts. One of the best and widely used available open source tools is EMMA (http://emma.sourceforge.net/). While EclEmma is based on it the EMMA library is not actively maintained any more by the original author. Due to the lack of regression tests maintenance and feature additions will become very difficult.
JaCoCo should become the standard backend technology for code coverage analysis in Java VM based environments. The focus is providing a lightweight, flexible and well documented library for integration with various build and development tools. Ant tasks are provided as reference usage scenarios. Other tools like a ready to use Eclipse plug-in (future version of EclEmma) or a Maven plug-in might follow.
Architecture and Extensibility
The primary scope of the JaCoCo project is to build a code coverage library that can be used by other tools to provide coverage reports. To ensure that the library is usable we also maintain a small number of exemplary tools that use the library. Currently this includes standalone example programs and Ant tasks.
Providing integration with other tools such as Hundson/Jenkins, Sonar and Maven are currently out of scope
- API cleanup
- Eclipse Plugin (EclEmma 2.0)
- Support filtering of untestable/synthetic code
Packaging and Deployment
JaCoCo currently ships in the form of a .zip download that contains the following:
- JaCoCo Java agent jar continaing all dependencies
- Ant jar containing all dependencies
- runtime agent, ant task, core and reporting bundles (not required if using the all in one jars)
- Documentation including usage examples
We will continue to use this archive for distributing the framework portion of JaCoCo but will provide a P2 repository containing the agent, core and report bundles to support the EclEmma 2.0 plugin.
All bundles will also be uploaded to a Maven2 repository to make the creation of a Maven2 plugin easier
- Chris Aniszczyk
- Marc R. Hoffmann
- Brock Janiczak, Individual
- Evgeny Mandrikov, SonarSource
- Chris Aniszczyk
- Dave Carver