| <?xml version="1.0" encoding="UTF-8" ?> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| <link rel="stylesheet" href=".resources/doc.css" charset="UTF-8" type="text/css" /> |
| <link rel="shortcut icon" href=".resources/report.gif" type="image/gif" /> |
| <title>JaCoCo - FAQ</title> |
| </head> |
| <body> |
| |
| <div class="breadcrumb"> |
| <a href="../index.html" class="el_report">JaCoCo</a> > |
| <a href="index.html" class="el_group">Documentation</a> > |
| <span class="el_source">FAQ</span> |
| </div> |
| <div id="content"> |
| |
| <h1>FAQ</h1> |
| |
| <p> |
| This is a compilation of questions that have been asked by JaCoCo users |
| before. |
| </p> |
| |
| <h3>Does JaCoCo have a plug-in for [Eclipse|Netbeans|Whatever...]?</h3> |
| <p> |
| See <a href="integrations.html">this list</a> for current integrations with |
| various tools. |
| </p> |
| |
| <h3>What Java versions are supported by JaCoCo?</h3> |
| <p> |
| JaCoCo supports Java class files from version 1.0 to 1.8. However the minimum |
| JRE version required by the JaCoCo runtime (e.g. the agent) and the JaCoCo |
| tools is 1.5. Also note that class files under test from version 1.6 and above |
| have to contain valid stackmap frames. |
| </p> |
| |
| <h3>Why do I get the error "Can't add different class with same name"?</h3> |
| <p> |
| For coverage report generation all classes within a group must have unique |
| names. You get this error during report generation if JaCoCo is supplied with |
| multiple different class files with the same name. To fix this remove those |
| duplicate classes or create separate reports or report groups for each version. |
| </p> |
| |
| <h3>Source code lines with exceptions show no coverage. Why?</h3> |
| <p> |
| JaCoCo determines code execution with so called probes. Probes are inserted |
| into the control flow at certain positions. Code is considered as executed |
| when a subsequent probe has been executed. In case of exceptions such a |
| sequence of instructions is aborted somewhere in the middle and the |
| corresponding line of source code is not marked as covered. |
| </p> |
| |
| <h3>Why does the coverage report not show line coverage figures?</h3> |
| <p> |
| JaCoCo is based on class files analysis. To calculate line coverage class |
| files must contain line number attributes. For this your code must be compiled |
| with debug information. |
| </p> |
| |
| <h3>Why does the coverage report not show highlighted source code?</h3> |
| <p> |
| Make sure the following prerequisites are fulfilled to get source code |
| highlighting in JaCoCo coverage reports: |
| </p> |
| <ul> |
| <li>Class files must be compiled with debug information to contain line numbers.</li> |
| <li>Source files must be properly supplied at report generation time. I.e. |
| specified source folders must be the direct parent of the folders that |
| define the Java packages.</li> |
| </ul> |
| |
| <h3>Why does a class show as not covered although it has been executed?</h3> |
| <p> |
| First make sure execution data has been collected. For this select the |
| <i>Sessions</i> link on the top right corner of the HTML report and check |
| whether the class in question is listed. If it is listed but not linked the |
| class at execution time is a different class file. Make sure you're using the |
| exact same class file at runtime as for report generation. Note that some |
| tools (e.g. EJB containers, mocking frameworks) might modify your class files |
| at runtime. Please see the chapter about <a href="classids.html"> class |
| ids</a> for a detailed discussion. |
| </p> |
| |
| <h3>Why are Java interface types not shown in the coverage reports?</h3> |
| <p> |
| Java interface methods do not contain code, therefore code coverage cannot |
| be evaluated. Indeed code coverage is recorded for the implementation classes. |
| The same applies to abstract methods in abstract classes. |
| </p> |
| |
| <h3>Can I collect coverage information without stopping the JVM?</h3> |
| <p> |
| Yes, there are two possible ways: The JaCoCo <a href="agent.html">agent</a> |
| can be configured for remote control via TCP/IP sockets. This allows to |
| collect execution data at any point in time from a running JVM. The |
| <a href="ant.html#dump"><code>dump</code> Ant task</a> or the |
| <a href="dump-mojo.html"><code>dump</code> Maven goal</a> can be used to |
| request dumps. The remote control feature also allows you to reset execution |
| data. |
| </p> |
| <p> |
| Alternatively the JaCoCo <a href="agent.html">agent</a> can be configured to |
| expose some functionality via JMX (<code>jmx=true</code>). The bean |
| <code><a href="./api/org/jacoco/agent/rt/IAgent.html">org.jacoco:type=Runtime</a></code> |
| provides operations to dump and reset execution data at any point in time. |
| </p> |
| |
| <h3>My code uses reflection. Why does it fail when I execute it with JaCoCo?</h3> |
| <p> |
| To collect execution data JaCoCo instruments the classes under test which adds |
| two members to the classes: A private static field <code>$jacocoData</code> |
| and a private static method <code>$jacocoInit()</code>. Both members are |
| marked as synthetic. |
| </p> |
| <p> |
| Please change your code to ignore synthetic members. This is a good practice |
| anyways as also the Java compiler creates synthetic members in certain |
| situation. |
| </p> |
| |
| <h3>Why do I get an error while instrumenting certain Java classes?</h3> |
| <p> |
| JaCoCo can instrument valid class files only. Class files with syntactical or |
| semantical error will typically lead to exceptions. In certain areas JaCoCo is |
| more restrictive then the JVM: JaCoCo expects valid so-called "stackmap |
| frame" information in class files of version 1.6 or higher. In turn JaCoCo |
| instrumented classes are expected to conform the specification. |
| </p> |
| <p> |
| Invalid class files are typically created by some frameworks which do not |
| properly adjust stackmap frames when manipulating bytecode. |
| </p> |
| |
| <h3>Does JaCoCo run on the IBM JRE J9 and WebSphere?</h3> |
| <p> |
| It does. To make the JaCoCo agent work please set the VM option |
| <code>-Xshareclasses:none</code>. |
| </p> |
| |
| </div> |
| <div class="footer"> |
| <span class="right"><a href="@jacoco.home.url@">JaCoCo</a> @qualified.bundle.version@</span> |
| <a href="license.html">Copyright</a> © @copyright.years@ Mountainminds GmbH & Co. KG and Contributors |
| </div> |
| |
| </body> |
| </html> |