三种代码覆盖率分析方法之间有何区别?


问题内容

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

  1. 源代码工具 (由Clover使用
  2. 离线字节码检测 (由Cobertura使用
  3. 动态字节码检测 (由Jacoco使用

这三种方法是什么,哪一种是最有效的?为什么?如果对效率问题的回答是“取决于”,那么请解释为什么?


问题答案:

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

离线字节码检测包括将这些相同的指令添加到字节码中,但是在编译后直接将它们添加到字节码中。

动态字节码检测包括将相同的指令添加到字节码中,但是在运行时由JVM加载字节码时会动态添加这些指令。

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

根据您对“效率”的定义,选择最喜欢的一种。我认为您不会有太大的不同。他们都完成了工作,无论使用哪种方法,总体情况都是一样的。