Hello team,
*Note*: I am using Jacoco version - 0.8.6-SNAPSHOT.
There is a requirement where I need to read Jacoco execution dump file and
get meaningful data out of it using Jacoco Java API.
For that, I did try to follow below steps but not able to read exec file.
It will be really helpful if you can provide any pointer to achieve this
task.
1. Run Jacoco as an agent and attached to the jvm. I used below command
for that- [Working]
- java
-javaagent:C:/jacocoagent.jar=port=36320,includes=com.*,output=tcpserver
-jar demoapp.jar
2. Use Jacoco Java api to connect to this tcpserver and get the dump [
Working] - pls refer attached 'Jacoco_execution_dump.png' screenshot
- Here I am getting data from tcp server and dumping into jacoco.exec
file. [Eventually, I just want to read the data from tcp server and
directly convert that byte data into meaningful information rather than
dumping into jacoco.exec file and then read that file]
3. Now I am trying to use Jacoco Java api (CoverageBuilder) to read the
jacoco.exec file [created in step-2] and convert this data to get
class/method coverage. Code which I am using to read jacoco.exec file is
put down below. While running that piece of code, I am getting below error
-
Exception in thread "main" java.lang.IncompatibleClassChangeError: class
org.jacoco.core.internal.flow.ClassProbesVisitor has interface
org.objectweb.asm.ClassVisitor as super class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at
org.helmetsrequired.jacocotogo.JacocoClient.readJacocoFile(JacocoClient.java:142)
at org.helmetsrequired.jacocotogo.JacocoClient.main(JacocoClient.java:38)
<about:invalid#zClosurez>
<about:invalid#zClosurez>*Code to read Jacoco.exec file -*
<about:invalid#zClosurez> <about:invalid#zClosurez>* private void
readJacocoFile() throws Exception {* <about:invalid#zClosurez>* File
execFile = new File("jacoco.exec");* <about:invalid#zClosurez>*
ExecFileLoader loader = new ExecFileLoader();* <about:invalid#zClosurez>*
loader.load(execFile);* <about:invalid#zClosurez>
<about:invalid#zClosurez>* final CoverageBuilder
coverageBuilder = new CoverageBuilder();* <about:invalid#zClosurez>*
final Analyzer analyzer = new Analyzer(*
<about:invalid#zClosurez>*loader.getExecutionDataStore(),
coverageBuilder); <about:invalid#zClosurez>** File classesDirectory = new
File("C:\\classes");* <about:invalid#zClosurez>*
analyzer.analyzeAll(classesDirectory);* <about:invalid#zClosurez>
<about:invalid#zClosurez>* IBundleCoverage coverage =
coverageBuilder.getBundle("jacoco");* <about:invalid#zClosurez>*
System.out.println(coverage.getName());* <about:invalid#zClosurez>* for
(IPackageCoverage p : coverage.getPackages()) {* <about:invalid#zClosurez>*
System.out.println("in the firsr for loop: " + p.getName());*
<about:invalid#zClosurez>* String packageName = p.getName();*
<about:invalid#zClosurez>* for (IClassCoverage c : p.getClasses()) {*
<about:invalid#zClosurez>* System.out.println(coverage.getName() + " : " +
packageName + " : " + c);* <about:invalid#zClosurez>* } *
<about:invalid#zClosurez>* } * <about:invalid#zClosurez> }
<about:invalid#zClosurez>
<about:invalid#zClosurez>
--
You received this message because you are subscribed to the Google Groups
"JaCoCo and EclEmma Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jacoco/54048aa9-3b71-4fe6-a10d-555422b0c5db%40googlegroups.com.