这三种代码覆盖率分析方法有什么区别?

Gee*_*eek 17 java code-coverage cobertura clover jacoco

该声纳页面基本上列出了不同代码覆盖率分析工具采用的各种方法:

  1. 源代码检测(由Clover使用)
  2. 离线字节代码检测(由Cobertura使用)
  3. 即时字节代码检测(由Jacoco使用)

这三种方法是什么,哪种方法效率最高?为什么?如果效率问题的答案是"它取决于",那么请解释原因?

JB *_*zet 14

源代码检测包括在编译之前向源代码添加指令.这些指令用于跟踪代码的哪些部分已被执行.

离线字节码检测包括添加相同的指令,但在编译之后,直接进入字节码.

即时字节代码检测包括在字节代码中添加相同的指令,但在运行时动态地在JVM加载字节代码时添加.

此页面对方法进行了比较.它可能有偏见,因为它是Clover文档的一部分.

根据您对"高效"的定义,选择您最喜欢的那个.我不认为你会得到巨大的差异.他们都在做这项工作,无论采用何种方法,大局都是一样的.