天天看点

JaCoCo 与Cobertura 的对比0 二者总体功能对比1 数据结构对比2 客户操作自由度

0 二者总体功能对比

JaCoCo 与Cobertura 的对比0 二者总体功能对比1 数据结构对比2 客户操作自由度

Open Cover 官方给出的详细对比

http://openclover.org/doc/manual/latest/general

–comparison-of-code-coverage-tools.html#Comparisonofcodecoveragetools-legend

1 数据结构对比

1.1 UML 图

cobertura

net.sourceforge.cobertura.coveragedata

JaCoCo 与Cobertura 的对比0 二者总体功能对比1 数据结构对比2 客户操作自由度

JaCoCo

org.jacoco.core.internal.analysis

JaCoCo 与Cobertura 的对比0 二者总体功能对比1 数据结构对比2 客户操作自由度

都差不多,公共的都支持分支,方法,类,包的覆盖率统计

1.2 核心结构

方法指令的有状态生成器.一个方法的所有指令必须按照它们的原始顺序加上附加信息,如行号。

之后,可以使用getInstructions方法获得ASM指令map

JaCoCo 与Cobertura 的对比0 二者总体功能对比1 数据结构对比2 客户操作自由度

对于该指令生成器结构,封装的是 boolean 数组的探针,无法实现计数,因此需要考虑改造成 int 型数组,之后如何去接收 int 值也是问题.

Cobertura

但是 Cobertura 的 lineData 覆盖类型还维护了 hit 字段,用于记录触发次数,符合当前需要

JaCoCo 与Cobertura 的对比0 二者总体功能对比1 数据结构对比2 客户操作自由度

2 客户操作自由度

JaCoCo 与Cobertura 的对比0 二者总体功能对比1 数据结构对比2 客户操作自由度

2.1 框架热插拔植入

  • 目前最为熟悉的框架,需要将功能完善的代码打成 jacocoagent.jar 后,通过JDK6 instrument API 热部署到客户程序中.
  • 和 jacoco 一样从 JDK5 开始设计的框架,都不支持热插拔,这里都需要需要改动

2.2 定时任务

都需要适配

继续阅读