本发明专利技术公开了一种覆盖率数据处理方法,包括:获取目标项目下当前版本的代码覆盖率数据;获取目标项目下相邻的先前版本的多版本代码覆盖率数据;比较当前版本与先前版本之间的代码差异;至少基于代码差异,确定当前版本与先前版本之间的代码行对应关系;以及基于代码行对应关系、先前版本的多版本代码覆盖率数据和当前版本的代码覆盖率数据,生成当前版本的多版本代码覆盖率数据。本发明专利技术还公开了对应的覆盖率数据处理装置、计算设备和可读存储介质。
【技术实现步骤摘要】
一种覆盖率数据处理方法、装置、计算设备及可读存储介质
本专利技术涉及计算机
,尤其涉及一种覆盖率数据处理方法、装置、计算设备及可读存储介质。
技术介绍
开发人员进行软件开发的过程中,需要对已经开发完成的代码进行测试,其中包括代码的覆盖率测试。代码覆盖(Codecoverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得到的比例称为代码覆盖率。代码覆盖率反映测试用例对被测软件覆盖程度的重要指标,是用来度量测试完整性的一个参考值,通过代码覆盖率数据可以评估测试是否充分。目前,通常获取到的是目标项目下相邻版本之间的增量覆盖率数据、或者某个版本的全量覆盖率数据。然而目标项目的开发过程中往往会快速迭代多个版本,单个版本的全量覆盖率数据或者相邻版本的增量覆盖率数据存在不够全面准确的问题。因此,迫切需要一种更先进的覆盖率数据处理方案。
技术实现思路
为此,本专利技术实施例提供一种覆盖率数据处理方法、装置、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的至少一个问题。根据本专利技术实施例的一个方面,提供了一种覆盖率数据处理方法,包括:获取目标项目下当前版本的代码覆盖率数据;获取目标项目下相邻的先前版本的多版本代码覆盖率数据;比较当前版本与先前版本之间的代码差异;至少基于代码差异,确定当前版本与先前版本之间的代码行对应关系;以及基于代码行对应关系、先前版本的多版本代码覆盖率数据和当前版本的代码覆盖率数据,生成当前版本的多版本代码覆盖率数据。可选地,在根据本专利技术实施例的方法中,确定当前版本与先前版本之间的代码行对应关系的步骤包括:基于代码差异,更新目标项目对应的版本行号矩阵,版本行号矩阵可以指示目标项目下至少一个版本之间的代码行对应关系;基于更新后的版本行号矩阵,确定当前版本与先前版本之间的代码行对应关系。可选地,在根据本专利技术实施例的方法中,行号对应矩阵的元素包括目标项目下各版本包括的代码行的行号,版本行号矩阵的各列向量对应于目标项目的各版本,相邻版本中具有对应关系的代码行的行号位于行号对应矩阵的同一行。可选地,在根据本专利技术实施例的方法中,更新目标项目对应的版本行号矩阵的步骤包括:在版本行号矩阵中新增对应于当前版本的列向量;对新增的列向量的元素进行逐行遍历,并对遍历到的各行,判断该行是否对应于代码差异记录的变动代码行;如果该行不对应于变动代码行,则令该行元素的值等于先前版本对应列向量中的同行元素的值。可选地,在根据本专利技术实施例的方法中,更新目标项目对应的版本行号矩阵的步骤包括:如果该行对应于变动代码行且变动标记为增加标记,则在该行与该行的上一行之间新增一行;令当前版本的列向量在新增行的元素的值为变动代码行在当前版本中的行号,令其他列向量在新增行的元素的值为特定标记,令该列向量在该新增行之下的各行元素的值等于先前版本对应列向量中的同行元素的值再加1。可选地,在根据本专利技术实施例的方法中,更新目标项目对应的版本行号矩阵的步骤包括:如果该行对应于变动代码行且变动标记为删除标记,则令该行元素的值为特定标记,令当前版本的列向量在该行之下的各行元素的值等于先前版本对应列向量中的同行元素的值再减1。可选地,在根据本专利技术实施例的方法中,确定当前版本与先前版本之间的代码行对应关系的步骤包括:对于当前版本的各代码行,确定代码行对应的矩阵元素;在先前版本对应的列向量中获取与代码行对应的矩阵元素位于同一行且值不为特定标记的矩阵元素;确定先前版本中行号为所获取的矩阵元素的代码行与当前版本的代码行具有对应关系。可选地,在根据本专利技术实施例的方法中,相应代码覆盖率数据包括相应版本中各代码行的覆盖结果,生成当前版本的所述多版本代码覆盖率数据的步骤包括:对于当前版本的各代码行,从当前版本的代码覆盖率数据中获取代码行的覆盖结果;基于代码行对应关系,确定当前版本的代码行在先前版本中的对应代码行;从先前版本的多版本代码覆盖率数据中获取对应代码行的多版本覆盖结果;基于代码行的覆盖结果和对应代码行的多版本覆盖结果,生成代码行的多版本覆盖结果。可选地,在根据本专利技术实施例的方法中,代码行的覆盖结果为代码行是否被覆盖,生成代码行的多版本覆盖结果的步骤包括:如果代码行的覆盖结果和对应代码行的多版本覆盖结果中任一个为被覆盖,则确定代码行的覆盖结果为被覆盖。可选地,在根据本专利技术实施例的方法中,代码行包括多个分支逻辑,代码行的覆盖结果包括代码行中各分支逻辑的覆盖结果,生成代码行的多版本覆盖结果的步骤包括:对于代码行的各分支逻辑,获取代码行的覆盖结果中分支逻辑的覆盖结果、以及对应代码行的多版本覆盖结果中分支逻辑的多版本覆盖结果;如果二者中任一个为被覆盖,则确定分支逻辑的覆盖结果为被覆盖。可选地,在根据本专利技术实施例的方法中,获取当前版本的代码覆盖率数据的的步骤包括:将当前版本的多条代码覆盖率信息合并。可选地,在根据本专利技术实施例的方法中,比较目标项目的当前版本与先前版本之间的代码差异的步骤包括:采用diff工具来比较。可选地,在根据本专利技术实施例的方法中,还包括:比较当前版本与指定先前版本之间的代码差异;基于代码差异和当前版本的多版本代码覆盖率数据,生成当前版本相对于指定先前版本的多版本增量代码覆盖率数据。根据本专利技术实施例的另一个方面,提供了一种覆盖率数据处理装置,包括:数据获取模块,适于获取目标项目下当前版本的代码覆盖率数据;还适于获取目标项目下相邻的先前版本的多版本代码覆盖率数据;差异比较模块,适于比较当前版本与先前版本之间的代码差异;关系确定模块,适于至少基于代码差异,确定当前版本与先前版本之间的代码行对应关系;以及数据生成模块,适于基于代码行对应关系、先前版本的多版本代码覆盖率数据和当前版本的代码覆盖率数据,生成当前版本的多版本代码覆盖率数据。。根据本专利技术实施例的另一个方面,提供了一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,该一个或多个程序包括用于执行根据本专利技术实施例的覆盖率数据处理方法中的任一方法的指令。根据本专利技术实施例的还有一个方面,提供了一种存储程序的可读存储介质,该程序包括指令,该指令当由计算设备执行时,使得计算设备执行根据本专利技术实施例的覆盖率数据处理方法的中任一方法。根据本专利技术实施例的覆盖率数据处理方法,利用目标项目下当前版本与相邻先前版本之间的代码差异和目标项目的版本行号矩阵,实现了当前版本的代码覆盖率数据与相邻先前版本的多版本代码覆盖率数据的聚合,避免了跨版本代码覆盖率数据合并的数据错乱问题,提高了代码覆盖率数据的全面性和准确性。其中,将不同版本之间的代码行对应关系采用版本行号矩阵来描述,为后续跨版本覆盖率数据聚会和增量覆盖率数据提取带了极大便利。进一步地,还基于版本行号矩阵,对相同目标项目下不同版本的同一代码行的覆盖结果和/或分支逻辑的覆盖结果进行了聚合,实现对整体项目增量覆盖的精准聚合把控,避免了错误覆盖和重复覆盖。本文档来自技高网...
【技术保护点】
1.一种覆盖率数据处理方法,包括:/n获取目标项目下当前版本的代码覆盖率数据;/n获取所述目标项目下相邻的先前版本的多版本代码覆盖率数据;/n比较所述当前版本与所述先前版本之间的代码差异;/n至少基于所述代码差异,确定所述当前版本与所述先前版本之间的代码行对应关系;以及/n基于所述代码行对应关系、所述先前版本的多版本代码覆盖率数据和所述当前版本的代码覆盖率数据,生成所述当前版本的多版本代码覆盖率数据。/n
【技术特征摘要】
1.一种覆盖率数据处理方法,包括:
获取目标项目下当前版本的代码覆盖率数据;
获取所述目标项目下相邻的先前版本的多版本代码覆盖率数据;
比较所述当前版本与所述先前版本之间的代码差异;
至少基于所述代码差异,确定所述当前版本与所述先前版本之间的代码行对应关系;以及
基于所述代码行对应关系、所述先前版本的多版本代码覆盖率数据和所述当前版本的代码覆盖率数据,生成所述当前版本的多版本代码覆盖率数据。
2.如权利要求1所述的方法,其中,确定所述当前版本与所述先前版本之间的所述代码行对应关系的步骤包括:
基于所述代码差异,更新所述目标项目对应的版本行号矩阵,所述版本行号矩阵可以指示所述目标项目下至少一个版本之间的代码行对应关系;
基于更新后的版本行号矩阵,确定所述当前版本与所述先前版本之间的所述代码行对应关系。
3.如权利要求2所述的方法,其中,所述行号对应矩阵的元素包括所述目标项目下各版本包括的代码行的行号,所述版本行号矩阵的各列向量对应于所述目标项目的各版本,相邻版本中具有对应关系的代码行的行号位于所述行号对应矩阵的同一行。
4.如权利要求2所述的方法,其中,更新所述目标项目对应的版本行号矩阵的步骤包括:
在所述版本行号矩阵中新增对应于所述当前版本的列向量;
对新增的列向量的元素进行逐行遍历,并对遍历到的各行,
判断该行是否对应于所述代码差异记录的所述变动代码行;
如果该行不对应于变动代码行,则令该行元素的值等于所述先前版本对应列向量中的同行元素的值。
5.如权利要求4所述的方法,其中,更新所述目标项目对应的版本行号矩阵的步骤包括:
如果该行对应于变动代码行且所述变动标记为增加标记,则在该行与该行的上一行之间新增一行;
令所述当前版本的列向量在新增行的元素的值为所述变动代码行在所述当前版本中的行号,令其他列向量在新增行的元素的值为特定标记,令该列...
【专利技术属性】
技术研发人员:王公瑾,
申请(专利权)人:北京齐尔布莱特科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。