151 lines
6.2 KiB
HTML
151 lines
6.2 KiB
HTML
<?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>
|