一种组件稳定性的检测方法、装置、设备及存储介质
文献发布时间:2023-06-19 16:11:11
技术领域
本公开涉及数据处理领域,尤其涉及一种组件稳定性的检测方法、装置、设备及存储介质。
背景技术
组件是指用于实现项目开发中的功能需求的代码模块,通常,对组件的检测是指对组件的稳定性进行检测。
如图1所示,由于组件Y依赖三个组件,一旦三个组件中的任意一个组件存在更新,则依赖该组件的组件Y也需要进行重新测试,以保证组件Y的正常运行。通常,我们认为依赖较多组件且没有其他组件对其依赖的组件Y是相对不稳定的。如图2所示,由于组件X被三个组件依赖,而组件X并未依赖其他组件,我们认为组件X是相对稳定的。
但是,上述仅基于组件之间的依赖关系确定组件的稳定性的方式相对比较片面,如何更全面的实现对组件的稳定性检测,得到更准确的检测结果,是目前亟需解决的技术问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种组件稳定性的检测方法、装置、设备及存储介质,能够实现能够更全面的对组件的稳定性进行检测,提高稳定性检测结果的准确性。
第一方面,本公开提供了一种组件稳定性的检测方法,所述方法包括:
基于合并请求数据确定目标组件的第一稳定性参数;其中,所述合并请求数据包括目标软件的多个版本分别对应的合并请求,所述合并请求为对所述目标软件中的组件进行处理的请求;
以及,基于所述目标组件对应的依赖关系,确定所述目标组件的第二稳定性参数;
基于所述第一稳定性参数和所述第二稳定性参数,确定所述目标组件的稳定性检测结果。
可选的,所述基于合并请求数据确定目标组件的第一稳定性参数,包括:
通过对所述合并请求数据进行分析,确定包含所述目标组件的合并请求条数与合并请求总条数的比值,作为所述目标组件的第一稳定性参数。
可选的,所述基于所述第一稳定性参数和所述第二稳定性参数,确定所述目标组件的稳定性检测结果,包括:
如果确定所述第一稳定性参数大于预设第一阈值且所述第二稳定性参数不大于预设第二阈值,或者,确定所述第一稳定性参数不大于所述预设第一阈值且所述第二稳定性参数大于所述预设第二阈值,则确定所述目标组件处于不稳定状态。
可选的,所述方法还包括:
通过对所述合并请求数据进行分析,确定包含所述目标组件的多个组件存在于同一条合并请求的概率;
如果确定所述概率大于预设第三阈值,则确定所述多个组件处于不稳定状态。
可选的,所述基于所述目标组件对应的依赖关系,确定所述目标组件的第二稳定性参数,包括:
基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;
计算所述入向依赖数量和所述出向依赖数量的总和,并将所述出向依赖数量与所述总和的比值,确定为所述目标组件的第二稳定性参数。
可选的,所述基于所述目标组件对应的依赖关系,确定所述目标组件的第二稳定性参数,包括:
基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;
将所述入向依赖数量和所述出向依赖数量确定为所述目标组件的第二稳定性参数;
相应的,所述基于所述第一稳定性参数和所述第二稳定性参数,确定所述目标组件的检测结果,包括:
如果确定所述目标组件的入向依赖数量大于预设第四阈值,所述出向依赖数量大于预设第五阈值,且所述第一稳定性参数大于预设第一阈值,则确定所述目标组件处于不稳定状态。
第二方面,本公开还提供了一种组件稳定性的检测装置,所述装置包括:
第一确定模块,用于基于合并请求数据确定目标组件的第一稳定性参数;其中,所述合并请求数据包括目标软件的多个版本分别对应的合并请求,所述合并请求为对所述目标软件中的组件进行处理的请求;
第二确定模块,用于基于所述目标组件对应的依赖关系,确定所述目标组件的第二稳定性参数;
第三确定模块,用于基于所述第一稳定性参数和所述第二稳定性参数,确定所述目标组件的稳定性检测结果。
第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
第四方面,本公开提供了一种设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的方法。
第五方面,本公开提供了一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供了一种组件稳定性的检测方法,首先,基于合并请求数据确定目标组件的第一稳定性参数,以及基于目标组件对应的依赖关系,确定目标组件的第二稳定性参数,然后,基于第一稳定性参数和第二稳定性参数,确定目标组件的稳定性检测结果。可见,本公开实施例不仅能够从合并请求的维度确定目标组件的稳定性参数,还可以从依赖关系的维度静态分析出目标组件的稳定性参数,最终得到目标组件的稳定性检测结果,本公开实施例能够更全面的对组件的稳定性进行检测,提高了检测结果的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一种组件依赖关系的示意图;
图2为另一种组件依赖关系的示意图;
图3为本公开实施例提供的一种组件稳定性的检测方法的流程图;
图4为本公开实施例提供的一种组件稳定性的检测装置的结构示意图;
图5为本公开实施例提供的一种组件稳定性的检测设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
组件的稳定性是开发项目的质量评价指标之一,如何实现对组件的稳定性的检测,已经成为项目开发领域的一个需要解决的技术问题。
为此,本公开实施例提供了一种组件稳定性的检测方法,首先,基于合并请求数据确定目标组件的第一稳定性参数,以及基于目标组件对应的依赖关系,确定目标组件的第二稳定性参数,然后,基于第一稳定性参数和第二稳定性参数,确定目标组件的稳定性检测结果。可见,本公开实施例不仅能够从合并请求的维度确定目标组件的稳定性参数,还可以从依赖关系的维度静态分析出目标组件的稳定性参数,最终得到目标组件的稳定性检测结果,本公开实施例能够更全面的对组件的稳定性进行检测,提高了检测结果的准确性。
基于此,本公开实施例提供了一种组件稳定性的检测方法,参考图3,为本公开实施例提供的一种组件稳定性的检测方法的流程图,该方法包括:
S301:基于合并请求数据确定目标组件的第一稳定性参数。
其中,所述合并请求数据包括目标软件的多个版本分别对应的合并请求。所述合并请求为对所述目标软件中的组件进行处理的请求。
本公开实施例中,同一款软件通常包括多个版本,每个版本都具有对应合并请求(英文:Merge requests,缩写:MR)。其中,合并请求用于请求对组件的更新调整等。
本公开实施例中,利用目标软件的多个版本分别对应的合并请求构成合并请求数据,用于确定目标组件的第一稳定性参数。其中,目标组件属于目标软件。
实际应用中,如果组件的变更次数较高,则说明该组件的拆分粒度可能过大,或者该组件对应的依赖关系可能不合理等,为此,本公开实施例可以基于合并请求数据确定目标组件的第一稳定关系,用于从组件变更情况确定目标组件的稳定性。
一种可选的实施方式中,通过对合并请求数据进行分析,确定包含所述目标组件的合并请求条数与合并请求总条数的比值,作为所述目标组件的第一稳定性参数。
其中,包含目标组件的合并请求条数,能够表明目标组件的变更次数,而包含目标组件的合并请求条数与合并请求总条数的比值,能够表明目标组件的变更概率,一定程度上能够体现目标组件的稳定性。为此,本公开实施例可以将包含目标组件的合并请求条数与合并请求总条数的比值,作为目标组件的第一稳定性参数。
S302:基于所述目标组件对应的依赖关系,确定所述目标组件的第二稳定性参数。
本公开实施例中,预先确定目标组件对应的依赖关系,其中,目标组件对应的依赖关系包括其他组件对目标组件的依赖关系以及目标组件对其他组件的依赖关系。
本公开实施例中,可以基于目标组件对应的依赖关系,静态的对目标组件的稳定性进行分析,得到目标组件的第二稳定性参数。
一种可选的实施方式中,首先,基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;然后,计算所述入向依赖数量和所述出向依赖数量的总和,并将所述出向依赖数量与所述总和的比值,确定为所述目标组件的第二稳定性参数。
其中,Fan-in用于表示目标组件的入向依赖,即多少个组件依赖了目标组件,Fan-out用于表示目标组件的出向依赖,即目标组件依赖了多少个其他组件。I用于表示目标组件的第二稳定性参数,I属于[0,1]的范围,I=0表示目标组件稳定性最高,I=1表示目标组件稳定性最低。
具体的,可以利用公式:I=Fan-out/(Fan-out+Fan-in),计算目标组件的第二稳定性参数。
另外,目标组件的入向依赖和出向依赖的数量也能够体现出目标组件的稳定性。例如,目标组件的出向依赖数量越大,则说明目标组件所依赖的其他组件越多,因而目标组件的稳定性越低。
另一种可选的实施方式中,首先,基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;然后,将所述入向依赖数量和所述出向依赖数量确定为所述目标组件的第二稳定性参数。
本公开实施例对于S301和S302的先后执行顺序不做限制。
S303:基于所述第一稳定性参数和所述第二稳定性参数,确定所述目标组件的稳定性检测结果。
本公开实施例中,可以基于第一稳定性参数和第二稳定性参数,确定目标组件的稳定性检测结果。
实际应用中,目标组件的第一稳定性参数越小,说明目标组件的稳定性越高,理论上,目标组件的第二稳定性参数也是越小的。也就是说,目标组件的第一稳定性参数和第二稳定性参数为成正比的关系。也就是说,如果目标组件的第一稳定性参数和第二稳定性参数成正比的关系,则说明目标组件可能处于稳定状态,如果目标组件的第一稳定性参数和第二稳定性参数成反比,则说明目标组件的设计可能存在问题,需要对其进行处理。
一种可选的实施方式中,如果确定所述第一稳定性参数大于预设第一阈值且所述第二稳定性参数不大于预设第二阈值,或者,确定所述第一稳定性参数不大于所述预设第一阈值且所述第二稳定性参数大于所述预设第二阈值,则确定所述目标组件处于不稳定状态,否则,确定所述目标组件处于稳定性状态,无需对其进行处理。
另外,本公开实施例中,可以仅基于第一稳定性参数或第二稳定性参数,确定目标组件的稳定性检测结果。
一种可选的实施方式中,通过对合并请求数据进行分析,确定包含所述目标组件的合并请求条数与合并请求总条数的比值,作为所述目标组件的第一稳定性参数之后,如果确定第一稳定性参数大于预设第一阈值,则说明目标组件的稳定性不足,确定目标组件处于稳定性状态,后续可以针对目标组件的稳定性进行处理。
另一种可选的实施方式中,基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;然后,计算所述入向依赖数量和所述出向依赖数量的总和,并将所述出向依赖数量与所述总和的比值,确定为所述目标组件的第二稳定性参数之后,如果确定第二稳定性参数大于所述预设第二阈值,则说明目标组件的稳定性不足,确定目标组件处于不稳定状态,以便后续可以针对目标组件的稳定性进行处理。
另一种可选的实施方式中,基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;然后,将所述入向依赖数量和所述出向依赖数量确定为所述目标组件的第二稳定性参数之后,如果确定目标组件的入向依赖数量大于预设第四阈值,且所述出向依赖数量大于预设第五阈值,则说明目标组件的稳定性不足,可以确定目标组件处于不稳定状态。
值得注意的是,本公开实施例中的预设第一阈值、预设第二阈值、预设第三阈值、预设第四阈值和预设第五阈值均可以基于稳定性需求设置。
本公开实施例提供的组件稳定性的检测方法中,首先,基于合并请求数据确定目标组件的第一稳定性参数,以及基于目标组件对应的依赖关系,确定目标组件的第二稳定性参数,然后,基于第一稳定性参数和第二稳定性参数,确定目标组件的稳定性检测结果。可见,本公开实施例不仅能够从合并请求的维度确定目标组件的稳定性参数,还可以从依赖关系的维度静态分析出目标组件的稳定性参数,最终得到目标组件的稳定性检测结果,本公开实施例能够更全面的对组件的稳定性进行检测,提高了检测结果的准确性。
实际应用中,两个组件同时出现在同一条合并请求中的概率越高,则可以说明这两个组件的设计可能存在不合理的问题,例如,这两个组件可以设计为一个组件,即组件的拆解过细。
为此,在上述实施例的基础上,本公开实施例还可以基于合并请求数据,确定处于不稳定状态的组件,最大化发现存在问题的组件,以便及时解决组件设计的问题,减少后续产品上线后出现因组件依赖的设计问题产生的bug数量。
具体的,本公开实施例还可以通过对所述合并请求数据进行分析,确定包含所述目标组件的多个组件存在于同一条合并请求的概率。如果确定所述概率大于预设第三阈值,则确定多个组件处于不稳定状态。
具体的,首先确定包含目标组件的多个组件同时存在的合并请求的数量,以及合并请求总数量,然后计算二者的比值,作为上述概率,如果确定计算得到的概率大于预设第三阈值,则说明上述多个组件同时存在于一条合并请求的概率过大,也就是说,上述多个组件的拆分粒度过细,因此,可以确定多个组件处于不稳定状态,后续可以对上述多个组件的设计进行调整。
本公开实施例提供的组件稳定性的检测方法,能够更全面的对组件的稳定性进行检测,进一步的提高了稳定性检测结果的准确性。
基于上述方法实施例,本公开还提供了一种组件稳定性的检测装置,参考图4,为本公开实施例提供的一种组件稳定性的检测装置的结构示意图,所述装置包括:
第一确定模块401,用于基于合并请求数据确定目标组件的第一稳定性参数;其中,所述合并请求数据包括目标软件的多个版本分别对应的合并请求,所述合并请求为对所述目标软件中的组件进行处理的请求;
第二确定模块402,用于基于所述目标组件对应的依赖关系,确定所述目标组件的第二稳定性参数;
第三确定模块403,用于基于所述第一稳定性参数和所述第二稳定性参数,确定所述目标组件的稳定性检测结果。
一种可选的实施方式中,所述第一确定模块,具体用于:
通过对所述合并请求数据进行分析,确定包含所述目标组件的合并请求条数与合并请求总条数的比值,作为所述目标组件的第一稳定性参数。
一种可选的实施方式中,所述第三确定模块,具体用于:
如果确定所述第一稳定性参数大于预设第一阈值且所述第二稳定性参数不大于预设第二阈值,或者,确定所述第一稳定性参数不大于所述预设第一阈值且所述第二稳定性参数大于所述预设第二阈值,则确定所述目标组件处于不稳定状态。
一种可选的实施方式中,所述装置还包括:
第四确定模块,用于通过对所述合并请求数据进行分析,确定包含所述目标组件的多个组件存在于同一条合并请求的概率;
第五确定模块,用于在确定所述概率大于预设第三阈值时,确定所述多个组件处于不稳定状态。
一种可选的实施方式中,所述第二确定模块,包括:
第一确定子模块,用于基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;
第二确定子模块,用于计算所述入向依赖数量和所述出向依赖数量的总和,并将所述出向依赖数量与所述总和的比值,确定为所述目标组件的第二稳定性参数。
一种可选的实施方式中,所述第二确定模块,包括:
第三确定子模块,用于基于所述目标组件对应的依赖关系,确定所述目标组件的入向依赖数量和出向依赖数量;
第四确定子模块,用于将所述入向依赖数量和所述出向依赖数量确定为所述目标组件的第二稳定性参数;
相应的,所述第三确定模块,具体用于:
如果确定所述目标组件的入向依赖数量大于预设第四阈值,所述出向依赖数量大于预设第五阈值,且所述第一稳定性参数大于预设第一阈值,则确定所述目标组件处于不稳定状态。
本公开实施例提供的组件稳定性的检测装置中,首先,基于合并请求数据确定目标组件的第一稳定性参数,以及基于目标组件对应的依赖关系,确定目标组件的第二稳定性参数,然后,基于第一稳定性参数和第二稳定性参数,确定目标组件的稳定性检测结果。可见,本公开实施例不仅能够从合并请求的维度确定目标组件的稳定性参数,还可以从依赖关系的维度静态分析出目标组件的稳定性参数,最终得到目标组件的稳定性检测结果,本公开实施例能够更全面的对组件的稳定性进行检测,提高了稳定性检测结果的准确性。
除了上述方法和装置以外,本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现本公开实施例所述的组件稳定性的检测方法。
本公开实施例还提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本公开实施例所述的组件稳定性的检测方法。
另外,本公开实施例还提供了一种组件稳定性的检测设备,参见图5所示,可以包括:
处理器501、存储器502、输入装置503和输出装置504。组件稳定性的检测设备中的处理器501的数量可以一个或多个,图5中以一个处理器为例。在本公开的一些实施例中,处理器501、存储器502、输入装置503和输出装置504可通过总线或其它方式连接,其中,图5中以通过总线连接为例。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行组件稳定性的检测设备的各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置503可用于接收输入的数字或字符信息,以及产生与组件稳定性的检测设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现上述组件稳定性的检测设备的各种功能。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。