1<?xml version="1.0" encoding="UTF-8" ?> 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=UTF-8" /> 6 <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" /> 8 <title>JaCoCo - Mission</title> 9</head> 10<body> 11 12<div class="breadcrumb"> 13 <a href="../index.html" class="el_report">JaCoCo</a> > 14 <a href="index.html" class="el_group">Documentation</a> > 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 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. 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 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. 40</p> 41 42<p> 43 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 47 <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 49 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. 52</p> 53 54<h2>Product Definition</h2> 55 56<h3>Features</h3> 57<ul> 58 <li>Coverage <a href="counters.html">analysis</a> of instructions (C0), 59 branches (C1), lines, methods, types and cyclomatic complexity.</li> 60 <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> 66 <li>Compatible with all released Java class file versions.</li> 67 <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> 70 <li>Remote protocol and JMX control to request execution data dumps from the 71 coverage agent at any point in time.</li> 72 <li><a href="ant.html">Ant tasks</a> to collect and manage execution 73 data and create structured coverage reports.</li> 74 <li><a href="maven.html">Maven plug-in</a> to collect coverage information 75 and create reports in Maven builds.</li> 76</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> 85 <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> 89 <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> © @copyright.years@ Mountainminds GmbH & Co. KG and Contributors 98</div> 99 100</body> 101</html> 102