blob: ab9debf78b4601f7375de737d73b986a3013fbbf [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link rel="stylesheet" href=".resources/doc.css" charset="ISO-8859-1" type="text/css" />
<link rel="shortcut icon" href=".resources/report.gif" type="image/gif" />
<title>JaCoCo - Mission</title>
</head>
<body>
<div class="breadcrumb">
<a href="../index.html" class="el_report">JaCoCo</a> &gt;
<a href="index.html" class="el_group">Documentation</a> &gt;
<span class="el_source">Mission</span>
</div>
<div id="content">
<h1>Mission</h1>
<p class="intro">
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.
</p>
<p>
There are several open source coverage technologies for Java available. While
implementing the Eclipse plug-in <a href="http://www.eclemma.org/">EclEmma</a>
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
<a href="http://emma.sourceforge.net/">EMMA</a>. 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.
</p>
<p>
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. <a href="ant.html">Ant tasks</a> are provided as reference
usage scenarios. Other tools like a ready to use
<a href="http://www.eclipse.org/">Eclipse</a> plug-in (future version of
<a href="http://www.eclemma.org/">EclEmma</a>) or a
<a href="http://maven.apache.org/">Maven</a> plug-in might follow.
</p>
<h2>Product Definition</h2>
<h3>Features</h3>
<ul>
<li>Statement (C0) and branch (C1) coverage analysis.</li>
<li>Based on Java byte code and therefore works also without source files.</li>
<li>Simple integration through <a href="agent.html">Java agent</a> based
on-the-fly instrumentation. Other integration scenarios like custom class
loaders are possible through the API.</li>
<li>Framework agnostic: Smoothly integrates with Java VM based applications
like plain Java programs, OSGi frameworks, web containers or EJB servers.</li>
<li>Support for different
<a href="http://en.wikipedia.org/wiki/List_of_JVM_languages">JVM languages</a>.</li>
<li>Several report formats (HTML, XML, CSV).</li>
<li>Remote protocol to request execution data dumps from the coverage agent at
any point in time.</li>
<li>Several <a href="ant.html">Ant task</a> to collect and manage execution
data and create structured coverage reports.</li>
<li>Planned: Better reporting of Exception within blocks.</li>
</ul>
<h3>Non-Functional Characteristics</h3>
<ul>
<li>Simple usage and integration with existing build scripts and tools.</li>
<li>Good performance with minimal runtime overhead especially for large scale
projects.</li>
<li>Lightweight implementation with minimal dependencies on external libraries
and system resources.</li>
<li>Fully documented API (<a href="api/index.html">JavaDoc</a>) including
descriptions of the basic concepts.</li>
<li>Regression <a href="../test/index.html">tests</a> with full functional
test <a href="../coverage/index.html">coverage</a> based on
<a href="http://junit.org/">JUnit</a> test cases.</li>
</ul>
</div>
<div class="footer">
<span class="right"><a href="@jacoco.home.url@">JaCoCo</a> @qualified.bundle.version@</span>
<a href="license.html">Copyright</a> &copy; @copyright.years@ Mountainminds GmbH &amp; Co. KG and Contributors
</div>
</body>
</html>