一种检测代码覆盖率方法及装置制造方法及图纸

技术编号:31574938 阅读:23 留言:0更新日期:2021-12-25 11:16
本申请实施例提供了一种检测代码覆盖率方法及装置,涉及金融科技(Fintech)技术领域,该方法包括:获取待测代码文件以及待测代码文件对应的索引文件,在运行待测代码文件的过程中,针对待测代码文件中插入的每个测试探针,若测试探针被触发,则确定测试探针在索引文件中关联的目标元素,并更新目标元素。在待测代码文件运行结束时,根据索引文件中各个探针计数数组中的元素,确定待测代码文件的代码覆盖率。当测试探针被触发时,通过索引文件,快速确定与测试探针相关联的探针计数数组中的元素,提高了查找速度。子文件中各个测试探针与探针计数数组中的元素一一对应,提高了检测代码覆盖率的精度。盖率的精度。盖率的精度。

【技术实现步骤摘要】
一种检测代码覆盖率方法及装置


[0001]本申请实施例涉及金融科技(Fintech)
,尤其涉及一种检测代码覆盖率方法及装置。

技术介绍

[0002]随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
[0003]为了提高软件开发的质量,往往需要对软件进行代码覆盖率统计。目前业界方案分为两种主流,运行时分析和注入分析,其中,运行时分析主要通过Java虚拟机监视接口(JVMPI)和Java虚拟机工具接口(JVMTI)去统计,而注入分析又分为源码注入和字节码注入的方式。
[0004]由于源码注入会入侵和破坏原有的代码结构,所以业界普遍偏好使用字节码注入的方式,字节码注入分析一般采用JaCoCo技术,即通过插桩模式插入覆盖率统计的探针(Probe),达到测试覆盖率统计的目的。然而,采用JaCoCo检测代码覆盖率的方式的使用场景受限,容易与其他测试任务冲突,从而影响检测代码覆盖率的效率和准确性。

技术实现思路

[0005]本申请实施例提供了一种检测代码覆盖率方法及装置,用于提高检测代码覆盖率的效率和准确性。
[0006]一方面,本申请实施例提供了一种检测代码覆盖率方法,该方法包括:
[0007]获取待测代码文件以及所述待测代码文件对应的索引文件,所述待测代码文件包括至少一个子文件,所述索引文件包括所述待测代码文件对应的根文件标识与所述至少一个子文件各自对应的子文件标识之间关联关系,以及每个子文件对应的探针计数数组,所述探针计数数组中每个元素与相应子文件中包含的一个代码逻辑分支对应的一个测试探针关联;
[0008]在运行所述待测代码文件的过程中,针对所述待测代码文件中插入的每个测试探针,若所述测试探针被触发,则确定所述测试探针在所述索引文件中关联的目标元素,并更新所述目标元素;
[0009]在所述待测代码文件运行结束时,根据所述索引文件中各个探针计数数组中的元素,确定所述待测代码文件的代码覆盖率。
[0010]一方面,本申请实施例提供了一种检测代码覆盖率装置,该装置包括:
[0011]获取模块,用于获取待测代码文件以及所述待测代码文件对应的索引文件,所述待测代码文件包括至少一个子文件,所述索引文件包括所述待测代码文件对应的根文件标识与所述至少一个子文件各自对应的子文件标识之间关联关系,以及每个子文件对应的探针计数数组,所述探针计数数组中每个元素与相应子文件中包含的一个代码逻辑分支对应
的一个测试探针关联;
[0012]更新模块,用于在运行所述待测代码文件的过程中,针对所述待测代码文件中插入的每个测试探针,若所述测试探针被触发,则确定所述测试探针在所述索引文件中关联的目标元素,并更新所述目标元素;
[0013]统计模块,在所述待测代码文件运行结束时,根据所述索引文件中各个探针计数数组中的元素,确定所述待测代码文件的代码覆盖率。
[0014]可选地,所述获取模块具体用于:
[0015]根据所述待测代码文件与所述至少一个子文件之间的关联关系,以及所述至少一个子文件各自包含的代码逻辑分支,构建所述待测代码文件对应的索引文件。
[0016]可选地,所述获取模块还用于:
[0017]确定所述待测代码文件的根文件标识与历史索引文件中的根文件标识不同,以及所述至少一个子文件各自对应的子文件标识,与所述历史索引文件中的历史子文件对应的子文件标识不同。
[0018]可选地,所述获取模块具体用于:
[0019]若所述待测代码文件的根文件标识与历史索引文件中的根文件标识相同,则对所述历史索引文件中的各个探针计数数组进行初始化处理;
[0020]将初始化处理后的历史索引文件,作为所述待测代码文件的索引文件。
[0021]可选地,所述获取模块还用于:
[0022]若所述待测代码文件的根文件标识与历史索引文件中的根文件标识不同,则将所述至少一个子文件各自对应的子文件标识,分别与所述历史索引文件中的历史子文件对应的子文件标识进行比对;
[0023]对满足子文件标识相同的历史子文件对应的探针计数数组进行初始化处理,并将初始化处理后的探针计数数组,作为所述待测代码文件中相应子文件对应的探针计数数组;
[0024]生成所述待测代码文件中其他子文件对应探针计数数组;
[0025]基于所述待测代码文件对应的根文件标识、所述至少一个子文件各自对应的子文件标识和探针计数数组,获得所述待测代码文件的索引文件。
[0026]可选地,所述代码逻辑分支的类型包括:顺序执行逻辑分支、无条件跳转逻辑分支、有条件跳转逻辑分支、异常处理逻辑分支和返回逻辑分支。
[0027]可选地,所述更新模块具体用于:
[0028]若所述测试探针被触发,则获取所述测试探针在所述待测代码文件中的位置信息,其中,所述位置信息包括根文件标识、目标子文件标识和目标逻辑分支;
[0029]基于所述根文件标识、所述目标子文件标识和所述目标逻辑分支查询所述索引文件,确定所述测试探针在所述索引文件中关联的目标探针计数数组,以及在所述目标探针计数数组中对应的目标元素,并将所述目标元素自增预设数值。
[0030]可选地,所述统计模块具体用于:
[0031]将所述索引文件中各个探针计数数组的总长度,作为测试探针总数;
[0032]将所述各个探针计数数组中大于零的元素的数量,作为被触发探针数量;
[0033]将所述被触发探针数量与所述测试探针总数的比值作为所述待测代码文件的代
码覆盖率。
[0034]可选地,所述待测代码文件为原始代码文件或复制获得的副本代码文件。
[0035]一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述检测代码覆盖率方法的步骤。
[0036]一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述检测代码覆盖率方法的步骤。
[0037]本申请实施例中,获取待测代码文件以及待测代码文件对应的索引文件,在运行待测代码文件的过程中,针对待测代码文件中插入的每个测试探针,若测试探针被触发,则确定测试探针在索引文件中关联的目标元素,并更新目标元素。在待测代码文件运行结束时,根据索引文件中各个探针计数数组中的元素,确定待测代码文件的代码覆盖率。当测试探针被触发时,通过索引文件,快速确定与测试探针相关联的探针计数数组中的元素,提高了查找速度。子文件中各个测试探针与探针计数数组中的元素一一对应,提高了检测代码覆盖率的精度。
附图说明
[0038]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种检测代码覆盖率方法,其特征在于,包括:获取待测代码文件以及所述待测代码文件对应的索引文件,所述待测代码文件包括至少一个子文件,所述索引文件包括所述待测代码文件对应的根文件标识与所述至少一个子文件各自对应的子文件标识之间关联关系,以及每个子文件对应的探针计数数组,所述探针计数数组中每个元素与相应子文件中包含的一个代码逻辑分支对应的一个测试探针关联;在运行所述待测代码文件的过程中,针对所述待测代码文件中插入的每个测试探针,若所述测试探针被触发,则确定所述测试探针在所述索引文件中关联的目标元素,并更新所述目标元素;在所述待测代码文件运行结束时,根据所述索引文件中各个探针计数数组中的元素,确定所述待测代码文件的代码覆盖率。2.如权利要求1所述的方法,其特征在于,所述获取所述待测代码文件的索引文件,包括:根据所述待测代码文件与所述至少一个子文件之间的关联关系,以及所述至少一个子文件各自包含的代码逻辑分支,构建所述待测代码文件对应的索引文件。3.如权利要求2所述的方法,其特征在于,所述根据所述待测代码文件与所述至少一个子文件之间的关联关系,以及所述至少一个子文件各自包含的代码逻辑分支,构建所述待测代码文件对应的索引文件之前,还包括:确定所述待测代码文件的根文件标识与历史索引文件中的根文件标识不同,以及所述至少一个子文件各自对应的子文件标识,与所述历史索引文件中的历史子文件对应的子文件标识不同。4.如权利要求1所述的方法,其特征在于,所述获取所述待测代码文件的索引文件,包括:若所述待测代码文件的根文件标识与历史索引文件中的根文件标识相同,则对所述历史索引文件中的各个探针计数数组进行初始化处理;将初始化处理后的历史索引文件,作为所述待测代码文件的索引文件。5.如权利要求4所述的方法,其特征在于,还包括:若所述待测代码文件的根文件标识与历史索引文件中的根文件标识不同,则将所述至少一个子文件各自对应的子文件标识,分别与所述历史索引文件中的历史子文件对应的子文件标识进行比对;对满足子文件标识相同的历史子文件对应的探针计数数组进行初始化处理,并将初始化处理后的探针计数数组,作为所述待测代码文件中相应子文件对应的探针计数数组;生成所述待测代码文件中其他子文件对应探针计数数组;基...

【专利技术属性】
技术研发人员:刘光宗
申请(专利权)人:深圳前海微众银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1