0 二者总体功能对比
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
org.jacoco.core.internal.analysis
包
都差不多,公共的都支持分支,方法,类,包的覆盖率统计
1.2 核心结构
JaCoCo
方法指令的有状态生成器.一个方法的所有指令必须按照它们的原始顺序加上附加信息,如行号。
之后,可以使用getInstructions方法获得ASM指令map
对于该指令生成器结构,封装的是 boolean 数组的探针,无法实现计数,因此需要考虑改造成 int 型数组,之后如何去接收 int 值也是问题.
Cobertura
但是 Cobertura 的 lineData 覆盖类型还维护了 hit 字段,用于记录触发次数,符合当前需要
2 客户操作自由度
2.1 框架热插拔植入
- JaCoCo
目前最为熟悉的框架,需要将功能完善的代码打成 jacocoagent.jar 后,通过JDK6 instrument API 热部署到客户程序中. - Cobertura
和 jacoco 一样从 JDK5 开始设计的框架,都不支持热插拔,这里都需要需要改动
2.2 定时任务
都需要适配