Android端代码染色原理及技术实践

发布于:2021-03-01 15:49:07

1

1088

0

高德 地图 Android

导读

高德地图开放平台产品不断迭代,代码逻辑越来越复杂,现有的测试流程不能保证完全覆盖所有业务代码,测试不到的代码及分支,会存在一定的风险。为了保证测试全面覆盖,需要引入代码覆盖率做为测试指标,需要对SDK代码进行染色,测试结束后可生成代码覆盖率报告,作为发版前的一项重要卡点指标。本文小结了Android端代码染色原理及技术实践。

JaCoCo工具

JaCoCo有以下优点:

  • 支持Ant和Gradle打包方式,可以自由切换。

  • 支持离线模式,更贴合SDK的使用场景。

  • JaCoCo文档比较全面,还在持续维护,有问题便于解决。

JaCoCo主要是通过ASM技术对Java字节码进行处理和插桩,ASM和Java字节码技术不是本文重点,感兴趣的朋友可以自行了解。下面重点介绍JaCoCo的插桩原理。

 

Jacoco探针

由于Java字节码是线性的指令序列,所以JaCoCo主要是利用ASM处理字节码,在需要的地方插入一些特殊代码。

我们通过Test1方法观察一下JaCoCo做的处理。