一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码增量覆盖率统计方法、装置、计算机设备和存储介质与流程

2022-06-22 17:36:46 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别是涉及一种代码增量覆盖率统计方法、装置、计算机设备和存储介质。


背景技术:

2.随着计算机技术的发展,项目的版本迭代越来越频繁,出现了代码测试技术,代码测试技术可用于在项目版本迭代后,通过进行测试确认项目版本迭代有没有引入新的错误或导致其他代码产生错误。
3.传统技术中,为了获得较高的代码增量覆盖率,常采用的代码测试方法为全功能回归测试,即针对项目代码能实现的所有功能进行测试,在测试完成后统计代码增量覆盖率。
4.然而,全功能回归测试虽然能够获取较高的代码增量覆盖率,但是由于全功能回归测试的测试时间长且覆盖率统计繁琐,存在代码增量覆盖率统计效率低的问题。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种能够提高代码增量覆盖率统计效率的代码增量覆盖率统计方法、装置、计算机设备和存储介质。
6.一种代码增量覆盖率统计方法,所述方法包括:
7.接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
8.根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件;
9.根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数;
10.根据编译文件变更函数查询代码编译文件,确定变更函数调用信息;
11.根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
12.在一个实施例中,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件包括:
13.对项目源代码进行编译,得到代码编译文件,并获取与代码增量覆盖率统计请求对应的测试用例;
14.根据代码编译文件执行测试用例,调用代码覆盖率统计工具,得到全量代码覆盖率文件。
15.在一个实施例中,根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数包括:
16.比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数;
17.根据源代码变更函数,遍历代码编译文件,确定与项目变更信息对应的编译文件变更函数。
18.在一个实施例中,比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数包括:
19.根据项目变更信息,确定项目变更文件以及变更代码段;
20.根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函数。
21.在一个实施例中,根据编译文件变更函数查询代码编译文件,确定变更函数调用信息包括:
22.根据编译文件变更函数,查询代码编译文件,确定涉及变更函数类以及涉及变更函数接口;
23.从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息;
24.根据第一函数信息以及第二函数信息,确定调用编译文件变更函数的调用函数信息;
25.根据调用函数信息,得到变更函数调用信息。
26.在一个实施例中,根据编译文件变更函数查询代码编译文件,确定变更函数调用信息之后,还包括:
27.根据变更函数调用信息,确定对应的对外接口;
28.显示对外接口。
29.在一个实施例中,根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息包括:
30.根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,确定与调用函数信息对应的调用函数代码覆盖率文件;
31.对调用函数代码覆盖率文件进行转换,得到代码增量覆盖率信息。
32.一种代码增量覆盖率统计装置,所述装置包括:
33.接收模块,用于接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
34.获取模块,用于根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件;
35.处理模块,用于根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数;
36.查询模块,用于根据编译文件变更函数查询代码编译文件,确定变更函数调用信息;
37.筛选模块,用于根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
38.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
39.接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
40.根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件;
41.根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数;
42.根据编译文件变更函数查询代码编译文件,确定变更函数调用信息;
43.根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
44.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
45.接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
46.根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件;
47.根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数;
48.根据编译文件变更函数查询代码编译文件,确定变更函数调用信息;
49.根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
50.上述代码增量覆盖率统计方法、装置、计算机设备和存储介质,在接收到代码增量覆盖率统计请求后,能够根据其中携带的项目系统编码,实现对项目源代码以及项目变更信息的获取,从而可以根据项目源代码,得到全量代码覆盖率文件以及代码编译文件,根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数,进而可以利用编译文件变更函数查询代码编译文件,确定变更函数调用信息,利用变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息,整个过程,不需要进行全功能回归测试就可以实现对代码增量覆盖率信息的获取,能够提高代码增量覆盖率统计效率。
附图说明
51.图1为一个实施例中代码增量覆盖率统计方法的流程示意图;
52.图2为另一个实施例中代码增量覆盖率统计方法的流程示意图;
53.图3为又一个实施例中代码增量覆盖率统计方法的流程示意图;
54.图4为一个实施例中代码增量覆盖率统计装置的结构框图;
55.图5为一个实施例中计算机设备的内部结构图。
具体实施方式
56.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
57.在一个实施例中,如图1所示,提供了一种代码增量覆盖率统计方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
58.步骤102,接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码。
59.其中,代码增量覆盖率统计请求是指在项目版本迭代后,用户发起的对项目中代码增量覆盖率进行统计的请求,代码增量是指在项目版本迭代中有更新的代码段,即更新代码。项目系统编码用于唯一表示项目版本,不同项目版本的编码不相同。比如,项目系统编码具体可以是预设长度的字符串。
60.具体的,在项目版本迭代后,用户会发起代码增量覆盖率统计请求至终端,终端会接收到代码增量覆盖率统计请求,进而进行代码增量覆盖率统计。
61.步骤104,根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件。
62.其中,源代码是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令,本实施例中,项目源代码就是指未编译的项目代码文件。项目变更信息是指在进行项目版本迭代时所更新的代码信息,包括项目变更文件以及变更代码段,项目变更文件是指涉及到代码变更的文件,变更代码段用于表示有更新的代码段在项目变更文件中的位置。比如,变更代码段具体可以是指更新代码在项目变更文件中的代码行数。全量代码覆盖率文件是指项目中所有代码的覆盖率文件,这里的所有代码包括在项目版本迭代时的更新代码和未更新代码。代码编译文件是指对项目源代码进行编译后,得到的项目代码文件。
63.具体的,终端根据项目系统编码,可以从预设代码仓库中拉取项目源代码,并获取项目变更信息,在得到项目源代码后,通过在预设配置环境中对项目源代码进行编译,就可以的代码编译文件,在得到代码编译文件后,可以通过根据代码编译文件执行测试用例的方式,得到全量代码覆盖率文件。其中,预设配置环境可按照需要自行设置,其主要用于对项目源代码进行配置,进行功能引入,常引入的功能如插桩等,代码编译文件可执行的测试用例也可以按需自行设置。进一步的,在预设代码仓库中,每个项目版本都有起止时间以及版本信息,每个项目版本对应的项目变更信息也会有相应存储,终端根据项目系统编码即可从预设代码仓库中拉取项目源代码,并获取项目变更信息。
64.步骤106,根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数。
65.其中,编译文件变更函数是指在代码编译文件中有变更的函数,与项目变更信息相对应。
66.具体的,终端会比对项目变更信息和项目源代码,确定在项目源代码中存在变更的源代码变更函数,再根据源代码变更函数,遍历代码编译文件,确定在代码编译文件中有变更的编译文件变更函数。这里需要说明的是,因为代码编译文件是由项目源代码编译得到的,因此代码编译文件中的文件名和函数名是与项目源代码的文件名和函数名一一对应的,因此在确定源代码变更函数后,直接根据源代码变更函数去遍历代码编译文件,就可以得到编译文件变更函数。
67.步骤108,根据编译文件变更函数查询代码编译文件,确定变更函数调用信息。
68.其中,变更函数调用信息是指编译文件变更函数在代码编译文件中的被调用信息,包括所有调用编译文件变更函数的调用函数信息。
69.具体的,终端根据编译文件变更函数查询代码编译文件,可以确定涉及变更函数的类和接口,进而可以从代码编译文件中获取到涉及变更函数的类和接口所包括的函数信
息,根据该函数信息实现对变更函数调用信息的确定。
70.步骤110,根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
71.其中,代码增量覆盖率信息是指与在项目版本迭代中与更新代码所对应的覆盖率统计结果。
72.具体的,由于变更函数调用信息包括所有调用编译文件变更函数的调用函数信息,且所有涉及到编译文件变更函数的代码覆盖率信息即为代码增量覆盖率信息,终端通过根据调用函数信息,遍历全量代码覆盖率文件,就可以得到与调用函数信息对应的调用函数代码覆盖率文件,进而根据该调用函数代码覆盖率文件,得到代码增量覆盖率信息。
73.上述代码增量覆盖率统计方法,在接收到代码增量覆盖率统计请求后,能够根据其中携带的项目系统编码,实现对项目源代码以及项目变更信息的获取,从而可以根据项目源代码,得到全量代码覆盖率文件以及代码编译文件,根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数,进而可以利用编译文件变更函数查询代码编译文件,确定变更函数调用信息,利用变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息,整个过程,不需要进行全功能回归测试就可以实现对代码增量覆盖率信息的获取,能够提高代码增量覆盖率统计效率。
74.在一个实施例中,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件包括:
75.对项目源代码进行编译,得到代码编译文件,并获取与代码增量覆盖率统计请求对应的测试用例;
76.根据代码编译文件执行测试用例,调用代码覆盖率统计工具,得到全量代码覆盖率文件。
77.其中,测试用例是指对项目所能实现功能进行测试的用例,这里的测试用例包括与更新代码对应的测试用例以及与未更新代码对应的测试用例。
78.具体的,终端会预先设置配置环境,引入文件插桩功能,在预设配置环境中对项目源代码进行编译,以使插桩功能自动进行探测指针插入,得到代码编译文件,并从预设数据库中获取与代码增量覆盖率统计请求对应的测试用例,运行代码编译文件,执行测试用例,调用代码覆盖率统计工具根据所插入探测指针对代码覆盖率进行统计,得到全量代码覆盖率文件。
79.这里需要说明的是,在本实施例中,每个探测指针都是一个布尔型变量(true表示执行、false表示没有执行),代码编译文件运行时会改变探测指针的结果,当代码段执行时,与代码段对应位置的探测指针为ture,当代码段没有执行时,与代码段对应位置的探测指针为false,因此,可以通过探测指针的结果来检测代码的执行情况,且这种方式不会改变原代码的行为,通过探测指针会记录各测试用例的执行覆盖情况,通过对探测指针的访问记录进行不同维度统计,就可以得到全量代码覆盖率文件。
80.举例说明,在本实施例中,探测指针可以为java探针,代码覆盖率统计工具具体可以是javaagent,终端预先设置配置环境,引入javaagent以及文件插桩功能,在预设配置环境中对项目源代码进行编译,以使插桩功能自动进行java探针插入,得到代码编译文件,并从预设数据库中获取与代码增量覆盖率统计请求对应的测试用例,运行代码编译文件,执
行测试用例,调用javaagent根据所插入java探针对代码覆盖率进行统计,得到全量代码覆盖率文件。进一步的,在得到全量代码覆盖率文件后,终端还会利用预设开源工具对全量代码覆盖率文件进行转换,转换后再与项目源代码进行解析匹配,统计出全量代码覆盖率信息。其中,全量代码覆盖率信息包括包覆盖情况、包内函数覆盖情况以及函数覆盖代码行等。其中,预设开源工具可按照需要自行设置。举例说明,预设开源工具具体可以是jacoco。
81.本实施例中,通过对项目源代码进行编译,得到代码编译文件,并获取与代码增量覆盖率统计请求对应的测试用例,根据代码编译文件执行测试用例,调用代码覆盖率统计工具,得到全量代码覆盖率文件,能够实现对全量代码覆盖率文件的获取。
82.在一个实施例中,根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数包括:
83.比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数;
84.根据源代码变更函数,遍历代码编译文件,确定与项目变更信息对应的编译文件变更函数。
85.其中,源代码变更函数是指与项目变更信息对应的、在项目源代码中有更新的函数。
86.具体的,终端会根据项目源代码,生成与项目源代码对应的抽象语法树,再根据项目变更信息中的项目变更文件以及变更代码段,去查询抽象语法树,确定与项目变更信息对应的源代码变更函数。在得到源代码变更函数后,由于代码编译文件中的文件名和函数名是与项目源代码的文件名和函数名一一对应的,终端直接根据源代码变更函数去遍历代码编译文件,就可以得到与项目变更信息对应的编译文件变更函数。这里的编译文件变更函数的文件名以及函数名与源代码变更函数的文件名以及函数名相同。举例说明,当项目源代码为java源码时,终端可以使用javaparser对java源码生成抽象语法树。
87.本实施例中,通过比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数,根据源代码变更函数,遍历代码编译文件,确定与项目变更信息对应的编译文件变更函数,能够实现对编译文件变更函数的确定。
88.在一个实施例中,比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数包括:
89.根据项目变更信息,确定项目变更文件以及变更代码段;
90.根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函数。
91.具体的,在根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函数时,终端会先根据项目源代码生成抽象语法树,再根据项目变更文件以及变更代码段,比对抽象语法树,确定所有涉及修改的函数信息,得到与项目变更信息对应的源代码变更函数。需要说明的是,当项目变更文件为xml(extensible markup language,可扩展标记语言)文件,即涉及到xml文件修改时,终端需要使用预设xml读取器对xml文件进行读取,确定xml文件中变更代码段,并获取与xml文件对应映射的项目源代码中源文件,根据xml文件中变更代码段确定源文件中的源代码变更函数。
92.本实施例中,通过根据项目变更信息,确定项目变更文件以及变更代码段,根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函
数,能够实现对于项目变更信息对应的源代码变更函数的确定。
93.在一个实施例中,根据编译文件变更函数查询代码编译文件,确定变更函数调用信息包括:
94.根据编译文件变更函数,查询代码编译文件,确定涉及变更函数类以及涉及变更函数接口;
95.从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息;
96.根据第一函数信息以及第二函数信息,确定调用编译文件变更函数的调用函数信息;
97.根据调用函数信息,得到变更函数调用信息。
98.其中,涉及变更函数类是指编译文件变更函数所在类的父类,涉及变更函数接口是指与编译文件变更函数所在类对应的对外接口。第一函数信息是指涉及变更函数类下所有函数的信息,第二函数信息是指涉及变更函数接口所涉及的函数信息。调用函数信息是指涉及到对编译文件变更函数进行调用的函数的信息,这里的调用包括直接调用、注解调用以及反射调用等。
99.具体的,在得到编译文件变更函数后,终端会根据编译文件变更函数,比对代码编译文件,确定编译文件变更函数所在类,并进一步根据编译文件变更函数所在类,确定与其对应的父类以及抽象接口,得到涉及变更函数类以及涉及变更函数接口。在得到涉及变更函数类以及涉及变更函数接口后,终端会从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息,根据第一函数信息以及第二函数信息,确定调用函数信息,根据调用函数信息,得到变更函数调用信息。
100.进一步的,由于调用方式包括直接调用、注解调用以及反射调用等,在根据第一函数信息以及第二函数信息,确定调用函数信息时,针对不同调用方式需要采用不同方式确定对应的调用函数,再归集与每种调用方式对应的调用函数,得到调用函数信息。对于直接调用以及反射调用的情况,直接比对第一函数信息以及第二函数信息中函数名与编译文件变更函数的函数名是否相同即可。对于注解调用的情况,需要先遍历涉及变更函数类,查找其类属性,确定在类属性中引用编译文件变更函数的目标类,在目标类中利用编译文件变更函数的函数名进行查找,以确定调用函数。
101.本实施例中,通过根据编译文件变更函数,确定涉及变更函数类以及涉及变更函数接口,从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息,根据第一函数信息以及第二函数信息,确定调用编译文件变更函数的调用函数信息,根据调用函数信息,得到变更函数调用信息,能够实现对变更函数调用信息的获取。
102.在一个实施例中,根据编译文件变更函数查询代码编译文件,确定变更函数调用信息之后,还包括:
103.根据变更函数调用信息,确定对应的对外接口;
104.显示对外接口。
105.其中,对外接口是指项目对外开放,可与外部实现链接的接口。比如,对外接口具体可以是指对外url(uniform resource locator,统一资源定位器)接口。
106.具体的,终端会根据变更函数调用信息,去根据项目源代码生成的抽象语法树中查找出对应的对外接口,这里的对外接口是指涉及到变更函数调用信息中调用函数信息的接口。在得到对外接口后,终端会显示对外接口,以方便测试人员可以根据与编译文件变更函数对应的对外接口添加所需测试用例,着重进行测试。
107.本实施例中,通过根据变更函数调用信息,确定对应的对外接口,显示对外接口,能够提示测试人员对对外接口着重进行测试,实现准确测试。
108.在一个实施例中,根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息包括:
109.根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,确定与调用函数信息对应的调用函数代码覆盖率文件;
110.对调用函数代码覆盖率文件进行转换,得到代码增量覆盖率信息。
111.其中,调用函数代码覆盖率文件是指涉及调用函数信息的代码覆盖率文件。
112.具体的,终端会根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,从全量代码覆盖率文件中,筛选出与调用函数信息对应的调用函数代码覆盖率文件,再利用预设开源工具对调用函数代码覆盖率文件进行转换,转换后再与项目源代码进行解析匹配,统计出代码增量覆盖率信息。
113.本实施例中,通过根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,确定与调用函数信息对应的调用函数代码覆盖率文件,对调用函数代码覆盖率文件进行转换,得到代码增量覆盖率信息,能够实现对代码增量覆盖率信息的获取。
114.在一个实施例中,如图2所示,通过一个流程示意图来说明本技术的代码增量覆盖率统计方法,具体包括以下步骤:
115.s1、终端接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码,根据项目系统编码,获取源码(即项目源代码),对源码进行编译插桩,得到class文件(即代码编译文件),执行class文件,得到目标文件(即全量代码覆盖率文件);
116.s2、根据项目系统编码获取git变更信息(即项目变更信息),根据git变更信息、源码以及class文件,得到变更函数信息(即编译文件变更函数);
117.s3、根据变更函数信息以及class文件,确定变更信息调用链以及对外接口url(即变更函数调用信息);
118.s4、根据目标文件(即全量代码覆盖率文件)、class文件以及变更信息调用链过滤出代码增量覆盖率文件,根据代码增量覆盖率文件,得到增量覆盖率报告(即代码增量覆盖率信息)。
119.在一个实施例中,如图3所示,通过一个流程示意图来说明本技术的代码增量覆盖率统计方法,具体包括以下步骤:
120.步骤302,接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
121.步骤304,根据项目系统编码,获取项目源代码以及项目变更信息;
122.步骤306,对项目源代码进行编译,得到代码编译文件,并获取与代码增量覆盖率统计请求对应的测试用例;
123.步骤308,根据代码编译文件执行测试用例,调用代码覆盖率统计工具,得到全量
代码覆盖率文件;
124.步骤310,根据项目变更信息,确定项目变更文件以及变更代码段;
125.步骤312,根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函数;
126.步骤314,根据源代码变更函数,遍历代码编译文件,确定与项目变更信息对应的编译文件变更函数;
127.步骤316,根据编译文件变更函数,查询代码编译文件,确定涉及变更函数类以及涉及变更函数接口;
128.步骤318,从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息;
129.步骤320,根据第一函数信息以及第二函数信息,确定调用编译文件变更函数的调用函数信息;
130.步骤322,根据调用函数信息,得到变更函数调用信息;
131.步骤324,根据变更函数调用信息,确定对应的对外接口;
132.步骤326,显示对外接口;
133.步骤328,根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,确定与调用函数信息对应的调用函数代码覆盖率文件;
134.步骤330,对调用函数代码覆盖率文件进行转换,得到代码增量覆盖率信息。
135.应该理解的是,虽然上述实施例涉及的各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述实施例涉及的各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
136.在一个实施例中,如图4所示,提供了一种代码增量覆盖率统计装置,包括:接收模块402、获取模块404、处理模块406、查询模块408和筛选模块410,其中:
137.接收模块402,用于接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
138.获取模块404,用于根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件;
139.处理模块406,用于根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数;
140.查询模块408,用于根据编译文件变更函数查询代码编译文件,确定变更函数调用信息;
141.筛选模块410,用于根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
142.上述代码增量覆盖率统计装置,在接收到代码增量覆盖率统计请求后,能够根据其中携带的项目系统编码,实现对项目源代码以及项目变更信息的获取,从而可以根据项
目源代码,得到全量代码覆盖率文件以及代码编译文件,根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数,进而可以利用编译文件变更函数查询代码编译文件,确定变更函数调用信息,利用变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息,整个过程,不需要进行全功能回归测试就可以实现对代码增量覆盖率信息的获取,能够提高代码增量覆盖率统计效率。
143.在一个实施例中,获取模块还用于对项目源代码进行编译,得到代码编译文件,并获取与代码增量覆盖率统计请求对应的测试用例,根据代码编译文件执行测试用例,调用代码覆盖率统计工具,得到全量代码覆盖率文件。
144.在一个实施例中,处理模块还用于比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数,根据源代码变更函数,遍历代码编译文件,确定与项目变更信息对应的编译文件变更函数。
145.在一个实施例中,处理模块还用于根据项目变更信息,确定项目变更文件以及变更代码段,根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函数。
146.在一个实施例中,查询模块还用于根据编译文件变更函数,查询代码编译文件,确定涉及变更函数类以及涉及变更函数接口,从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息,根据第一函数信息以及第二函数信息,确定调用编译文件变更函数的调用函数信息,根据调用函数信息,得到变更函数调用信息。
147.在一个实施例中,代码增量覆盖率统计装置还包括显示模块,显示模块用于根据变更函数调用信息,确定对应的对外接口,显示对外接口。
148.在一个实施例中,筛选模块还用于根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,确定与调用函数信息对应的调用函数代码覆盖率文件,对调用函数代码覆盖率文件进行转换,得到代码增量覆盖率信息。
149.关于代码增量覆盖率统计装置的具体限定可以参见上文中对于代码增量覆盖率统计方法的限定,在此不再赘述。上述代码增量覆盖率统计装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
150.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种代码增量覆盖率统计方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
151.本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
152.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
153.接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
154.根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件;
155.根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数;
156.根据编译文件变更函数查询代码编译文件,确定变更函数调用信息;
157.根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
158.在一个实施例中,处理器执行计算机程序时还实现以下步骤:对项目源代码进行编译,得到代码编译文件,并获取与代码增量覆盖率统计请求对应的测试用例,根据代码编译文件执行测试用例,调用代码覆盖率统计工具,得到全量代码覆盖率文件。
159.在一个实施例中,处理器执行计算机程序时还实现以下步骤:比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数,根据源代码变更函数,遍历代码编译文件,确定与项目变更信息对应的编译文件变更函数。
160.在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据项目变更信息,确定项目变更文件以及变更代码段,根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函数。
161.在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据编译文件变更函数,查询代码编译文件,确定涉及变更函数类以及涉及变更函数接口,从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息,根据第一函数信息以及第二函数信息,确定调用编译文件变更函数的调用函数信息,根据调用函数信息,得到变更函数调用信息。
162.在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据变更函数调用信息,确定对应的对外接口,显示对外接口。
163.在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,确定与调用函数信息对应的调用函数代码覆盖率文件,对调用函数代码覆盖率文件进行转换,得到代码增量覆盖率信息。
164.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
165.接收代码增量覆盖率统计请求,代码增量覆盖率统计请求携带项目系统编码;
166.根据项目系统编码,获取项目源代码以及项目变更信息,根据项目源代码,得到全量代码覆盖率文件以及代码编译文件;
167.根据项目变更信息、项目源代码以及代码编译文件,确定与项目变更信息对应的编译文件变更函数;
168.根据编译文件变更函数查询代码编译文件,确定变更函数调用信息;
169.根据变更函数调用信息筛选全量代码覆盖率文件,得到代码增量覆盖率信息。
170.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对项目源代码进行编译,得到代码编译文件,并获取与代码增量覆盖率统计请求对应的测试用例,根据代码编译文件执行测试用例,调用代码覆盖率统计工具,得到全量代码覆盖率文件。
171.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:比对项目变更信息和项目源代码,确定与项目变更信息对应的源代码变更函数,根据源代码变更函数,遍历代码编译文件,确定与项目变更信息对应的编译文件变更函数。
172.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据项目变更信息,确定项目变更文件以及变更代码段,根据项目变更文件以及变更代码段,比对项目源代码,确定与项目变更信息对应的源代码变更函数。
173.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据编译文件变更函数,查询代码编译文件,确定涉及变更函数类以及涉及变更函数接口,从代码编译文件中获取与涉及变更函数类对应的第一函数信息,以及与涉及变更函数接口对应的第二函数信息,根据第一函数信息以及第二函数信息,确定调用编译文件变更函数的调用函数信息,根据调用函数信息,得到变更函数调用信息。
174.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据变更函数调用信息,确定对应的对外接口,显示对外接口。
175.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据变更函数调用信息中调用函数信息,遍历全量代码覆盖率文件,确定与调用函数信息对应的调用函数代码覆盖率文件,对调用函数代码覆盖率文件进行转换,得到代码增量覆盖率信息。
176.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
177.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
178.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献