Android端Jacoco实践

Jacoco

  • 原理
  • Android中的使用
  • 商家端实践

原理

Jacoco是EclEmma团队开发的Java代码覆盖率的开源库

  • 代码覆盖率
  • Jacoco模式
  • 探针

模式

implementation.png
  • on the fly
  • offline

探针的数据结构

public final class ExecutionData {

    private final long id;

    private final String name;

    private final boolean[] probes;

    ***
}

被执行的代码/测试的代码

foo(){
    int a = 1
}

foo(){
    int a = 1
    prob[0] = true
}

总结:

如果已经执行了探测,我们知道已经访问了相应的边缘,从这个边缘我们可以得出其他前面的节点和边:

(1)如果访问了边,我们知道该边的源节点已经被执行。

(2)如果节点已经被执行且节点是一个边缘的目标节点,则我们知道已经访问了该边。

  • 每一个方法的出口(return throw)
  • 边的目标指令包含多条边
jacoco4.png
ALOAD    probearray
xPUSH    probeid
ICONST_1
BASTORE

增量的实现

  1. 源文件获取diff
  2. class文件获取diff

Android中的使用

jacoco5.png

jacoco

商家端实践

TODO

  • diff方案
  • 后端改造,部署到云上

你可能感兴趣的:(Android端Jacoco实践)