作者 | 洪硕果
基本含义:测试后被测目标已执行的代码数 / 被测目标总的代码数 触发行为:功能测试、接口测试 度量维度:函数覆盖、语句覆盖、判断覆盖、条件覆盖、路径覆盖等 代码覆盖率可以作为需求覆盖率的补充,反向衡量测试充分性
学习了,入门基础篇
我也是用类似方法实现的,
对于插桩引起的异常,我们是只有针对反射的时候才会抛出异常,方便详细问下你们这个【影响 1】是有用到 get/set 注解还是其他情况?
影响 1 就是 jacoco 插入的变量没有 get 和 set 方法引起的 也是反射引起的
最近也在搞这个,code diff 可以用仓库工具的命令获取,启动时用 includes 指定即可
如果不是 java 的代码,php 的后台呢,用什么工具检查?
这个是针对服务端代码,还是针对客户端 Android 代码?听说 Android 代码不支持在线动态插桩
不知道咧, jacoco 只能用于 java 代码
是针对服务端代码的 客户端覆盖率统计可以采用 jacoco 另一种插桩模式
累加上次版本:版本 n 未覆盖行,查询版本 n-1,若存在并已覆盖,判断 last diff 是否存在,不存在则设置该行已覆盖,其它则未覆盖; 存在两次遍历,计算比较耗时
这块你们是如何实现呢,是解析两个版本的 html report 自己计算? 还是解析 ec 二进制文件?
解析两个版本的 xml report,再对比两版本的差异计算的
那就只能做到方法级别是否覆盖了吧 没法做到源码代码行级别的展现
我们也在做,最后发现也只能这样了
不是 细粒度到行级别的
但是 xml report 是没有源码行数据的吧 只是方法 a 的各种覆盖率数值是多少
比如版本 1 的方法 a 覆盖了 3 行 版本 2 的方法 a 覆盖了 2 行 你怎么做合并呢
xml report 有源码行数覆盖信息的
还真是,之前就看了头部的几十行。。。 多谢哈
@ 张全蛋 php 有类似的 phpunit 和 xdebug 可以实现, 我最近也在研究 php 这个代码覆盖率, 有兴趣可以一块讨论下
累加上次版本:版本 n 未覆盖行,查询版本 n-1,若存在并已覆盖,判断 last diff 是否存在,不存在则设置该行已覆盖,其它则未覆盖; 存在两次遍历,计算比较耗时;
在行级别合并,还是会有些问题 比如本次覆盖率有这条数据
<line nr="69" mi="3" ci="7" mb="4" cb="2" />
这行是覆盖了的 看你的实现逻辑,这行直接就取本次的数据了是吧? 但是其中有些指令和分支是 missed 按理说还是应该合并上次的该行数据
但是如果想累加上次的行数据 又没法实现 比如上次相同行数据
<line nr="69" mi="7" ci="3" mb="2" cb="4" />
并不能简单的累加,因为你没法知道两次 covered 的数值是不是相同的指令或分支
所以我理解是,只能累加出基于行数据的覆盖率数据(行、方法、类) 基于指令的(指令、分支、圈复杂度)起码从 xml 中是没法准确实现的 不过我们最后看报告,实际看的又是基于代码行的 只不过指令、分支、圈复杂度这几个覆盖率数值是不准确的而已
” 根据配置判断是否启用 jacoco,及分配端口号 “, 问一下,假如启用 jacoco,端口号是自动分配的?分配策略是怎样的?如果是自动分配的,codecoverage 配置是如何知道这个端口的,因为如果是 tcpserver 的模式,是需要指定 ip 和端口来获取 exec 文件的。还有,jacoco 的启用时自动执行的吗?不需要手动改 tomat 的启动脚本吗?这部分你们是怎么做的呢
在 Android 端你这个如何实现增量覆盖的,还是没看明白···拿到差异化文件之后,怎么执行 jacoco 命令重新计算的
请问下,code diff 如何拿到拉分支时的版本?
code diff 用的是什么?
这是服务端的
请问下,加载类时根据匹配规则判断是否进行插桩,这个源码改了哪些模块?
请问你怎么实现的,可以加微信请教下吗
请教一下,你的 code diff 是怎么做的啊?我用 Jgit 尝试了一下,发现遇到合并分支的 diff 文件就会不准确。