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

标签 java code-coverage cobertura jacoco clover

This sonar page基本上列出了不同代码覆盖率分析工具采用的各种方法:

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

这三种方法是什么,哪一种最有效,为什么?如果效率问题的答案是“视情况而定”,那么请解释为什么?

最佳答案

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

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

动态字节码检测包括在字节码中添加那些相同的指令,但是在运行时动态地,当字节码被 JVM 加载时。

This page有方法之间的比较。它可能有偏见,因为它是 Clover 文档的一部分。

根据您对“高效”的定义,选择您最喜欢的一种。我不认为你会得到巨大的差异。他们都完成了工作,无论使用何种方法,大局都是一样的。

关于java - 代码覆盖率分析的三种方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15255798/

相关文章:

java - Kafka 不断重新平衡消费者

java - JSONArray 不会从 SeekBar 读取 double

java - 发现从元素 'elementName' 开始的无效内容。此时不需要子元素

TFS 2015 代码覆盖率未显示

jenkins - 使用 Cobertura 输出 Gcov 的颜色代码

maven - 如何让 maven cobertura 和 surefire 插件一起工作?

java - 为什么jarsigner可以签名Android apk?

python - Django 覆盖 ModuleNotFoundError : No module named 'django_extensions'

testing - VSTS - 如何获得代码覆盖率结果

maven - 我如何配置在maven-cobertura-plugin中运行cobertura测试?