天天看點

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 定時任務

都需要适配

繼續閱讀