代码覆盖率处理方法技术

技术编号:18302039 阅读:24 留言:0更新日期:2018-06-28 11:58
本发明专利技术提供一种代码覆盖率处理方法。代码覆盖率处理方法包括:接收以预定编程语言编写的源代码;根据源代码执行程序,其中源代码被分类为多个基本块,并且包括在相同基本块中的每行被执行相同次数;创建行跟踪文件,包括分别对于源代码的多个行的多个行跟踪记录,其中行跟踪记录中的每一个指示源代码中的相应行已被执行了多少次;接收指示源代码中的至少一个基本块被选择为非关注区域的一部分的非关注区域设置;根据行跟踪文件和非关注区域设置计算源代码的代码覆盖率结果;以及提供代码覆盖率结果。本发明专利技术的代码覆盖率处理方法可以仅计算感兴趣的代码段的代码覆盖率。

Code coverage processing method

The invention provides a code coverage processing method. Code coverage processing methods include receiving the source code written in a predetermined programming language; executing programs based on source code, where the source code is classified as multiple basic blocks, and includes the same number of times in each line in the same basic block; the creation of a row tracking file, including multiple rows for the source code, respectively Line tracking records, in which the corresponding rows in each of the indicated source code in the row tracking record have been executed; at least one of the basic blocks in the source code is selected as a non concerned region setting for a part of the non concerned region; the code coverage of the source code is set according to the line tracking file and the unclosed area. Coverage rate results and code coverage results are provided. The code coverage processing method of the invention can only calculate the code coverage of the code segments of interest.

【技术实现步骤摘要】
代码覆盖率处理方法
本专利技术有关于代码覆盖率(codecoverage),更具体地,有关于一种用于执行没有源代码修改的关注区域(cared-zone)代码覆盖率评估的代码覆盖率处理方法。
技术介绍
在计算机科学中,代码覆盖率是用于描述当使用特定测试模式(testpattern)来测试程序的执行时程序的源代码被执行的程度的度量。具有高代码覆盖率(以百分比测量)的程序在测试期间执行更多的源代码,这表明与具有低代码覆盖率的程序相比,其包含未检测到的错误的机会较低。一个程序的源代码可以包括由不同软件工程师(或不同的软件开发团队)开发的不同代码段。当测试程序时,一个软件工程师(或一个软件开发团队)可能对源代码的仅一个代码段的代码覆盖率感兴趣。因此,需要仅计算感兴趣的代码段的代码覆盖率。
技术实现思路
依据本专利技术的示范性实施例,提出一种代码覆盖率处理方法以解决上述问题。依据本专利技术的一个实施例,提出一种代码覆盖率处理方法,包括:接收以预定编程语言编写的源代码;根据源代码执行程序,其中源代码被分类为多个基本块,并且包括在相同基本块中的每行被执行相同次数;创建行跟踪文件,包括分别对于源代码的多个行的多个行跟踪记录,其中行跟踪记录中的每一个指示源代码中的相应行已被执行了多少次;接收指示源代码中的至少一个基本块被选择为非关注区域的一部分的非关注区域设置;根据行跟踪文件和非关注区域设置计算源代码的代码覆盖率结果;以及提供代码覆盖率结果。依据本专利技术的另一实施例,提出一种代码覆盖率处理方法,包括:接收以预定编程语言编写的源代码;根据源代码执行程序,其中源代码被分类为多个基本块,包括在相同基本块中的每行被执行相同次数,通过根据源代码执行程序来创建至少一个基本块跟踪文件,并且基本块跟踪文件记录指示源代码中的每个基本块已经执行了多少次的信息;接收指示源代码中的多个基本块中的至少一个被选择为非关注区域的一部分的非关注区域设置;基于基本块跟踪文件通过修改与属于非关注区域的至少一个基本块相关联的记录信息来生成修改的基本块跟踪文件;至少根据修改的基本块跟踪文件计算源代码的代码覆盖率结果;以及提供代码覆盖率结果。依据本专利技术的另一实施例,提出一种代码覆盖率处理方法,包括:接收以预定编程语言编写的源代码;根据源代码执行程序,其中源代码被分类为多个基本块,包括在相同基本块中的每行被执行相同次数,通过根据源代码执行程序来创建基本块跟踪文件,并且基本块跟踪文件记录指示源代码中的每个基本块已被执行了多少次的基本块跟踪信息;接收指示源代码中的多个基本块中的至少一个被选择为非关注区域的一部分的非关注区域设置;不考虑与属于由非关注区域设置指示的非关注区域的至少一个基本块相关联的基本块跟踪信息,而是根据基本块跟踪文件来计算代码覆盖率结果,其中,根据非关注区域设置不对基本块跟踪文件进行修改;以及提供代码覆盖率结果。依据本专利技术的另一实施例,提出一种代码覆盖率处理方法,包括:接收以预定编程语言编写的源代码;根据源代码执行程序,其中源代码被分类为多个基本块,并且包括在相同基本块中的每行被执行相同次数;接收指示源代码中的多个基本块中的至少一个被选择为非关注区域的一部分的非关注区域设置,其中非关注区域设置包括:在显示屏上提供源代码的至少一部分;当源代码的至少一部分被提供在显示屏上时,接收选择源代码的至少一部分的至少一行的至少一个用户输入;以及将包含由至少一个用户输入选择的至少一个行的源代码的至少一个基本块作为非关注区域的一部分;计算源代码的代码覆盖率结果,排除属于非关注区域的多行;以及提供代码覆盖率结果。本专利技术的代码覆盖率处理方法可以仅计算感兴趣的代码段的代码覆盖率。【附图说明】图1是根据本专利技术的实施例的计算机系统的示意图。图2是根据本专利技术的实施例的代码覆盖率评估的第一阶段的示意图。图3是根据本专利技术实施例的被分类为基本块的源代码的示意图。图4是根据本专利技术的实施例的表示基本块文件的文本文件的示意图。图5是根据本专利技术的实施例的表示基本块跟踪文件的文本文件的示意图。图6是根据本专利技术实施例的代码覆盖率评估的第二阶段的示意图。图7是根据本专利技术实施例的行跟踪文件的示意图。图8是根据本专利技术的实施例的代码覆盖率评估的第三阶段的示意图。图9是根据本专利技术的实施例的非关注区域选择的示意图。图10是根据本专利技术的实施例的代码覆盖率评估的修改的第一阶段的示意图。图11是根据本专利技术实施例的表示修改的基本块文件的文本文件的示意图。图12是根据本专利技术实施例的表示修改的基本块跟踪文件的文本文件的示意图。图13是根据本专利技术的实施例的代码覆盖率评估的修改的第二阶段的示意图。图14是根据本专利技术的实施例的修改的行跟踪文件的示意图。图15是根据本专利技术的实施例的代码覆盖率评估的修改的第三阶段的示意图。图16是根据本专利技术实施例的Java源代码的第一修改的代码覆盖率评估设计的示意图。图17是根据本专利技术实施例的Java源代码的第二修改代码覆盖率评估设计的示意图。【具体实施方式】在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异异来作为区分组件的方式,而是以组件在功能上的差异异来作为区分的基准。在通篇说明书及权利要求书当中所提及的「包含」是开放式的用语,故应解释成「包含但不限定于」。另外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其它装置或连接手段间接地电气连接至第二装置。图1是根据本专利技术的实施例的计算机系统的示意图。计算机系统100能够提供软件开发环境,并且包括处理器102、存储设备104和显示屏106。应当注意,在图1中仅示出了与本专利技术相关的组件。在实践中,计算机系统100可以包括用于实现其他功能的附加电路。存储设备104用于存储包括一个或多个代码覆盖率工具105的软件模块。例如,代码覆盖率工具105可以包括编译器、代码覆盖率分析工具和/或代码覆盖率报告工具;并且存储设备104可以是硬盘驱动器、非易失性存储器或任何数据存储装置。当代码覆盖率工具105被处理器102加载和执行时,指示处理器102执行代码覆盖率评估并生成代码覆盖率结果至显示屏106。可以提供(例如,显示)用户界面(userinterface,简写为UI)107在显示屏106上,使得用户可以与UI107交互以控制代码覆盖率评估,并且可以通过UI107查看代码覆盖率结果。例如,用户输入USER_IN包括指示源代码中的非关注区域(non-caredregion)(即,源代码的不感兴趣的行)的非关注区域设置SNCZ,并且建议的关注区域代码覆盖率处理方法可以参考非关注区域设置SNCZ来生成并显示源代码中的关注区域(即源代码的感兴趣行)的代码覆盖率结果,其中源代码由关注区域和非关注区域组成。稍后描述所提出的关注区域代码覆盖率处理方法的进一步细节。源代码以预定的编程语言编写。为了更好地理解本专利技术的技术特征,给出了范例性源代码foo.c(以C编程语言编写并且将被测试用于代码覆盖率评估)。应当注意,这仅是为了说明的目的,并不意味着是对本专利技术的限制。C源代码的本文档来自技高网...
代码覆盖率处理方法

【技术保护点】
1.一种代码覆盖率处理方法,其特征在于,包括:接收以预定编程语言编写的源代码;根据所述源代码执行程序,其中所述源代码被分类为多个基本块,并且包括在相同基本块中的每行被执行相同次数;创建行跟踪文件,包括分别对于所述源代码的多个行的多个行跟踪记录,其中所述行跟踪记录中的每一个指示所述源代码中的相应行已被执行了多少次;接收指示所述源代码中的至少一个基本块被选择为非关注区域的一部分的非关注区域设置;根据所述行跟踪文件和所述非关注区域设置计算所述源代码的代码覆盖率结果;以及提供所述代码覆盖率结果。

【技术特征摘要】
2016.12.19 US 15/382,7611.一种代码覆盖率处理方法,其特征在于,包括:接收以预定编程语言编写的源代码;根据所述源代码执行程序,其中所述源代码被分类为多个基本块,并且包括在相同基本块中的每行被执行相同次数;创建行跟踪文件,包括分别对于所述源代码的多个行的多个行跟踪记录,其中所述行跟踪记录中的每一个指示所述源代码中的相应行已被执行了多少次;接收指示所述源代码中的至少一个基本块被选择为非关注区域的一部分的非关注区域设置;根据所述行跟踪文件和所述非关注区域设置计算所述源代码的代码覆盖率结果;以及提供所述代码覆盖率结果。2.根据权利要求1所述的代码覆盖率处理方法,其特征在于,根据所述行跟踪文件和所述非关注区域设置计算所述代码覆盖率结果包括:通过修改属于所述非关注区域的多个行的多个行跟踪记录来生成修改的行跟踪文件;以及根据修改的行跟踪文件计算所述代码覆盖率结果。3.根据权利要求1所述的代码覆盖率处理方法,其特征在于,根据所述行跟踪文件和所述非关注区域设置来计算所述代码覆盖率结果包括:计算所述代码覆盖率结果,而不考虑属于所述非关注区域的多个行的多个行跟踪记录,其中根据所述非关注区域设置不对所述行跟踪文件进行修改。4.根据权利要求1所述的代码覆盖率处理方法,其特征在于,接收所述非关注区域设置包括:在显示屏上提供所述源代码的至少一部分;当所述源代码的所述至少一部分被提供在所述显示屏上时,接收选择所述源代码的所述至少一部分的至少一行的至少一个用户输入;以及将所述源代码的至少一个基本块作为所述非关注区域的一部分,其中所述至少一个基本块包含由所述至少一个用户输入选择的所述至少一行。5.根据权利要求1所述的代码覆盖率处理方法,其特征在于,根据所述源代码执行所述程序包括:编译所述源代码以生成可执行二进制文件,其中在所述源代码的编译期间添加用于代码覆盖率的代码探测,通过编译所述源代码创建基本块文件,并且所述基本块文件记录所述源代码中的所述多个基本块的信息;以及通过运行所述可执行二进制文件来执行所述程序,其中,还通过运行所述可执行二进制文件来创建基本块跟踪文件,并且所述基本块跟踪文件记录指示所述源代码中的每个基本块已被执行了多少次的信息;以及创建所述行跟踪文件包括:根据所述基本块文件和所述基本块跟踪文件生成所述行跟踪文件。6.一种代码覆盖率处理方法,其特征在于,包括:接收以预定编程语言编写的源代码;根据所述源代码执行程序,其中所述源代码被分类为多个基本块,包括在相同基本块中的每行被执行相同次数,通过根据所述源代码执行所述程序来创建至少一个基本块跟踪文件,并且所述基本块跟踪文件记录指示所述源代码中的每个基本块已经执行了多少次的信息;接收指示所述源代码中的所述多个基本块中的至少一个被选择为非关注区域的一部分的非关注区域设置;基于所述基本块跟...

【专利技术属性】
技术研发人员:李国丞谢彦辉
申请(专利权)人:联发科技股份有限公司
类型:发明
国别省市:中国台湾,71

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

1