Android端Jacoco实践
2022-03-08 本文已影响0人
BooQin
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)
- 边的目标指令包含多条边
ALOAD probearray
xPUSH probeid
ICONST_1
BASTORE
增量的实现
- 源文件获取diff
- class文件获取diff
Android中的使用
jacoco5.png商家端实践
TODO
- diff方案
- 后端改造,部署到云上