首页> 中国专利> 一种项目的增量代码覆盖率降低来源的定位方法和装置

一种项目的增量代码覆盖率降低来源的定位方法和装置

摘要

本发明涉及分布式技术领域,本发明公开了一种项目的增量代码覆盖率降低来源的定位方法和装置,其中方法包括:判断项目对应的增量代码覆盖率是否小于项目基线值;当项目对应的增量代码覆盖率小于项目基线值时,判断项目中每个模块对应的增量代码覆盖率是否小于该模块对应的模块基线值;当项目中任意模块对应的增量代码覆盖率小于该模块对应的模块基线值时,判断该模块中每个文件的增量代码覆盖率是否小于该文件对应的文件基线值;当该模块中该文件的增量代码覆盖率小于该文件对应的文件基线值时,标记该文件,并标记该模块,进而定位该模块中的该文件为项目增量代码覆盖率降低的来源。本发明能够高效准确的定位项目的增量代码覆盖率的降低来源。

著录项

  • 公开/公告号CN114817023A

    专利类型发明专利

  • 公开/公告日2022-07-29

    原文格式PDF

  • 申请/专利权人 中国银行股份有限公司;

    申请/专利号CN202210415838.1

  • 发明设计人 农倩倩;

    申请日2022-04-20

  • 分类号G06F11/36;

  • 代理机构北京三友知识产权代理有限公司;

  • 代理人薛平;周晓飞

  • 地址 100818 北京市西城区复兴门内大街1号

  • 入库时间 2023-06-19 16:08:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-29

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及分布式技术领域,尤其涉及一种项目的增量代码覆盖率降低来源的定位方法和装置。

背景技术

在现有技术中,项目中包括多个模块,而模块中又包括多个文件,现在大多通过单元测试覆盖率的方式来查看项目的代码覆盖情况,在产生增量代码后,如果单元测试覆盖率降低,则表明增量代码的单元测试覆盖率不全面。但是现有的单元测试覆盖率的只能聚焦于整个项目上,确定整个项目的代码覆盖率,以及整个项目增量代码的覆盖率,无法做到对项目的增量代码覆盖率的降低来源进行准确定位,当整个项目增量代码覆盖率降低时,无法高效准确的确定导致覆盖率降低的来源具体是项目中的哪一文件,哪一模块。

因此现在亟需一种项目的增量代码覆盖率降低来源的定位方法,能够高效准确的定位项目的增量代码覆盖率的降低来源。

发明内容

本发明实施例提供一种项目的增量代码覆盖率降低来源的定位方法和装置,用以高效准确的定位项目的增量代码覆盖率的降低来源,其中方法包括:

判断所述项目对应的增量代码覆盖率是否小于项目基线值,其中所述项目基线值根据所述项目对应的全量代码覆盖率确定;

当所述项目对应的增量代码覆盖率小于所述项目基线值时,判断所述项目中每个模块对应的增量代码覆盖率是否小于该模块对应的模块基线值,其中所述模块基线值根据该模块对应的全量代码覆盖率确定;

当所述项目中任意模块对应的增量代码覆盖率小于该模块对应的模块基线值时,判断该模块中每个文件的增量代码覆盖率是否小于该文件对应的文件基线值,其中所述文件基线值根据该文件对应的全量代码覆盖率确定;

当该模块中该文件的增量代码覆盖率小于该文件对应的文件基线值时,标记该文件,并标记该模块,进而定位该模块中的该文件为项目增量代码覆盖率降低的来源。

优选的,还包括:

根据每个文件中增量代码的覆盖行数和未覆盖行数,计算得到每个文件对应的增量代码覆盖率;

根据所有文件分别对应的增量代码覆盖率,生成每个模块对应的增量代码覆盖率,其中每个模块中包括多个不同的文件;

根据所有模块对应的增量代码覆盖率,生成项目对应的增量代码覆盖率,其中所述项目中包括所有模块。

优选的,所述项目基线值根据所述项目对应的全量代码覆盖率确定的方法进一步包括:

判断所述项目对应的全量代码覆盖率是否小于或等于项目历史基线值;

若是,则将所述项目历史基线值确定为所述项目基线值;

若否,则将所述项目对应的全量代码覆盖率确定为所述项目基线值;

相应的,所述模块基线值根据该模块对应的全量代码覆盖率确定的方法进一步包括:

判断该模块对应的全量代码覆盖率是否小于或等于该模块对应的模块历史基线值;

若是,则将该模块对应的模块历史基线值确定为该模块对应的模块基线值;

若否,则将该模块对应的全量代码覆盖率确定为该模块对应的模块基线值;

相应的,所述文件基线值根据该文件对应的全量代码覆盖率确定的方法进一步包括:

判断该文件对应的全量代码覆盖率是否小于或等于该文件对应的文件历史基线值;

若是,则将该文件对应的文件历史基线值确定为该文件对应的文件基线值;

若否,则将该文件对应的全量代码覆盖率确定为该文件对应的文件基线值。

优选的,还包括:

根据每个文件中全量代码的覆盖行数和未覆盖行数,计算得到每个文件对应的全量代码覆盖率;

根据所有文件分别对应的全量代码覆盖率,生成每个模块对应的全量代码覆盖率,其中每个模块中包括多个不同的文件;

根据所有模块对应的全量代码覆盖率,生成项目对应的全量代码覆盖率,其中所述项目中包括所有模块。

优选的,还包括:

判断每个开发人员在项目中所编写的增量代码覆盖率是否小于项目基线值;

当任意开发人员在项目中所编写的增量代码覆盖率小于项目基线值时,判断该开发人员在项目的每个模块中所编写的增量代码覆盖率是否小于该模块对应的模块基线值;

当该开发人员在项目的任意模块中所编写的增量代码覆盖率小于该模块对应的模块基线值时,则判断该开发人员在该模块的每个文件中所编写的增量代码覆盖率是否小于该文件对应的文件基线值;

当该开发人员在该模块的该文件中所编写的增量代码覆盖率小于该文件对应的文件基线值时,标记该开发人员在该文件中所编写的增量代码行,进而定位该开发人员在该文件中所编写的增量代码行为增量代码覆盖率降低的来源。

优选的,所述判断该开发人员在该模块的每个文件中所编写的增量代码覆盖率是否小于该文件对应的文件基线值之前还包括:

判断该开发人员在该模块的每个文件中所编写的增量代码行数占该文件的总计增量代码行数的比重是否大于设定比重;

当该开发人员在该模块的任意文件中所编写的增量代码行数占该文件的总计增量代码行数的比重大于设定比重时,判断该开发人员在该模块的该文件中所编写的增量代码覆盖率是否小于该文件对应的文件基线值。

优选的,所述判断该开发人员在该模块的每个文件中所编写的增量代码行数占该文件的总计增量代码行数的比重是否大于设定比重之后还包括:

当该开发人员在该模块的任意文件中所编写的增量代码行数占该文件的总计增量代码行数的比重不大于设定比重时,判断该开发人员在该模块的该文件中所编写的增量代码覆盖率是否小于预设基线值,其中所述预设基线值为该文件对应的文件基线值与预设百分比的乘积;

当该开发人员在该模块的该文件中所编写的增量代码覆盖率小于预设基线值时,标记该开发人员在该文件中所编写的增量代码行,进而定位该开发人员在该文件中所编写的增量代码行为增量代码覆盖率降低的来源。

优选的,所述设定比重与所述预设百分比正相关。

本发明实施例还提供一种项目的增量代码覆盖率降低来源的定位装置,包括:

第一判断模块,用于判断所述项目对应的增量代码覆盖率是否小于项目基线值,其中所述项目基线值根据所述项目对应的全量代码覆盖率确定;

第二判断模块,用于当所述项目对应的增量代码覆盖率小于所述项目基线值时,判断所述项目中每个模块对应的增量代码覆盖率是否小于该模块对应的模块基线值,其中所述模块基线值根据该模块对应的全量代码覆盖率确定;

第三判断模块,用于当所述项目中任意模块对应的增量代码覆盖率小于该模块对应的模块基线值时,判断该模块中每个文件的增量代码覆盖率是否小于该文件对应的文件基线值,其中所述文件基线值根据该文件对应的全量代码覆盖率确定;

定位模块,用于当该模块中该文件的增量代码覆盖率小于该文件对应的文件基线值时,标记该文件,并标记该模块,进而定位该模块中的该文件为项目增量代码覆盖率降低的来源。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项项目的增量代码覆盖率降低来源的定位方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项项目的增量代码覆盖率降低来源的定位方法。

本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述任一项项目的增量代码覆盖率降低来源的定位方法。

本发明实施例中,与现有技术中的技术方案相比,通过本文的方法,可以对增量代码覆盖率小于对应的模块基线值的模块进行标记,并对模块中增量代码覆盖率小于对应的文件基线值的文件进行标记,进而定位该模块中的该文件是项目增量代码覆盖率降低的来源,也是导致项目的全量代码覆盖率降低的来源。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中提供的一种项目的增量代码覆盖率降低来源的定位方法的流程示意图;

图2为本发明实施例中提供的用于计算得到每个文件、每个模块以及项目对应的增量代码覆盖率的流程示意图;

图3为本发明实施例中提供的项目基线值根据项目对应的全量代码覆盖率确定的方法的流程示意图;

图4为本发明实施例中提供的模块基线值根据模块对应的全量代码覆盖率确定的方法的流程示意图;

图5为本发明实施例中提供的文件基线值根据文件对应的全量代码覆盖率确定的方法的流程示意图;

图6为本发明实施例中提供的用于计算得到每个文件、每个模块以及项目对应的全量代码覆盖率的流程示意图;

图7为本发明实施例中提供的另一种项目的增量代码覆盖率降低来源的定位方法的流程示意图;

图8为本发明实施例中提供的判断开发人员在模块的每个文件中所编写的增量代码覆盖率是否小于文件对应的文件基线值之前的流程示意图;

图9为本发明实施例中提供的判断开发人员在模块的每个文件中所编写的增量代码行数占文件的总计增量代码行数的比重是否大于设定比重之后的流程示意图;

图10为本发明实施例中提供的一种项目的增量代码覆盖率降低来源的定位装置的模块结构示意图;

图11为本发明实施例中提供的计算机设备的结构示意图。

附图符号说明:

100、第一判断模块;

200、第二判断模块;

300、第三判断模块;

400、定位模块;

1102、计算机设备;

1104、处理器;

1106、存储器;

1108、驱动机构;

1110、输入/输出模块;

1112、输入设备;

1114、输出设备;

1116、呈现设备;

1118、图形用户接口;

1120、网络接口;

1122、通信链路;

1124、通信总线。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

在现有技术中,在产生增量代码后,如果单元测试覆盖率降低,则表明增量代码的单元测试覆盖率不全面。但是现有的单元测试覆盖率的只能聚焦于整个项目上,确定整个项目的代码覆盖率,以及整个项目增量代码的覆盖率,无法做到对项目的增量代码覆盖率的降低来源进行准确定位,当整个项目增量代码覆盖率降低时,无法高效准确的确定导致覆盖率降低的来源具体是项目中的哪一文件,哪一模块。

为了解决上述问题,本文实施例提供了一种项目的增量代码覆盖率降低来源的定位方法。图1是本文实施例提供的一种项目的增量代码覆盖率降低来源的定位方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。

需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

参照图1,本文提供一种项目的增量代码覆盖率降低来源的定位方法,包括:

S101:判断所述项目对应的增量代码覆盖率是否小于项目基线值,其中所述项目基线值根据所述项目对应的全量代码覆盖率确定;

S102:当所述项目对应的增量代码覆盖率小于所述项目基线值时,判断所述项目中每个模块对应的增量代码覆盖率是否小于该模块对应的模块基线值,其中所述模块基线值根据该模块对应的全量代码覆盖率确定;

S103:当所述项目中任意模块对应的增量代码覆盖率小于该模块对应的模块基线值时,判断该模块中每个文件的增量代码覆盖率是否小于该文件对应的文件基线值,其中所述文件基线值根据该文件对应的全量代码覆盖率确定;

S104:当该模块中该文件的增量代码覆盖率小于该文件对应的文件基线值时,标记该文件,并标记该模块,进而定位该模块中的该文件为项目增量代码覆盖率降低的来源。

需要说明的是,项目中包括多个模块,每一模块中包括多个文件,若项目中产生增量代码后的增量代码覆盖率较低,则势必会对项目的全量代码覆盖率产生影响,导致项目的全量代码覆盖率降低。

而且,若项目的增量代码覆盖率降低,则一定是由项目中至少一模块的增量代码覆盖率降低引起,而该模块的增量代码覆盖率降低一定是由模块中至少一文件的增量代码覆盖率降低引起。按照该思路,提出了本文S101至S104的步骤,以期对造成项目增量代码覆盖率降低的文件和模块进行高效准确的定位,方便后续对项目全量代码覆盖率降低的原因进行分析。

本文实施例中所述的增量代码是广义的概念,指的是从无到有新增的代码或者是对原代码进行修改后得到的代码;而全量代码指的是相应的项目,或是模块,或是文件中的全部代码。增量代码覆盖率指的是通过对增量代码集进行覆盖率测试,得到的增量代码中的覆盖率情况,全量代码覆盖率指的是通过对全量代码集进行覆盖率测试,得到的全量代码中的覆盖率情况。

本文中进行覆盖率测试的工具可以为现有技术中的任意代码覆盖率测试工具,本文以现有技术中的jacoco工具为例来进行定位方法的说明,但是本领域技术人员可以理解的是本文所限定的方法不止局限于jacoco工具,对于通过其他工具的使用本文在此不再赘述。

可以理解的是,通过事先设定判断标准,当项目对应的增量代码覆盖率小于项目基线值时,代表项目的增量代码覆盖率过低,此时需要进一步对项目中每个模块对应的增量代码覆盖率进行判断,当任意模块对应的增量代码覆盖率小于该模块对应的模块基线值时,需要进一步对该模块中的每个文件对应的增量代码覆盖率进行判断,以此来定位引起项目的增量代码覆盖率过低的来源是哪一模块中的哪一文件,并对相应的模块和文件进行标记。

当然,由于项目-模块-文件构成了树状结构,因此在对模块对应的增量代码覆盖率进行判断时要对项目下的所有模块都进行判断,在对文件对应的增量代码覆盖率进行判断时,要对模块下的所有文件都进行判断,为了防止判断过程中产生重复或者疏漏,可以参照多叉树的层次遍历或者先序遍历方法,逐一对模块和文件进行判断。

通过本文的方法,可以对增量代码覆盖率小于对应的模块基线值的模块进行标记,并对模块中增量代码覆盖率小于对应的文件基线值的文件进行标记,进而定位该模块中的该文件是项目增量代码覆盖率降低的来源,也是导致项目的全量代码覆盖率降低的来源。

在本文实施例中,参照图2,还包括:

S201:根据每个文件中增量代码的覆盖行数和未覆盖行数,计算得到每个文件对应的增量代码覆盖率;

S202:根据所有文件分别对应的增量代码覆盖率,生成每个模块对应的增量代码覆盖率,其中每个模块中包括多个不同的文件;

S203:根据所有模块对应的增量代码覆盖率,生成项目对应的增量代码覆盖率,其中所述项目中包括所有模块。

文件对应的增量代码覆盖率的计算方法是通过增量代码的覆盖行数除以增量代码的总行数求得的,其中增量代码的总行数可以通过增量代码的覆盖行数与增量代码的未覆盖行数加和求得。

通过上述计算方法可以计算得到每个文件对应的增量代码覆盖率。

对于S202来说,具体为:

步骤1.1:确定任意模块包括的多个不同的文件;

步骤1.2:将该模块中所包括的每个文件的增量代码覆盖率与每个文件在该模块中的增量代码占比相乘,计算得到每个文件在该模块中的增量覆盖率贡献值;

步骤1.3:对该模块中包括的多个不同文件分别对应的增量覆盖率贡献值进行求和,得到该模块对应的增量代码覆盖率。

由于通过S201已经求得每个文件的增量代码覆盖率,因此步骤1.2中所述的该模块中所包括的每个文件的增量代码覆盖率是已知的。

其中每个文件在该模块中的增量代码占比即为每个文件的增量代码行数占该模块的增量代码行数的比值。

通过上述步骤1.1至步骤1.3即可计算得到每个模块对应的增量代码覆盖率。

对于S203来说,具体为:

步骤2.1:确定项目包括的多个不同的模块;

步骤2.2:将项目中所包括的每个模块的增量代码覆盖率与每个模块在项目中的增量代码占比相乘,计算得到每个模块在项目中的增量覆盖率贡献值;

步骤2.3:对项目中包括的多个不同的模块分别对应的增量覆盖率贡献值进行求和,得到项目对应的增量代码覆盖率。

同样的,通过S202已经求得每个模块的增量代码覆盖率,因此步骤2.2中所述的项目中所包括的每个模块的增量代码覆盖率是已知的。

其中每个模块在项目中的增量代码占比即为每个模块的增量代码行数占项目的增量代码行数的比值。

通过上述步骤2.1至步骤2.3即可计算得到项目对应的增量代码覆盖率。

在本文实施例中,参照图3,所述项目基线值根据所述项目对应的全量代码覆盖率确定的方法进一步包括:

S301:判断所述项目对应的全量代码覆盖率是否小于或等于项目历史基线值;

S302:若是,则将所述项目历史基线值确定为所述项目基线值;

S303:若否,则将所述项目对应的全量代码覆盖率确定为所述项目基线值。

为了保证项目对应的增量代码的质量,项目对应的增量代码覆盖率不能小于项目基线值,项目基线值是项目历史基线值与项目对应的全量代码覆盖率中的较大值。可以理解的是,每当项目产生增量代码后,此时项目的全量代码就是历史代码与增量代码的总和,将项目对应的全量代码覆盖率与项目历史基线值中的较大值作为项目基线值A,而当项目再次产生增量代码后,A即为此时项目对应的项目历史基线值。

在本文说明书中,相应的,参照图4,所述模块基线值根据该模块对应的全量代码覆盖率确定的方法进一步包括:

S401:判断该模块对应的全量代码覆盖率是否小于或等于该模块对应的模块历史基线值;

S402:若是,则将该模块对应的模块历史基线值确定为该模块对应的模块基线值;

S403:若否,则将该模块对应的全量代码覆盖率确定为该模块对应的模块基线值;

相应的,参照图5,所述文件基线值根据该文件对应的全量代码覆盖率确定的方法进一步包括:

S501:判断该文件对应的全量代码覆盖率是否小于或等于该文件对应的文件历史基线值;

S502:若是,则将该文件对应的文件历史基线值确定为该文件对应的文件基线值;

S503:若否,则将该文件对应的全量代码覆盖率确定为该文件对应的文件基线值。

通过上述S401至S403以及S501至S503可以确定每个模块对应的模块基线值以及每个文件对应的文件基线值。

在本文实施例中,参照图6,还包括:

S601:根据每个文件中全量代码的覆盖行数和未覆盖行数,计算得到每个文件对应的全量代码覆盖率;

S602:根据所有文件分别对应的全量代码覆盖率,生成每个模块对应的全量代码覆盖率,其中每个模块中包括多个不同的文件;

S603:根据所有模块对应的全量代码覆盖率,生成项目对应的全量代码覆盖率,其中所述项目中包括所有模块。

文件对应的全量代码覆盖率的计算方法是通过全量代码的覆盖行数除以全量代码的总行数求得的,其中全量代码的总行数可以通过全量代码的覆盖行数与全量代码的未覆盖行数加和求得。

通过上述计算方法可以计算得到每个文件对应的全量代码覆盖率。

对于S602来说,具体为:

步骤3.1:确定任意模块包括的多个不同的文件;

步骤3.2:将该模块中所包括的每个文件的全量代码覆盖率与每个文件在该模块中的全量代码占比相乘,计算得到每个文件在该模块中的全量覆盖率贡献值;

步骤3.3:对该模块中包括的多个不同文件分别对应的全量覆盖率贡献值进行求和,得到该模块对应的全量代码覆盖率。

由于通过S601已经求得每个文件的全量代码覆盖率,因此步骤3.2中所述的该模块中所包括的每个文件的全量代码覆盖率是已知的。

其中每个文件在该模块中的全量代码占比即为每个文件的全量代码行数占该模块的全量代码行数的比值。

通过上述步骤3.1至步骤3.3即可计算得到每个模块对应的全量代码覆盖率。

对于S603来说,具体为:

步骤4.1:确定项目包括的多个不同的模块;

步骤4.2:将项目中所包括的每个模块的全量代码覆盖率与每个模块在项目中的全量代码占比相乘,计算得到每个模块在项目中的全量覆盖率贡献值;

步骤4.3:对项目中包括的多个不同的模块分别对应的全量覆盖率贡献值进行求和,得到项目对应的全量代码覆盖率。

同样的,通过S602已经求得每个模块的全量代码覆盖率,因此步骤4.2中所述的项目中所包括的每个模块的全量代码覆盖率是已知的。

其中每个模块在项目中的全量代码占比即为每个模块的全量代码行数占项目的全量代码行数的比值。

通过上述步骤4.1至步骤4.3即可计算得到项目对应的全量代码覆盖率。

在本文实施例中,参照图7,还包括:

S701:判断每个开发人员在项目中所编写的增量代码覆盖率是否小于项目基线值;

S702:当任意开发人员在项目中所编写的增量代码覆盖率小于项目基线值时,判断该开发人员在项目的每个模块中所编写的增量代码覆盖率是否小于该模块对应的模块基线值;

S703:当该开发人员在项目的任意模块中所编写的增量代码覆盖率小于该模块对应的模块基线值时,则判断该开发人员在该模块的每个文件中所编写的增量代码覆盖率是否小于该文件对应的文件基线值;

S704:当该开发人员在该模块的该文件中所编写的增量代码覆盖率小于该文件对应的文件基线值时,标记该开发人员在该文件中所编写的增量代码行,进而定位该开发人员在该文件中所编写的增量代码行为增量代码覆盖率降低的来源。

在确定增量代码覆盖率的降低来源时,除了确定是哪一模块和哪一文件,还可以确定是哪一开发人员编写的增量代码。当任意开发人员在项目中所编写的增量代码覆盖率小于项目基线值时,代表该开发人员在项目中所编写的增量代码覆盖率过低,此时需要进一步对该开发人员在项目的任意模块中所编写的增量代码覆盖率进行判断,当该开发人员在项目的任意模块中所编写的增量代码覆盖率小于该模块对应的模块基线值时,需要进一步对该开发人员在该模块的该文件中所编写的增量代码覆盖率进行判断,以此来定位引起项目的增量代码覆盖率过低的来源是哪一开发人员所编写的哪一文件中增量代码行,并对相应的开发人员和文件中的增量代码行进行标记。

在本文实施例中,参照图8,所述判断该开发人员在该模块的每个文件中所编写的增量代码覆盖率是否小于该文件对应的文件基线值之前还包括:

S801:判断该开发人员在该模块的每个文件中所编写的增量代码行数占该文件的总计增量代码行数的比重是否大于设定比重;

S802:当该开发人员在该模块的任意文件中所编写的增量代码行数占该文件的总计增量代码行数的比重大于设定比重时,判断该开发人员在该模块的该文件中所编写的增量代码覆盖率是否小于该文件对应的文件基线值。

当任意开发人员在任意文件中所编写的增量代码行数较少时,一般意味着该开发人员所编写的增量代码不是特别重要的代码,因此对该开发人员所编写的增量代码覆盖率的要求较低,而其中衡量所编写的增量代码行数多少的标准为设定比重,当任意开发人员在任意文件中所编写的增量代码行数占文件的总计增量代码行数的比重大于设定比重,则说明所编写的增量代码行数较多,该开发人员在该文件中所编写的增量代码覆盖率需要与文件基线值进行比较;反之则说明所编写的增量代码行数较少,该开发人员在该文件中所编写的增量代码覆盖率无需与文件基线值进行比较。其中设定比重可以根据实际工况来设定,本文不再赘述。

但是上述情况并不适用于项目和模块的判断,以项目为例,若任意开发人员在项目中所编写的增量代码行数较少,不能完全代表该开发人员所编写的增量代码不重要,很可能是因为该开发人员只编写了项目中一个模块中一个文件的大量代码,但是由于项目中的模块太多,而每个模块中的文件太多,导致该开发人员所编写的大量代码行数占项目总计增量代码行数的比重小于设定比重,因此上述情况只适用于文件的判断。

进一步的,参照图9,所述判断该开发人员在该模块的每个文件中所编写的增量代码行数占该文件的总计增量代码行数的比重是否大于设定比重之后还包括:

S901:当该开发人员在该模块的任意文件中所编写的增量代码行数占该文件的总计增量代码行数的比重不大于设定比重时,判断该开发人员在该模块的该文件中所编写的增量代码覆盖率是否小于预设基线值,其中所述预设基线值为该文件对应的文件基线值与预设百分比的乘积;

S902:当该开发人员在该模块的该文件中所编写的增量代码覆盖率小于预设基线值时,标记该开发人员在该文件中所编写的增量代码行,进而定位该开发人员在该文件中所编写的增量代码行为增量代码覆盖率降低的来源。

其中预设基线值为文件基线值与预设百分比的乘积,预设百分比可以根据实际工况设定。可以理解的是,所述设定比重与所述预设百分比正相关,设定比重越大,预设百分比越大,在实际工况中,例如设定比重为10%,预设百分比为20%,设定比重为30%,预设百分比为50%等等。假设开发人员X编写的增量代码行数占文件的总计增量代码行数的比重为5%,小于设定比重10%,此时需要判断开发人员X所编写的增量代码覆盖率30%是否小于预设基线值27%(文件基线值为90%,预设百分比为30%)。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本发明实施例中还提供了一种项目的增量代码覆盖率降低来源的定位装置,如下面的实施例所述。由于该装置解决问题的原理与一种项目的增量代码覆盖率降低来源的定位方法相似,因此该装置的实施可以参见一种项目的增量代码覆盖率降低来源的定位方法的实施,重复之处不再赘述。

参照图10,本文实施例提供的一种项目的增量代码覆盖率降低来源的定位装置包括:第一判断模块100、第二判断模块200、第三判断模块300、定位模块400。

第一判断模块100,用于判断所述项目对应的增量代码覆盖率是否小于项目基线值,其中所述项目基线值根据所述项目对应的全量代码覆盖率确定;

第二判断模块200,用于当所述项目对应的增量代码覆盖率小于所述项目基线值时,判断所述项目中每个模块对应的增量代码覆盖率是否小于该模块对应的模块基线值,其中所述模块基线值根据该模块对应的全量代码覆盖率确定;

第三判断模块300,用于当所述项目中任意模块对应的增量代码覆盖率小于该模块对应的模块基线值时,判断该模块中每个文件的增量代码覆盖率是否小于该文件对应的文件基线值,其中所述文件基线值根据该文件对应的全量代码覆盖率确定;

定位模块400,用于当该模块中该文件的增量代码覆盖率小于该文件对应的文件基线值时,标记该文件,并标记该模块,进而定位该模块中的该文件为项目增量代码覆盖率降低的来源。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一所述的增量代码覆盖率降低来源的定位方法。

参照图11所示,其中上述一种增量代码覆盖率降低来源的定位方法运行在计算机设备1102上。计算机设备1102可以包括一个或多个处理器1104,诸如一个或多个中央处理单元(CPU)或图形处理器(GPU),每个处理单元可以实现一个或多个硬件线程。计算机设备1102还可以包括任何存储器1106,其用于存储诸如代码、设置、数据等之类的任何种类的信息,一具体实施方式中,存储器1106上并可在处理器1104上运行的计算机程序,所述计算机程序被所述处理器1104运行时,可以执行根据上述方法的指令。

非限制性的,比如,存储器1106可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示计算机设备1102的固定或可移除部件。在一种情况下,当处理器1104执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备1102可以执行相关联指令的任一操作。计算机设备1102还包括用于与任何存储器交互的一个或多个驱动机构1108,诸如硬盘驱动机构、光盘驱动机构等。

计算机设备1102还可以包括输入/输出模块1110(I/O),其用于接收各种输入(经由输入设备1112)和用于提供各种输出(经由输出设备1114)。一个具体输出机构可以包括呈现设备1116和相关联的图形用户接口1118(GUI)。在其他实施例中,还可以不包括输入/输出模块1110(I/O)、输入设备1112以及输出设备1114,仅作为网络中的一台计算机设备。计算机设备1102还可以包括一个或多个网络接口1120,其用于经由一个或多个通信链路1122与其他设备交换数据。一个或多个通信总线1124将上文所描述的部件耦合在一起。

通信链路1122可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路1122可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的增量代码覆盖率降低来源的定位方法。

本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述任一所述的增量代码覆盖率降低来源的定位方法。

本发明实施例中,与现有技术中的技术方案相比,通过本文的方法,可以对增量代码覆盖率小于对应的模块基线值的模块进行标记,并对模块中增量代码覆盖率小于对应的文件基线值的文件进行标记,进而定位该模块中的该文件是项目增量代码覆盖率降低的来源,也是导致项目的全量代码覆盖率降低的来源。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号