记录瞬间

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. php实现多进程和关闭进程

    一.php实现多进程 PHP有个pcntl_fork的函数可以实现多进程,但要加载pcntl拓展,而且只有在linux下才能编译这个拓展. 先代码: <?php$arr = ['30000000 ...

  2. SoapUI破解及安装教程

    之前学了一段时间的SoapUI,但是好久不用了,这里记录下专业版的破解的流程,后续的学习会不断更新. soapUI安装及破解(这里针对专业版) 下载地址:http://dl.eviware.com/l ...

  3. CSS3_线性渐变_径向渐变----背景

    渐变的本质: 绘制一张背景图片,所以使用 background 或者 background-image background 的诸多属性,渐变都是可以使用的(repeat,position) 百分比: ...

  4. [LeetCode] Swap Adjacent in LR String 交换LR字符串中的相邻项

    In a string composed of 'L', 'R', and 'X' characters, like "RXXLRXRXL", a move consists of ...

  5. python selenium ——— 动态id、class定位

    什么样的是动态id呢? 动态id就是第一次点击显示的id与二次点击显示的不一样,一般是元素属性中包含一段数字的这种情况. 类似这种: 1 <input type="button&quo ...

  6. Jmeter遇到打不开的问题

    1.JDK的版本,一定版本的jmeter需要特定版本以上的JDK支持,比如此次运行的apache-jmeter-2.12,就需要JDK1.6以上的版本支持.我原来装的是JDK1.5,配置好JMETER ...

  7. 关于python字符串基本操作

    python字符串基本操作,比如字符串的替换.删除.截取.复制.连接.分割等.都是一些关于字符串的一些方法.下面来列举一些,相信对学习python还是有些帮助的. 1.去除空格--strp(): &g ...

  8. 如何设置 jenkins 任务执行的历史记录在左侧显示的格式?

    java -jar I:\CDC\jenkins\jenkins-cli.jar -s http://$ENV:MasterHost.us.oracle.com set-build-display-n ...

  9. C++/C代码审查注意事项(摘录,非原创)

    文件结构 头文件和定义文件的名称是否合理?头文件和定义文件的目录结构是否合理?版权和版本声明是否完整? 重要头文件是否使用了 ifndef/define/endif 预处理块?头文件中是否只存放“声明 ...

  10. delphi odbc远程连接sqlserver

    ip设置格式xx.xx.xx.xx,port ip和端口号之间是逗号