记录瞬间

import org.apache.maven.plugin.MojoExecutionException;
import org.jacoco.core.tools.ExecFileLoader; import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; public class MergeDump { private final String path ;
private final File destFile ; public MergeDump(String path){
this.path = path;
this.destFile = new File(path + "/jacoco.exec");
} private List<File> fileSets(String dir){
System.out.println(dir);
List<File> fileSetList = new ArrayList<File>();
File path = new File(dir);
if ( ! path.exists() ){
System.out.println("No path name is :" + dir);
return null;
}
File[] files = path.listFiles();
try {
if (files == null || files.length == 0) {
return null;
}
} catch (NullPointerException npe) {
npe.printStackTrace();
}
for (File file : files) {
if (file.getName().contains(".exec")) {
System.out.println("文件:" + file.getAbsolutePath());
fileSetList.add(file);
} else {
System.out.println("非exec文件:" + file.getAbsolutePath());
}
}
return fileSetList;
} public void executeMerge() throws MojoExecutionException { final ExecFileLoader loader = new ExecFileLoader();
load(loader);
save(loader);
// 执行完成后,删除非必须的dump文件
for (final File fileSet : fileSets(this.path)) {
if ( ! fileSet.getName().equals("jacoco.exec") ) {
fileSet.delete();
}
}
} /**
* 加载dump文件
* @param loader
* @throws MojoExecutionException
*/
public void load(final ExecFileLoader loader) throws MojoExecutionException {
for (final File fileSet : fileSets(this.path)) {
System.out.println(fileSet.getAbsoluteFile());
final File inputFile = new File(this.path, fileSet.getName());
if (inputFile.isDirectory()) {
continue;
}
try {
System.out.println("Loading execution data file " + inputFile.getAbsolutePath());
loader.load(inputFile);
System.out.println(loader.getExecutionDataStore().getContents());
} catch (final IOException e) {
throw new MojoExecutionException("Unable to read "
+ inputFile.getAbsolutePath(), e);
}
}
} /**
* 执行合并文件
* @param loader
* @throws MojoExecutionException
*/
public void save(final ExecFileLoader loader) throws MojoExecutionException {
if (loader.getExecutionDataStore().getContents().isEmpty()) {
System.out.println("Skipping JaCoCo merge execution due to missing execution data files");
return;
}
System.out.println("Writing merged execution data to " + this.destFile.getAbsolutePath());
try {
loader.save(this.destFile, false);
} catch (final IOException e) {
throw new MojoExecutionException("Unable to write merged file "
+ this.destFile.getAbsolutePath(), e);
}
}
}

实现了,存在多个dump文件时,通过调用jacoco的源码,对多个dump文件合并,合并成一个dump文件,便于分析。

java操作Jacoco合并dump文件的更多相关文章

  1. java操作JacocClient下载dump文件

    记录瞬间 import org.jacoco.core.data.ExecutionDataWriter; import org.jacoco.core.runtime.RemoteControlRe ...

  2. java操作Excel、PDF文件

    java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...

  3. java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  4. java操作office和pdf文件页面列表导出cvs,excel、pdf报表.

    在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报 表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本 ...

  5. java操作FTP,实现文件上传下载删除操作

    上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...

  6. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  7. 认识Java Core和Heap Dump

    什么是Java Core和Heap Dump Java程序运行时,有时会产生Java Core及Heap Dump文件,它一般发生于Java程序遇到致命问题的情况下. 发生致命问题后,Java进程有时 ...

  8. java OOM还在看log日志,兄弟你错的的很严重,正确方式是分析dump文件

    目录 OOM异常--intsmaze 正确姿势dump文件分析--intsmaze 正确的姿势--intsmaze dump丢失打印--intsmaze 哪些内存溢出会产生dump文件--intsma ...

  9. [转载]java合并word文件

    需求背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何动态生成一张word试卷.事先把题库中的每一道试题都已经保存成一个独立的word文件了,但是在选择了部分试题生成一张word试卷的 ...

随机推荐

  1. 权限管理——shiro

    1.shiro整合spring a.导入依赖 <properties> <shiro.version>1.2.4</shiro.version> </prop ...

  2. 通过ViewPager 实现图片轮播

    通过ViewPager 实现图片轮播 首先来个效果图 布局文件: LinearLayout 用来存放下方的几个小白点. <?xml version="1.0" encodin ...

  3. python 列表常用方法

    1.在列表末尾添加新的对象 li=[11,22,33,'aa','bb','cc'] li.append('dd') print(li) 2.清空列表 li=[11,22,33,'aa','bb',' ...

  4. BigDecimal 准确的 double , float 计算

    public class ArithUtil { private static final int DEF_DIV_SCALE = 10; private ArithUtil() { } /** * ...

  5. Navicat Premium 最新版本12.1.16-64bit 完美破解,亲测可用!

    声明:本文只是提供一个网络上找到的针对12.1.16版本的破解注册机使用方式做一个说明,不建议企业用户破解,毕竟码农不容易,有条件的还是希望大家购买原版.当然个人学习用的但又不想购买原版的,这里只是提 ...

  6. Android ble蓝牙问题

    (1)蓝牙回调安卓4.4的蓝牙回调是在异步线程中(不在主线程),若要在蓝牙回调中执行更新界面的操作,记得切换到主线程去操作 (2)三星手机兼容性问题connectGatt()方法在某些三星手机上只能在 ...

  7. css 制作圆角、圆形图形布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. node.js官方文档解析 01—assert 断言

    assert-------断言 new assert.AssertionError(options) Error 的一个子类,表明断言的失败. options(选项)有下列对象 message < ...

  9. windows 2008下IIS7 安装ASP.NET 遇到500.19

    windows 2008下IIS7 安装ASP.NET 遇到如下错误: HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. ...

  10. Java正则表达式过滤并消除非法字符

    package sd; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author 大汉 * */ ...