Here is a complete code to read exec file including import statements too.

*import java.io.BufferedInputStream;*
*import java.io.BufferedOutputStream;*
*import java.io.ByteArrayOutputStream;*
*import java.io.File;*
*import java.io.FileInputStream;*
*import java.io.FileOutputStream;*
*import java.io.IOException;*
*import java.net.InetAddress;*
*import java.net.Socket;*
*import java.net.UnknownHostException;*

*import org.jacoco.core.analysis.Analyzer;*
*import org.jacoco.core.analysis.CoverageBuilder;*
*import org.jacoco.core.analysis.IBundleCoverage;*

*import org.jacoco.core.analysis.IClassCoverage;*
*import org.jacoco.core.analysis.IPackageCoverage;*
*import org.jacoco.core.data.ExecutionDataReader;*
*import org.jacoco.core.data.ExecutionDataStore;*
*import org.jacoco.core.data.ExecutionDataWriter;*
*import org.jacoco.core.data.SessionInfoStore;*
*import org.jacoco.core.runtime.RemoteControlReader;*
*import org.jacoco.core.runtime.RemoteControlWriter;*
*import org.jacoco.core.tools.ExecFileLoader;*

*public class JacocoClient {*

* private final SessionInfoStore sessionInfos = new SessionInfoStore();*
* private final ExecutionDataStore executionData = new 
ExecutionDataStore();*
  
* public static void main(String[] args) {*
* // TODO Auto-generated method stub*
* try {*
* new JacocoClient().readJacocoFile();*
* } catch (Exception e) {*
* e.printStackTrace();*
* }*
* }*
* private void readJacocoFile() throws Exception {*
* File execFile = new File("jacoco.exec");*
*        ExecFileLoader loader = new ExecFileLoader();*
*        loader.load(execFile);*

*        final CoverageBuilder coverageBuilder = new CoverageBuilder();*
* final Analyzer analyzer = new Analyzer(*
* loader.getExecutionDataStore(), coverageBuilder);*

* File classesDirectory = new File("C:\\classes");*
* analyzer.analyzeAll(classesDirectory);*
* IBundleCoverage coverage = coverageBuilder.getBundle("jacoco");*
* System.out.println(coverage.getName());*
* for (IPackageCoverage p : coverage.getPackages()) {*
* System.out.println("in the firsr for loop: " + p.getName());*
* String packageName = p.getName();*
* for (IClassCoverage c : p.getClasses()) {*
* System.out.println(coverage.getName() + " : " + packageName + " : " +  
c);*
* } *
* } *
* }*
*}*

On Monday, December 2, 2019 at 5:15:47 PM UTC, Abhishek Khandelwal wrote:
>
> 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)
>
>
>
> *Code to read Jacoco.exec file -**      private void readJacocoFile() 
> throws Exception {** File execFile = new File("jacoco.exec");**          
>       ExecFileLoader loader = new ExecFileLoader();**                
> loader.load(execFile);*
> *               final CoverageBuilder coverageBuilder = new 
> CoverageBuilder();**        final Analyzer analyzer = new 
> Analyzer(**loader.getExecutionDataStore(), 
> coverageBuilder);** File classesDirectory = new File("C:\\classes");** 
> analyzer.analyzeAll(classesDirectory);* * IBundleCoverage coverage = 
> coverageBuilder.getBundle("jacoco");** 
> System.out.println(coverage.getName());** for (IPackageCoverage p : 
> coverage.getPackages()) {** System.out.println("in the firsr for loop: " 
> + p.getName());** String packageName = p.getName();** for (IClassCoverage 
> c : p.getClasses()) {** System.out.println(coverage.getName() + " : " + 
> packageName + " : " +  c);** } ** } * }
>

-- 
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/79a4f3fe-cc11-4eac-9f43-a5c934fa6ed0%40googlegroups.com.

Reply via email to