[发明专利]一种检测代码覆盖率方法及装置在审
申请号: | 202111063950.5 | 申请日: | 2021-09-10 |
公开(公告)号: | CN113836006A | 公开(公告)日: | 2021-12-24 |
发明(设计)人: | 刘光宗 | 申请(专利权)人: | 深圳前海微众银行股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 彭燕 |
地址: | 518027 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 代码 覆盖率 方法 装置 | ||
1.一种检测代码覆盖率方法,其特征在于,包括:
获取待测代码文件以及所述待测代码文件对应的索引文件,所述待测代码文件包括至少一个子文件,所述索引文件包括所述待测代码文件对应的根文件标识与所述至少一个子文件各自对应的子文件标识之间关联关系,以及每个子文件对应的探针计数数组,所述探针计数数组中每个元素与相应子文件中包含的一个代码逻辑分支对应的一个测试探针关联;
在运行所述待测代码文件的过程中,针对所述待测代码文件中插入的每个测试探针,若所述测试探针被触发,则确定所述测试探针在所述索引文件中关联的目标元素,并更新所述目标元素;
在所述待测代码文件运行结束时,根据所述索引文件中各个探针计数数组中的元素,确定所述待测代码文件的代码覆盖率。
2.如权利要求1所述的方法,其特征在于,所述获取所述待测代码文件的索引文件,包括:
根据所述待测代码文件与所述至少一个子文件之间的关联关系,以及所述至少一个子文件各自包含的代码逻辑分支,构建所述待测代码文件对应的索引文件。
3.如权利要求2所述的方法,其特征在于,所述根据所述待测代码文件与所述至少一个子文件之间的关联关系,以及所述至少一个子文件各自包含的代码逻辑分支,构建所述待测代码文件对应的索引文件之前,还包括:
确定所述待测代码文件的根文件标识与历史索引文件中的根文件标识不同,以及所述至少一个子文件各自对应的子文件标识,与所述历史索引文件中的历史子文件对应的子文件标识不同。
4.如权利要求1所述的方法,其特征在于,所述获取所述待测代码文件的索引文件,包括:
若所述待测代码文件的根文件标识与历史索引文件中的根文件标识相同,则对所述历史索引文件中的各个探针计数数组进行初始化处理;
将初始化处理后的历史索引文件,作为所述待测代码文件的索引文件。
5.如权利要求4所述的方法,其特征在于,还包括:
若所述待测代码文件的根文件标识与历史索引文件中的根文件标识不同,则将所述至少一个子文件各自对应的子文件标识,分别与所述历史索引文件中的历史子文件对应的子文件标识进行比对;
对满足子文件标识相同的历史子文件对应的探针计数数组进行初始化处理,并将初始化处理后的探针计数数组,作为所述待测代码文件中相应子文件对应的探针计数数组;
生成所述待测代码文件中其他子文件对应探针计数数组;
基于所述待测代码文件对应的根文件标识、所述至少一个子文件各自对应的子文件标识和探针计数数组,获得所述待测代码文件的索引文件。
6.如权利要求1所述的方法,其特征在于,所述代码逻辑分支的类型包括:顺序执行逻辑分支、无条件跳转逻辑分支、有条件跳转逻辑分支、异常处理逻辑分支和返回逻辑分支。
7.如权利要求1所述的方法,其特征在于,所述若所述测试探针被触发,则确定所述测试探针在所述索引文件中关联的目标元素,并更新所述目标元素,包括:
若所述测试探针被触发,则获取所述测试探针在所述待测代码文件中的位置信息,其中,所述位置信息包括根文件标识、目标子文件标识和目标逻辑分支;
基于所述根文件标识、所述目标子文件标识和所述目标逻辑分支查询所述索引文件,确定所述测试探针在所述索引文件中关联的目标探针计数数组,以及在所述目标探针计数数组中对应的目标元素,并将所述目标元素自增预设数值。
8.如权利要求1至7任一所述的方法,其特征在于,所述根据所述索引文件中各个探针计数数组中的元素,确定所述待测代码文件的代码覆盖率,包括:
将所述索引文件中各个探针计数数组的总长度,作为测试探针总数;
将所述各个探针计数数组中大于零的元素的数量,作为被触发探针数量;
将所述被触发探针数量与所述测试探针总数的比值作为所述待测代码文件的代码覆盖率。
9.如权利要求8所述的方法,其特征在于,所述待测代码文件为原始代码文件或复制获得的副本代码文件。
10.一种检测代码覆盖率装置,其特征在于,包括:
获取模块,用于获取待测代码文件以及所述待测代码文件对应的索引文件,所述待测代码文件包括至少一个子文件,所述索引文件包括所述待测代码文件对应的根文件标识与所述至少一个子文件各自对应的子文件标识之间关联关系,以及每个子文件对应的探针计数数组,所述探针计数数组中每个元素与相应子文件中包含的一个代码逻辑分支对应的一个测试探针关联;
更新模块,用于在运行所述待测代码文件的过程中,针对所述待测代码文件中插入的每个测试探针,若所述测试探针被触发,则确定所述测试探针在所述索引文件中关联的目标元素,并更新所述目标元素;
统计模块,在所述待测代码文件运行结束时,根据所述索引文件中各个探针计数数组中的元素,确定所述待测代码文件的代码覆盖率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳前海微众银行股份有限公司,未经深圳前海微众银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111063950.5/1.html,转载请声明来源钻瓜专利网。