jacoco

1.jacoco
使用ASM修改字节码
ASM:
通用的java字节码操作和分析框架, 用于修改现有类或直接以二进制形式动态生成类, 
ASM提供了一些常见的字节码转换和分析算法, 可以从中构建自定义复杂转换和代码分析工具。
覆盖率统计:
jacoco包含了多种尺度的覆盖率计数器,
包含指令级(Instructions),分支(Branchs),圈复杂度(Complexity),行(lines),方法,类
(1)行覆盖:
**全部未覆盖:该行中指令均未执行,红色标志
**部分覆盖:该行中部分指令执行,黄色标志
**全覆盖:该行中所有指令已执行,绿色标志

(2)类覆盖:

当类中至少有一个方法已执行,则该类被认为已执行。Jacoco中认为构造函数和静态初始化方法也当作被执行过的方法。Java接口类型若包含静态初始化方法,这种接口也被认为是可执行的类。

(3)方法覆盖:

每个非抽象方法至少包含一个指令。当至少一个指令被执行,该方法被认为已执行。由于Jacoco基于字节码级别的,构造函数和静态初始化方法也被当作方法计算。其中有些方法,可能无法直接对应到源码中,比如默认构造器或常量的初始化命令。
 
(4) 分支覆盖
Jacoco为if和switch语句计算分支覆盖率。这个指标计算一个方法中的分支总数,并决定已执行和未执行的分支的数量。分支覆盖率在class文件中缺少debug信息时也可使用。异常处理不在分支覆盖的统计范围内。
**全部未覆盖:所有分支均未执行,红色标志
**部分覆盖:只有部分分支被执行,黄色标志
**全覆盖:所有分支均已执行,绿色标志
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章