问题
jacoco覆盖率,这种白色背景的代表什么?
非常感谢思寒老师的解答 咱们学院的贴就是给力,基本上·发帖的问题,都有人答
这个所在区域代码入口未被覆盖,是啥意思?没太懂,能辛苦思寒老师,举例说明下嘛
所在区域代码入口被覆盖,是说这个方法,已经被调用了。未被覆盖,是说这个方法连调用都没被调用?
这个入口,说的就是 方法嘛? 因为这些插桩的代码都是在方法里面,所以方法是 区域代码的入口?
而且我观察,所有的public的方法那行,都是白色的。
是因为 jacoco是插桩方式,插桩是在方法里面,要执行的逻辑代码前面进行插桩(分支代码每个分支代码前面插桩)的。
统计覆盖情况,其实就是统计插桩的代码被执行的情况。以此来区分 红黄绿颜色?
而插桩是不会在 public void……等 方法前面插桩,所以 方法那行都是白色的?
比如一些import语句,或者方法被重载过,真正执行的并不是当前的方法
能被插桩的地方才会有统计,有些语句是无法被插桩的,比如import 一些注解、函数定义等。他们本身并不是实际执行的指令,只是一种定义,而不是执行,所以没法插桩。
明白了,这个听懂了。而且白色的背景代码,我刚才又仔细观察了,覆盖率报告,它是分入口的,比如 方法a,和方法b,是同一个java文件,但是你从方法a点进去,看的java文件,只有方法a是有颜色区分的。方法b全是白色,你从方法b进入该java文件,方法b是有颜色区分的。方法a全是白色的。说明入口不同,颜色不同,颜色区分。你从那个入口进入,就统计那个入口的。并不是我想的那样,按照该java文件的维度来区分的。(我以为的是该java文件,方法a,b都被执行的话,报告里面不管从哪里进入都是一个java文件,方法a b都是有颜色区分的)
就像定义常量,定义code码,等? 那这些无法插桩的语句,是否算在覆盖率的统计内,比如, 100行代码, 10行是这种无法插桩的, 覆盖率永远无法达到 100%? 还是覆盖率的总行数,是指可插桩的,可执行代码,无法插桩执行的不被统计到总行数里面?