Marc R. Hoffmann | e571f3f | 2012-05-13 12:18:02 +0000 | [diff] [blame] | 1 | <?xml version="1.0" encoding="UTF-8" ?> |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 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> |
Marc R. Hoffmann | e571f3f | 2012-05-13 12:18:02 +0000 | [diff] [blame] | 5 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
Evgeny Mandrikov | 8b21298 | 2016-06-12 17:55:49 +0200 | [diff] [blame] | 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" /> |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 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"> |
Marc R. Hoffmann | aad4684 | 2013-02-10 23:16:54 +0100 | [diff] [blame] | 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. |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 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. |
Marc R. Hoffmann | aad4684 | 2013-02-10 23:16:54 +0100 | [diff] [blame] | 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. |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 40 | </p> |
| 41 | |
| 42 | <p> |
Marc R. Hoffmann | aad4684 | 2013-02-10 23:16:54 +0100 | [diff] [blame] | 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 |
Marc R. Hoffmann | 684fa62 | 2012-12-22 16:12:03 +0100 | [diff] [blame] | 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 |
Marc R. Hoffmann | aad4684 | 2013-02-10 23:16:54 +0100 | [diff] [blame] | 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. |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 52 | </p> |
| 53 | |
| 54 | <h2>Product Definition</h2> |
| 55 | |
| 56 | <h3>Features</h3> |
| 57 | <ul> |
Marc R. Hoffmann | ba7c7d0 | 2012-05-04 14:26:58 +0000 | [diff] [blame] | 58 | <li>Coverage <a href="counters.html">analysis</a> of instructions (C0), |
| 59 | branches (C1), lines, methods, types and cyclomatic complexity.</li> |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 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> |
Marc R. Hoffmann | aad4684 | 2013-02-10 23:16:54 +0100 | [diff] [blame] | 66 | <li>Compatible with all released Java class file versions.</li> |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 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> |
Marc R. Hoffmann | aad4684 | 2013-02-10 23:16:54 +0100 | [diff] [blame] | 70 | <li>Remote protocol and JMX control to request execution data dumps from the |
| 71 | coverage agent at any point in time.</li> |
Marc R. Hoffmann | ba7c7d0 | 2012-05-04 14:26:58 +0000 | [diff] [blame] | 72 | <li><a href="ant.html">Ant tasks</a> to collect and manage execution |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 73 | data and create structured coverage reports.</li> |
Marc R. Hoffmann | ba7c7d0 | 2012-05-04 14:26:58 +0000 | [diff] [blame] | 74 | <li><a href="maven.html">Maven plug-in</a> to collect coverage information |
Marc R. Hoffmann | aad4684 | 2013-02-10 23:16:54 +0100 | [diff] [blame] | 75 | and create reports in Maven builds.</li> |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 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> |
Marc R. Hoffmann | ba7c7d0 | 2012-05-04 14:26:58 +0000 | [diff] [blame] | 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> |
Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 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> |