Home | History | Annotate | Download | only in doc
      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> &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 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> &copy; @copyright.years@ Mountainminds GmbH &amp; Co. KG and Contributors
     98 </div>
     99 
    100 </body>
    101 </html>
    102