blob: 73fd10fc8e17b195b6a8b2eb5dc5cea136d1883e [file] [log] [blame]
Marc R. Hoffmann15888492009-07-30 11:46:53 +00001<?xml version="1.0" encoding="ISO-8859-1" ?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
4<head>
5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
6 <link rel="stylesheet" href=".resources/doc.css" charset="ISO-8859-1" type="text/css" />
Marc R. Hoffmannd7d2f752010-05-06 21:12:31 +00007 <link rel="shortcut icon" href=".resources/report.gif" type="image/gif" />
Marc R. Hoffmann15888492009-07-30 11:46:53 +00008 <title>JaCoCo - Mission</title>
9</head>
10<body>
11
12<div class="breadcrumb">
Marc R. Hoffmannd7d2f752010-05-06 21:12:31 +000013 <a href="../index.html" class="el_report">JaCoCo</a> &gt;
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000014 <a href="index.html" class="el_group">Documentation</a> &gt;
Marc R. Hoffmann15888492009-07-30 11:46:53 +000015 <span class="el_source">Mission</span>
16</div>
Marc R. Hoffmann17be2692010-02-02 05:44:47 +000017<div id="content">
Marc R. Hoffmann15888492009-07-30 11:46:53 +000018
19<h1>Mission</h1>
20
21<p class="intro">
22 JaCoCo should become the standard tool for instrumentation based code coverage
23 in Java VM based environments. The focus is providing a lightweight, flexible
24 and well documented library for integration with various build and development
25 tools.
26</p>
27
28<p>
Radek Libaad5fbc92009-10-26 13:26:53 +000029 There are several open source coverage technologies for Java available. While
Marc R. Hoffmann15888492009-07-30 11:46:53 +000030 implementing the Eclipse plug-in <a href="http://www.eclemma.org/">EclEmma</a>
31 the observation was that none of them are really designed for integration.
Radek Libaad5fbc92009-10-26 13:26:53 +000032 Most of them are specifically fit to a particular tool (Ant tasks, command line, IDE
Marc R. Hoffmann15888492009-07-30 11:46:53 +000033 plug-in) and do not offer a documented API that allows embedding in different
34 contexts. One of the best and widely used available open source tools is
35 <a href="http://emma.sourceforge.net/">EMMA</a>. While EclEmma is based on it
36 the EMMA library is not actively maintained any more by the original author.
37 Due to the lack of regression tests maintenance and feature additions will
38 become very difficult.
39</p>
40
41<p>
42 JaCoCo should become the standard tool for instrumentation based code coverage
43 in Java VM based environments. The focus is providing a lightweight, flexible
44 and well documented library for integration with various build and development
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000045 tools. <a href="ant.html">Ant tasks</a> are provided as reference usage
46 scenarios. Other tools like a ready to use
47 <a href="http://www.eclipse.org/">Eclipse</a> plug-in (future version of
48 <a href="http://www.eclemma.org/">EclEmma</a>) or a
Marc R. Hoffmann45ff60e2009-10-09 09:28:30 +000049 <a href="http://maven.apache.org/">Maven</a> plug-in might follow.
Marc R. Hoffmann15888492009-07-30 11:46:53 +000050</p>
51
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000052<h2>Product Definition</h2>
53
54<h3>Features</h3>
55<ul>
56 <li><i>Statement coverage</i> on Java byte code level, where instrumentation
Marc R. Hoffmann7c775162010-05-27 16:43:34 +000057 and recording happens on
58 <a class="extern" href="http://en.wikipedia.org/wiki/Basic_block"><i>basic block</i></a>
59 granularity. This is the same mechanism implemented by the
60 <a class="extern" href="http://emma.sourceforge.net/">EMMA</a> library.</li>
61 <li>Simple integration through <a href="agent.html">Java agent</a> based
62 on-the-fly instrumentation. Other integration scenarios like custom class
63 loaders are possible through the API.</li>
Marc R. Hoffmann0e115f82010-02-02 05:27:59 +000064 <li>Framework agnostic: Smoothly integrates with Java VM based applications
Marc R. Hoffmann7c775162010-05-27 16:43:34 +000065 like plain Java programs, OSGi frameworks, web containers or EJB servers.</li>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000066 <li>Support for different
Marc R. Hoffmann7c775162010-05-27 16:43:34 +000067 <a href="http://en.wikipedia.org/wiki/List_of_JVM_languages">JVM languages</a>.</li>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000068 <li>Several report formats (HTML, XML, CSV).</li>
Marc R. Hoffmann7c775162010-05-27 16:43:34 +000069 <li>Remote protocol to request execution data dumps from the coverage agent at
70 any point in time.</li>
71 <li>Several <a href="ant.html">Ant task</a> to collect and manage execution
72 data and create structured coverage reports.</li>
Marc R. Hoffmann4748bbd2010-04-13 19:57:57 +000073 <li>Planned: Branch coverage based on basic block flow.</li>
74 <li>Planned: Better reporting of Exception within blocks.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000075</ul>
76
77<h3>Non-Functional Characteristics</h3>
78<ul>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000079 <li>Simple usage and integration with existing build scripts and tools.</li>
80 <li>Good performance with minimal runtime overhead especially for large scale
Marc R. Hoffmann7c775162010-05-27 16:43:34 +000081 projects.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000082 <li>Lightweight implementation with minimal dependencies on external libraries
Marc R. Hoffmann7c775162010-05-27 16:43:34 +000083 and system resources.</li>
84 <li>Fully documented API (<a href="api/index.html">JavaDoc</a>) including
85 descriptions of the basic concepts.</li>
86 <li>Regression <a href="../test/index.html">tests</a> with full functional
87 test <a href="../coverage/index.html">coverage</a> based on
88 <a href="http://junit.org/">JUnit</a> test cases.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000089</ul>
90
Marc R. Hoffmann17be2692010-02-02 05:44:47 +000091</div>
Marc R. Hoffmann15888492009-07-30 11:46:53 +000092<div class="footer">
Marc R. Hoffmannb623ffb2010-05-06 19:48:08 +000093 <span class="right"><a href="@jacoco.home.url@">JaCoCo</a> @qualified.bundle.version@</span>
Marc R. Hoffmanndf6ff962010-04-09 15:31:22 +000094 <a href="license.html">Copyright</a> &copy; @copyright.years@ Mountainminds GmbH &amp; Co. KG and Contributors
Marc R. Hoffmann15888492009-07-30 11:46:53 +000095</div>
96
97</body>
98</html>