blob: 73c43524a64f02d975a3fba261cbb441a17466cb [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>
16
17<h1>Mission</h1>
18
19<p class="intro">
20 JaCoCo should become the standard tool for instrumentation based code coverage
21 in Java VM based environments. The focus is providing a lightweight, flexible
22 and well documented library for integration with various build and development
23 tools.
24</p>
25
26<p>
27 There are several open source coverage technologies for Java. While
28 implementing the Eclipse plug-in <a href="http://www.eclemma.org/">EclEmma</a>
29 the observation was that none of them are really designed for integration.
30 Most of them are build for a particular tool (Ant tasks, command line, IDE
31 plug-in) and do not offer a documented API that allows embedding in different
32 contexts. One of the best and widely used available open source tools is
33 <a href="http://emma.sourceforge.net/">EMMA</a>. While EclEmma is based on it
34 the EMMA library is not actively maintained any more by the original author.
35 Due to the lack of regression tests maintenance and feature additions will
36 become very difficult.
37</p>
38
39<p>
40 JaCoCo should become the standard tool for instrumentation based code coverage
41 in Java VM based environments. The focus is providing a lightweight, flexible
42 and well documented library for integration with various build and development
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000043 tools. <a href="ant.html">Ant tasks</a> are provided as reference usage
44 scenarios. Other tools like a ready to use
45 <a href="http://www.eclipse.org/">Eclipse</a> plug-in (future version of
46 <a href="http://www.eclemma.org/">EclEmma</a>) or a
Marc R. Hoffmann45ff60e2009-10-09 09:28:30 +000047 <a href="http://maven.apache.org/">Maven</a> plug-in might follow.
Marc R. Hoffmann15888492009-07-30 11:46:53 +000048</p>
49
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000050<h2>Product Definition</h2>
51
52<h3>Features</h3>
53<ul>
54 <li><i>Statement coverage</i> on Java byte code level, where instrumentation
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000055 and recording happens on
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000056 <a class="extern" href="http://en.wikipedia.org/wiki/Basic_block"><i>basic block</i></a>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000057 granularity. This is the same mechanism implemented by the
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000058 <a class="extern" href="http://emma.sourceforge.net/">EMMA</a> library.</li>
Marc R. Hoffmannd3aeb962009-08-19 06:32:08 +000059 <li>Simple integration through Java agent based on-the-fly instrumentation.</li>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000060 <li>Support for different
61 <a href="http://en.wikipedia.org/wiki/List_of_JVM_languages">JVM languages</a>.</li>
62 <li>Several report formats (HTML, XML, CSV).</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000063 <li>Optional: Branch coverage based on basic block flow.</li>
64 <li>Optional: Invocation counting.</li>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000065 <li>Optional: Better reporting of Exception within blocks.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000066</ul>
67
68<h3>Non-Functional Characteristics</h3>
69<ul>
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000070 <li>Simple usage and integration with existing build scripts and tools.</li>
71 <li>Good performance with minimal runtime overhead especially for large scale
72 projects.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000073 <li>Lightweight implementation with minimal dependencies on external libraries
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000074 and system resources.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000075 <li>Fully documented API (JavaDoc) including descriptions of the basic
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000076 concepts.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000077 <li>Regression tests with full functional test coverage based on JUnit test
Marc R. Hoffmann3e8cb142009-10-20 19:24:18 +000078 cases.</li>
Marc R. Hoffmannb0b08c92009-08-11 17:36:49 +000079</ul>
80
Marc R. Hoffmann15888492009-07-30 11:46:53 +000081<div class="footer">
Marc R. Hoffmannafe929b2009-08-05 09:19:00 +000082 <div class="versioninfo"><a href="@HOMEURL@">JaCoCo</a> @VERSION@</div>
Marc R. Hoffmann15888492009-07-30 11:46:53 +000083 <a href="license.html">Copyright</a> &copy; 2009 Mountainminds GmbH &amp; Co. KG and Contributors
84</div>
85
86</body>
87</html>