blob: 82cfd50680c8fc786aaba5b2beee32d3ab8fb63e [file] [log] [blame]
Marc R. Hoffmanne571f3f2012-05-13 12:18:02 +00001<?xml version="1.0" encoding="UTF-8" ?>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +00002<!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>
Marc R. Hoffmanne571f3f2012-05-13 12:18:02 +00005 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <link rel="stylesheet" href=".resources/doc.css" charset="UTF-8" type="text/css" />
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +00007 <link rel="shortcut icon" href=".resources/report.gif" type="image/gif" />
8 <title>JaCoCo - Mission</title>
9</head>
10<body>
11
12<div class="breadcrumb">
13 <a href="../index.html" class="el_report">JaCoCo</a> &gt;
14 <a href="index.html" class="el_group">Documentation</a> &gt;
15 <span class="el_source">Mission</span>
16</div>
17<div id="content">
18
19<h1>Mission</h1>
20
21<p class="intro">
22 JaCoCo should become the standard backend technology for code coverage
23 analysis in Java VM based environments. The focus is providing a lightweight,
24 flexible and well documented library for integration with various build and
25 development tools.
26</p>
27
28<p>
29 There are several open source coverage technologies for Java available. While
30 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.
32 Most of them are specifically fit to a particular tool (Ant tasks, command line, IDE
33 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 backend technology for code coverage
43 analysis in Java VM based environments. The focus is providing a lightweight,
44 flexible and well documented library for integration with various build and
Marc R. Hoffmann684fa622012-12-22 16:12:03 +010045 development tools. <a href="ant.html">Ant tasks</a>, a
46 <a href="maven.html">Maven plug-in</a> and the
47 <a href="http://www.eclemma.org/">EclEmma Eclipse plug-in</a> are provided as
48 reference usage scenarios.
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000049</p>
50
51<h2>Product Definition</h2>
52
53<h3>Features</h3>
54<ul>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000055 <li>Coverage <a href="counters.html">analysis</a> of instructions (C0),
56 branches (C1), lines, methods, types and cyclomatic complexity.</li>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000057 <li>Based on Java byte code and therefore works also without source files.</li>
58 <li>Simple integration through <a href="agent.html">Java agent</a> based
59 on-the-fly instrumentation. Other integration scenarios like custom class
60 loaders are possible through the API.</li>
61 <li>Framework agnostic: Smoothly integrates with Java VM based applications
62 like plain Java programs, OSGi frameworks, web containers or EJB servers.</li>
63 <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>
66 <li>Remote protocol to request execution data dumps from the coverage agent at
67 any point in time.</li>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000068 <li><a href="ant.html">Ant tasks</a> to collect and manage execution
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000069 data and create structured coverage reports.</li>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000070 <li><a href="maven.html">Maven plug-in</a> to collect coverage information
71 in Maven builds.</li>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000072</ul>
73
74<h3>Non-Functional Characteristics</h3>
75<ul>
76 <li>Simple usage and integration with existing build scripts and tools.</li>
77 <li>Good performance with minimal runtime overhead especially for large scale
78 projects.</li>
79 <li>Lightweight implementation with minimal dependencies on external libraries
80 and system resources.</li>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000081 <li>Comprehensive documentation.</li>
82 <li>Fully documented APIs (<a href="api/index.html">JavaDoc</a>) and
83 <a href="api.html">examples</a> for <a href="integrations.html">integration</a>
84 with other tools.</li>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000085 <li>Regression <a href="../test/index.html">tests</a> with full functional
86 test <a href="../coverage/index.html">coverage</a> based on
87 <a href="http://junit.org/">JUnit</a> test cases.</li>
88</ul>
89
90</div>
91<div class="footer">
92 <span class="right"><a href="@jacoco.home.url@">JaCoCo</a> @qualified.bundle.version@</span>
93 <a href="license.html">Copyright</a> &copy; @copyright.years@ Mountainminds GmbH &amp; Co. KG and Contributors
94</div>
95
96</body>
97</html>