blob: 48dec6bc4aab707d3fdab98d2dc2720ff9358971 [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" />
7 <title>JaCoCo - Mission</title>
8</head>
9<body>
10
11<div class="breadcrumb">
12 <a href="../index.html" class="el_session">JaCoCo</a> &gt;
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000013 <a href="index.html" class="el_group">Documentation</a> &gt;
Marc R. Hoffmann15888492009-07-30 11:46:53 +000014 <span class="el_source">Mission</span>
15</div>
Marc R. Hoffmann17be2692010-02-02 05:44:47 +000016<div id="content">
Marc R. Hoffmann15888492009-07-30 11:46:53 +000017
18<h1>Mission</h1>
19
20<p class="intro">
21 JaCoCo should become the standard tool for instrumentation based code coverage
22 in Java VM based environments. The focus is providing a lightweight, flexible
23 and well documented library for integration with various build and development
24 tools.
25</p>
26
27<p>
Radek Libaad5fbc92009-10-26 13:26:53 +000028 There are several open source coverage technologies for Java available. While
Marc R. Hoffmann15888492009-07-30 11:46:53 +000029 implementing the Eclipse plug-in <a href="http://www.eclemma.org/">EclEmma</a>
30 the observation was that none of them are really designed for integration.
Radek Libaad5fbc92009-10-26 13:26:53 +000031 Most of them are specifically fit to a particular tool (Ant tasks, command line, IDE
Marc R. Hoffmann15888492009-07-30 11:46:53 +000032 plug-in) and do not offer a documented API that allows embedding in different
33 contexts. One of the best and widely used available open source tools is
34 <a href="http://emma.sourceforge.net/">EMMA</a>. While EclEmma is based on it
35 the EMMA library is not actively maintained any more by the original author.
36 Due to the lack of regression tests maintenance and feature additions will
37 become very difficult.
38</p>
39
40<p>
41 JaCoCo should become the standard tool for instrumentation based code coverage
42 in Java VM based environments. The focus is providing a lightweight, flexible
43 and well documented library for integration with various build and development
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000044 tools. <a href="ant.html">Ant tasks</a> are provided as reference usage
45 scenarios. Other tools like a ready to use
46 <a href="http://www.eclipse.org/">Eclipse</a> plug-in (future version of
47 <a href="http://www.eclemma.org/">EclEmma</a>) or a
Marc R. Hoffmann45ff60e2009-10-09 09:28:30 +000048 <a href="http://maven.apache.org/">Maven</a> plug-in might follow.
Marc R. Hoffmann15888492009-07-30 11:46:53 +000049</p>
50
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000051<h2>Product Definition</h2>
52
53<h3>Features</h3>
54<ul>
55 <li><i>Statement coverage</i> on Java byte code level, where instrumentation
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000056 and recording happens on
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000057 <a class="extern" href="http://en.wikipedia.org/wiki/Basic_block"><i>basic block</i></a>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000058 granularity. This is the same mechanism implemented by the
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000059 <a class="extern" href="http://emma.sourceforge.net/">EMMA</a> library.</li>
Marc R. Hoffmannd3aeb962009-08-19 06:32:08 +000060 <li>Simple integration through Java agent based on-the-fly instrumentation.</li>
Marc R. Hoffmann0e115f82010-02-02 05:27:59 +000061 <li>Framework agnostic: Smoothly integrates with Java VM based applications
62 like plain Java programs, OSGi frameworks, web containers or EJB servers.</li>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000063 <li>Support for different
64 <a href="http://en.wikipedia.org/wiki/List_of_JVM_languages">JVM languages</a>.</li>
65 <li>Several report formats (HTML, XML, CSV).</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000066 <li>Optional: Branch coverage based on basic block flow.</li>
67 <li>Optional: Invocation counting.</li>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000068 <li>Optional: Better reporting of Exception within blocks.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000069</ul>
70
71<h3>Non-Functional Characteristics</h3>
72<ul>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000073 <li>Simple usage and integration with existing build scripts and tools.</li>
74 <li>Good performance with minimal runtime overhead especially for large scale
75 projects.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000076 <li>Lightweight implementation with minimal dependencies on external libraries
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000077 and system resources.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000078 <li>Fully documented API (JavaDoc) including descriptions of the basic
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000079 concepts.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000080 <li>Regression tests with full functional test coverage based on JUnit test
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000081 cases.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000082</ul>
83
Marc R. Hoffmann17be2692010-02-02 05:44:47 +000084</div>
Marc R. Hoffmann15888492009-07-30 11:46:53 +000085<div class="footer">
Marc R. Hoffmannafe929b2009-08-05 09:19:00 +000086 <div class="versioninfo"><a href="@HOMEURL@">JaCoCo</a> @VERSION@</div>
Marc R. Hoffmann889d62b2010-01-26 20:08:15 +000087 <a href="license.html">Copyright</a> &copy; 2009, 2010 Mountainminds GmbH &amp; Co. KG and Contributors
Marc R. Hoffmann15888492009-07-30 11:46:53 +000088</div>
89
90</body>
91</html>