blob: d4ce14694521d2ce0c4d305bf0ff87532d579bb6 [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" />
Evgeny Mandrikov8b212982016-06-12 17:55:49 +02006 <link rel="stylesheet" href="resources/doc.css" charset="UTF-8" type="text/css" />
7 <link rel="shortcut icon" href="resources/report.gif" type="image/gif" />
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +00008 <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">
Marc R. Hoffmannaad46842013-02-10 23:16:54 +010022 JaCoCo should provide the standard technology for code coverage analysis in
23 Java VM based environments. The focus is providing a lightweight, flexible and
24 well documented library for integration with various build and development
25 tools.
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000026</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.
Marc R. Hoffmannaad46842013-02-10 23:16:54 +010032 Most of them are specifically fit to a particular tool (Ant tasks, command
33 line, IDE plug-in) and do not offer a documented API that allows embedding in
34 different contexts. Two of the best and widely used available open source
35 tools are <a href="http://emma.sourceforge.net/">EMMA</a> and
36 <a href="http://cobertura.sourceforge.net/">Cobertura</a>. Both tools are not
37 actively maintained by the original authors any more and do not support the
38 current Java versions. Due to the lack of regression tests maintenance and
39 feature additions is difficult.
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000040</p>
41
42<p>
Marc R. Hoffmannaad46842013-02-10 23:16:54 +010043 Therefore we started the JaCoCo project to provide a new standard technology
44 for code coverage analysis in Java VM based environments. The focus is
45 providing a lightweight, flexible and well documented library for integration
46 with various build and development tools. <a href="ant.html">Ant tasks</a>, a
Marc R. Hoffmann684fa622012-12-22 16:12:03 +010047 <a href="maven.html">Maven plug-in</a> and the
48 <a href="http://www.eclemma.org/">EclEmma Eclipse plug-in</a> are provided as
Marc R. Hoffmannaad46842013-02-10 23:16:54 +010049 reference usage scenarios. Also many other tool vendors and Open Source
50 projects have <a href="integrations.html">integrated</a> JaCoCo into their
51 tools.
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000052</p>
53
54<h2>Product Definition</h2>
55
56<h3>Features</h3>
57<ul>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000058 <li>Coverage <a href="counters.html">analysis</a> of instructions (C0),
59 branches (C1), lines, methods, types and cyclomatic complexity.</li>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000060 <li>Based on Java byte code and therefore works also without source files.</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>
64 <li>Framework agnostic: Smoothly integrates with Java VM based applications
65 like plain Java programs, OSGi frameworks, web containers or EJB servers.</li>
Marc R. Hoffmannaad46842013-02-10 23:16:54 +010066 <li>Compatible with all released Java class file versions.</li>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000067 <li>Support for different
68 <a href="http://en.wikipedia.org/wiki/List_of_JVM_languages">JVM languages</a>.</li>
69 <li>Several report formats (HTML, XML, CSV).</li>
Marc R. Hoffmannaad46842013-02-10 23:16:54 +010070 <li>Remote protocol and JMX control to request execution data dumps from the
71 coverage agent at any point in time.</li>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000072 <li><a href="ant.html">Ant tasks</a> to collect and manage execution
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000073 data and create structured coverage reports.</li>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000074 <li><a href="maven.html">Maven plug-in</a> to collect coverage information
Marc R. Hoffmannaad46842013-02-10 23:16:54 +010075 and create reports in Maven builds.</li>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000076</ul>
77
78<h3>Non-Functional Characteristics</h3>
79<ul>
80 <li>Simple usage and integration with existing build scripts and tools.</li>
81 <li>Good performance with minimal runtime overhead especially for large scale
82 projects.</li>
83 <li>Lightweight implementation with minimal dependencies on external libraries
84 and system resources.</li>
Marc R. Hoffmannba7c7d02012-05-04 14:26:58 +000085 <li>Comprehensive documentation.</li>
86 <li>Fully documented APIs (<a href="api/index.html">JavaDoc</a>) and
87 <a href="api.html">examples</a> for <a href="integrations.html">integration</a>
88 with other tools.</li>
Evgeny Mandrikov82a92ca2012-01-15 20:25:48 +000089 <li>Regression <a href="../test/index.html">tests</a> with full functional
90 test <a href="../coverage/index.html">coverage</a> based on
91 <a href="http://junit.org/">JUnit</a> test cases.</li>
92</ul>
93
94</div>
95<div class="footer">
96 <span class="right"><a href="@jacoco.home.url@">JaCoCo</a> @qualified.bundle.version@</span>
97 <a href="license.html">Copyright</a> &copy; @copyright.years@ Mountainminds GmbH &amp; Co. KG and Contributors
98</div>
99
100</body>
101</html>