Evgeny Mandrikov | 82a92ca | 2012-01-15 20:25:48 +0000 | [diff] [blame] | 1 | <?xml version="1.0" encoding="ISO-8859-1" ?> |
| 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=ISO-8859-1" /> |
| 6 | <link rel="stylesheet" href=".resources/doc.css" charset="ISO-8859-1" 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 become the standard backend technology for code coverage |
| 23 | analysis in Java VM based environments. The focus is providing a lightweight, |
| 24 | flexible and well documented library for integration with various build and |
| 25 | development 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 line, IDE |
| 33 | plug-in) and do not offer a documented API that allows embedding in different |
| 34 | contexts. One of the best and widely used available open source tools is |
| 35 | <a href="http://emma.sourceforge.net/">EMMA</a>. While EclEmma is based on it |
| 36 | the EMMA library is not actively maintained any more by the original author. |
| 37 | Due to the lack of regression tests maintenance and feature additions will |
| 38 | become very difficult. |
| 39 | </p> |
| 40 | |
| 41 | <p> |
| 42 | JaCoCo should become the standard backend technology for code coverage |
| 43 | analysis in Java VM based environments. The focus is providing a lightweight, |
| 44 | flexible and well documented library for integration with various build and |
| 45 | development tools. <a href="ant.html">Ant tasks</a> and a |
| 46 | <a href="maven.html">Maven plug-in</a> are provided as reference usage |
| 47 | scenarios. Other tools like a ready to use |
| 48 | <a href="http://www.eclipse.org/">Eclipse</a> plug-in (future version of |
| 49 | <a href="http://www.eclemma.org/">EclEmma</a>) might follow. |
| 50 | </p> |
| 51 | |
| 52 | <h2>Product Definition</h2> |
| 53 | |
| 54 | <h3>Features</h3> |
| 55 | <ul> |
| 56 | <li>Statement (C0) and branch (C1) coverage analysis.</li> |
| 57 | <li>Based on Java byte code and therefore works also without source files.</li> |
| 58 | <li>Simple integration through <a href="agent.html">Java agent</a> based |
| 59 | on-the-fly instrumentation. Other integration scenarios like custom class |
| 60 | loaders are possible through the API.</li> |
| 61 | <li>Framework agnostic: Smoothly integrates with Java VM based applications |
| 62 | like plain Java programs, OSGi frameworks, web containers or EJB servers.</li> |
| 63 | <li>Support for different |
| 64 | <a href="http://en.wikipedia.org/wiki/List_of_JVM_languages">JVM languages</a>.</li> |
| 65 | <li>Several report formats (HTML, XML, CSV).</li> |
| 66 | <li>Remote protocol to request execution data dumps from the coverage agent at |
| 67 | any point in time.</li> |
| 68 | <li>Several <a href="ant.html">Ant task</a> to collect and manage execution |
| 69 | data and create structured coverage reports.</li> |
| 70 | <li>Planned: Better reporting of Exception within blocks.</li> |
| 71 | </ul> |
| 72 | |
| 73 | <h3>Non-Functional Characteristics</h3> |
| 74 | <ul> |
| 75 | <li>Simple usage and integration with existing build scripts and tools.</li> |
| 76 | <li>Good performance with minimal runtime overhead especially for large scale |
| 77 | projects.</li> |
| 78 | <li>Lightweight implementation with minimal dependencies on external libraries |
| 79 | and system resources.</li> |
| 80 | <li>Fully documented API (<a href="api/index.html">JavaDoc</a>) including |
| 81 | descriptions of the basic concepts.</li> |
| 82 | <li>Regression <a href="../test/index.html">tests</a> with full functional |
| 83 | test <a href="../coverage/index.html">coverage</a> based on |
| 84 | <a href="http://junit.org/">JUnit</a> test cases.</li> |
| 85 | </ul> |
| 86 | |
| 87 | </div> |
| 88 | <div class="footer"> |
| 89 | <span class="right"><a href="@jacoco.home.url@">JaCoCo</a> @qualified.bundle.version@</span> |
| 90 | <a href="license.html">Copyright</a> © @copyright.years@ Mountainminds GmbH & Co. KG and Contributors |
| 91 | </div> |
| 92 | |
| 93 | </body> |
| 94 | </html> |