xref: /aosp_15_r20/external/jacoco/org.jacoco.doc/docroot/doc/mission.html (revision 7e63c1270baf9bfa84f5b6aecf17bd0c1a75af94)
1*7e63c127SSorin Basca<?xml version="1.0" encoding="UTF-8" ?>
2*7e63c127SSorin Basca<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3*7e63c127SSorin Basca<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
4*7e63c127SSorin Basca<head>
5*7e63c127SSorin Basca  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6*7e63c127SSorin Basca  <link rel="stylesheet" href="resources/doc.css" charset="UTF-8" type="text/css" />
7*7e63c127SSorin Basca  <link rel="shortcut icon" href="resources/report.gif" type="image/gif" />
8*7e63c127SSorin Basca  <title>JaCoCo - Mission</title>
9*7e63c127SSorin Basca</head>
10*7e63c127SSorin Basca<body>
11*7e63c127SSorin Basca
12*7e63c127SSorin Basca<div class="breadcrumb">
13*7e63c127SSorin Basca  <a href="../index.html" class="el_report">JaCoCo</a> &gt;
14*7e63c127SSorin Basca  <a href="index.html" class="el_group">Documentation</a> &gt;
15*7e63c127SSorin Basca  <span class="el_source">Mission</span>
16*7e63c127SSorin Basca</div>
17*7e63c127SSorin Basca<div id="content">
18*7e63c127SSorin Basca
19*7e63c127SSorin Basca<h1>Mission</h1>
20*7e63c127SSorin Basca
21*7e63c127SSorin Basca<p class="intro">
22*7e63c127SSorin Basca  JaCoCo should provide the standard technology for code coverage analysis in
23*7e63c127SSorin Basca  Java VM based environments. The focus is providing a lightweight, flexible and
24*7e63c127SSorin Basca  well documented library for integration with various build and development
25*7e63c127SSorin Basca  tools.
26*7e63c127SSorin Basca</p>
27*7e63c127SSorin Basca
28*7e63c127SSorin Basca<p>
29*7e63c127SSorin Basca  There are several open source coverage technologies for Java available. While
30*7e63c127SSorin Basca  implementing the Eclipse plug-in <a href="http://www.eclemma.org/">EclEmma</a>
31*7e63c127SSorin Basca  the observation was that none of them are really designed for integration.
32*7e63c127SSorin Basca  Most of them are specifically fit to a particular tool (Ant tasks, command
33*7e63c127SSorin Basca  line, IDE plug-in) and do not offer a documented API that allows embedding in
34*7e63c127SSorin Basca  different contexts. Two of the best and widely used available open source
35*7e63c127SSorin Basca  tools are <a href="http://emma.sourceforge.net/">EMMA</a> and
36*7e63c127SSorin Basca  <a href="http://cobertura.sourceforge.net/">Cobertura</a>. Both tools are not
37*7e63c127SSorin Basca  actively maintained by the original authors any more and do not support the
38*7e63c127SSorin Basca  current Java versions. Due to the lack of regression tests maintenance and
39*7e63c127SSorin Basca  feature additions is difficult.
40*7e63c127SSorin Basca</p>
41*7e63c127SSorin Basca
42*7e63c127SSorin Basca<p>
43*7e63c127SSorin Basca  Therefore we started the JaCoCo project to provide a new standard technology
44*7e63c127SSorin Basca  for code coverage analysis in Java VM based environments. The focus is
45*7e63c127SSorin Basca  providing a lightweight, flexible and well documented library for integration
46*7e63c127SSorin Basca  with various build and development tools. <a href="ant.html">Ant tasks</a>, a
47*7e63c127SSorin Basca  <a href="maven.html">Maven plug-in</a> and the
48*7e63c127SSorin Basca  <a href="http://www.eclemma.org/">EclEmma Eclipse plug-in</a> are provided as
49*7e63c127SSorin Basca  reference usage scenarios. Also many other tool vendors and Open Source
50*7e63c127SSorin Basca  projects have <a href="integrations.html">integrated</a> JaCoCo into their
51*7e63c127SSorin Basca  tools.
52*7e63c127SSorin Basca</p>
53*7e63c127SSorin Basca
54*7e63c127SSorin Basca<h2>Product Definition</h2>
55*7e63c127SSorin Basca
56*7e63c127SSorin Basca<h3>Features</h3>
57*7e63c127SSorin Basca<ul>
58*7e63c127SSorin Basca  <li>Coverage <a href="counters.html">analysis</a> of instructions (C0),
59*7e63c127SSorin Basca      branches (C1), lines, methods, types and cyclomatic complexity.</li>
60*7e63c127SSorin Basca  <li>Based on Java byte code and therefore works also without source files.</li>
61*7e63c127SSorin Basca  <li>Simple integration through <a href="agent.html">Java agent</a> based
62*7e63c127SSorin Basca      on-the-fly instrumentation. Other integration scenarios like custom class
63*7e63c127SSorin Basca      loaders are possible through the API.</li>
64*7e63c127SSorin Basca  <li>Framework agnostic: Smoothly integrates with Java VM based applications
65*7e63c127SSorin Basca      like plain Java programs, OSGi frameworks, web containers or EJB servers.</li>
66*7e63c127SSorin Basca  <li>Compatible with all released Java class file versions.</li>
67*7e63c127SSorin Basca  <li>Support for different
68*7e63c127SSorin Basca      <a href="http://en.wikipedia.org/wiki/List_of_JVM_languages">JVM languages</a>.</li>
69*7e63c127SSorin Basca  <li>Several report formats (HTML, XML, CSV).</li>
70*7e63c127SSorin Basca  <li>Remote protocol and JMX control to request execution data dumps from the
71*7e63c127SSorin Basca      coverage agent at any point in time.</li>
72*7e63c127SSorin Basca  <li><a href="ant.html">Ant tasks</a> to collect and manage execution
73*7e63c127SSorin Basca      data and create structured coverage reports.</li>
74*7e63c127SSorin Basca  <li><a href="maven.html">Maven plug-in</a> to collect coverage information
75*7e63c127SSorin Basca      and create reports in Maven builds.</li>
76*7e63c127SSorin Basca</ul>
77*7e63c127SSorin Basca
78*7e63c127SSorin Basca<h3>Non-Functional Characteristics</h3>
79*7e63c127SSorin Basca<ul>
80*7e63c127SSorin Basca  <li>Simple usage and integration with existing build scripts and tools.</li>
81*7e63c127SSorin Basca  <li>Good performance with minimal runtime overhead especially for large scale
82*7e63c127SSorin Basca      projects.</li>
83*7e63c127SSorin Basca  <li>Lightweight implementation with minimal dependencies on external libraries
84*7e63c127SSorin Basca      and system resources.</li>
85*7e63c127SSorin Basca  <li>Comprehensive documentation.</li>
86*7e63c127SSorin Basca  <li>Fully documented APIs (<a href="api/index.html">JavaDoc</a>) and
87*7e63c127SSorin Basca      <a href="api.html">examples</a> for <a href="integrations.html">integration</a>
88*7e63c127SSorin Basca      with other tools.</li>
89*7e63c127SSorin Basca  <li>Regression <a href="../test/index.html">tests</a> with full functional
90*7e63c127SSorin Basca      test <a href="../coverage/index.html">coverage</a> based on
91*7e63c127SSorin Basca      <a href="http://junit.org/">JUnit</a> test cases.</li>
92*7e63c127SSorin Basca</ul>
93*7e63c127SSorin Basca
94*7e63c127SSorin Basca</div>
95*7e63c127SSorin Basca<div class="footer">
96*7e63c127SSorin Basca  <span class="right"><a href="${jacoco.home.url}">JaCoCo</a> ${qualified.bundle.version}</span>
97*7e63c127SSorin Basca  <a href="license.html">Copyright</a> &copy; ${copyright.years} Mountainminds GmbH &amp; Co. KG and Contributors
98*7e63c127SSorin Basca</div>
99*7e63c127SSorin Basca
100*7e63c127SSorin Basca</body>
101*7e63c127SSorin Basca</html>
102