1.本技术实施例涉及汽车技术领域,尤其涉及一种模型建立方法、敏感因子分析方法、装置、电子设备和存储介质。
背景技术:
2.sonarqube代码静态扫描平台是一个用于管理代码质量的开放平台,可以快速的定位代码中的潜在错误或者明显错误。但sonarqube只提供了影响代码问题率的各个独立的度量指标,基于每个度量指标修改代码,但是有些度量指标对于代码问题率并没有起到决定性的作用,因此,根据这类未起到决定性作用的度量指标的指示修改代码并不能有效降低代码问题率,提升代码质量,而且会浪费大量时间,从而使得提升代码质量的效率降低。
技术实现要素:
3.本技术实施例提供了一种模型建立方法、敏感因子分析方法、装置、电子设备和存储介质,能够确定出影响代码质量的敏感因子,根据敏感因子修改代码,有效提升代码质量,并且节约了修改时间,使得提升代码质量的效率更高。
4.第一方面,本技术实施例提供了一种模型建立方法,包括:获取多个样本数据,每个样本数据包括一个第一数据和n个第二数据,其中,第一数据用于指示对应的样本代码数据的代码问题率,每个第二数据用于指示对应的样本代码数据的一个度量指标,每个第二数据对应的度量指标为影响代码问题率的一个因子,n为大于1的整数;基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型,该线性回归模型是从至少一个可控因子中确定影响代码问题率的至少一个敏感因子的模型,每个可控因子为n个第二数据对应的n个因子中的一个。
5.可选地,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型,包括:确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布;在多个样本数据中的第一数据服从正态分布,且多个样本数据中的每个因子对应的第二数据均服从正态分布的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
6.可选地,确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布之后,该方法还包括:在多个样本数据中的第一目标数据不服从正态分布的情况下,对多个样本数据中的第一目标数据进行第一修正,以得到第一修正后的多个样本数据,第一修正后的多个样本数据中的第一数据服从正态分布,且第一修正后的多个样本数据中的每个因子对应的第二数据均服从正态分布,第一目标数据为第一数据和n个第二数据中的任一个;基于第一修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
7.可选地,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模
型,包括:基于单值-移动极差检验法确定多个样本数据中的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定;在多个样本数据中的第一数据稳定,且多个样本数据中的每个因子对应的第二数据均稳定的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
8.可选地,基于单值-移动极差检验法确定多个样本数据中的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定之后,该方法还包括:在多个样本数据中的第二目标数据不稳定的情况下,对多个样本数据中的第二目标数据进行第二修正,以得到第二修正后的多个样本数据,第二修正后的多个样本数据中的第一数据稳定,且第二修正后的多个样本数据中的每个因子对应的第二数据均稳定,第二目标数据为第一数据和n个第二数据中的任一个;基于第二修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
9.可选地,基于多个样本数据,构建代码问题率线性回归模包括:基于多个样本数据,从n个因子中确定至少一个可控因子,每个可控因子与代码问题率不独立且相关程度大于或等于第一相关阈值,且任意两个可控因子独立和/或相关程度小于或等于第二相关阈值;删除多个样本数据中除每个可控因子之外的因子对应的数据,得到更新后的多个样本数据;基于更新后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
10.可选地,基于多个样本数据,从n个因子中确定至少一个可控因子,包括:在n个因子中包括互不独立和/或相关程度大于第二相关阈值的两个目标因子,且每个目标因子与代码问题率不独立且相关程度大于或等于第一相关阈值的情况下,将两个目标因子中与代码问题率相关程度较大的确定为一个可控因子。
11.第二方面,本技术实施例提供了一种敏感因子分析方法,包括:获取代码问题率与至少一个可控因子的线性回归模型,其中,每个可控因子为影响代码问题率的一个因子,该线性回归模型是根据第一方面提供的任一种方法的步骤得到的;基于线性回归模型,对至少一个可控因子进行敏感度分析,确定影响代码问题率的至少一个敏感因子。
12.第三方面,本技术实施例提供了一种模型建立装置,包括:获取模块和构建模块;该获取模块,用于获取多个样本数据,每个样本数据包括一个第一数据和n个第二数据,其中,第一数据用于指示对应的样本代码数据的代码问题率,每个第二数据用于指示对应的样本代码数据的一个度量指标,每个第二数据对应的度量指标为影响代码问题率的一个因子,n为大于1的整数;该构建模块,用于基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型,该线性回归模型是从至少一个可控因子中确定影响代码问题率的至少一个敏感因子的模型,每个可控因子为n个第二数据对应的n个因子中的一个。
13.可选地,该构建模块,具体用于确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布;在多个样本数据中的第一数据服从正态分布,且多个样本数据中的每个因子对应的第二数据均服从正态分布的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
14.可选地,该构建模块,具体用于在确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布之后,在多个样本数据中的第一目标数据不服从正态分布的情况下,对多个样本数据中的第一目标数
据进行第一修正,以得到第一修正后的多个样本数据,第一修正后的多个样本数据中的第一数据服从正态分布,且第一修正后的多个样本数据中的每个因子对应的第二数据均服从正态分布,第一目标数据为第一数据和n个第二数据中的任一个;基于第一修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
15.可选地,该构建模块,具体用于基于单值-移动极差检验法确定多个样本数据中的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定;在多个样本数据中的第一数据稳定,且多个样本数据中的每个因子对应的第二数据均稳定的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
16.可选地,该构建模块,具体用于在基于单值-移动极差检验法确定多个样本数据中的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定之后,在多个样本数据中的第二目标数据不稳定的情况下,对多个样本数据中的第二目标数据进行第二修正,以得到第二修正后的多个样本数据,第二修正后的多个样本数据中的第一数据稳定,且第二修正后的多个样本数据中的每个因子对应的第二数据均稳定,第二目标数据为第一数据和n个第二数据中的任一个;基于第二修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
17.可选地,本技术实施例的敏感因子分析装置还包括:确定模块和删除模块;该确定模块,用于基于多个样本数据,从n个因子中确定至少一个可控因子,每个可控因子与代码问题率不独立且相关程度大于或等于第一相关阈值,且任意两个可控因子独立和/或相关程度小于或等于第二相关阈值;该删除模块,用于删除多个样本数据中除每个可控因子之外的因子对应的数据,得到更新后的多个样本数据;该构建模块,具体用于基于更新后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
18.可选地,该确定模块,具体用于在n个因子中包括互不独立和/或相关程度大于第二相关阈值的两个目标因子,且每个目标因子与代码问题率不独立且相关程度大于或等于第一相关阈值的情况下,将两个目标因子中与代码问题率相关程度较大的确定为一个可控因子。
19.第四方面,本技术实施例提供了一种敏感因子分析装置,该装置包括:获取模块和分析模块;该获取模块,用于获取代码问题率与至少一个可控因子的线性回归模型,其中,每个可控因子为影响代码问题率的一个因子,该线性回归模型是根据第一方面提供的任一种方法的步骤得到的;该分析模块,用于基于线性回归模型,对至少一个可控因子进行敏感度分析,确定影响代码问题率的至少一个敏感因子。
20.第五方面,本技术实施例提供了一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现第一方面和第二方面提供的任一种方法的步骤。
21.第六方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面和第二方面提供的任一种方法的步骤。
22.本技术实施例中,获取多个样本数据,其中,每个样本数据包括一个第一数据和n个第二数据,其中,第一数据用于指示对应的样本代码数据的代码问题率,每个第二数据用于指示对应的样本代码数据的一个度量指标,每个第二数据对应的度量指标为影响代码问
题率的一个因子,n为大于1的整数;基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型,该线性回归模型是从至少一个可控因子中确定影响代码问题率的至少一个敏感因子的模型,其中,每个可控因子为n个第二数据对应的n个因子中的一个。基于多个样本数据,构建出线性回归模型,使用线性回归模型对至少一个可控因子进行敏感度分析,最终得出至少一个敏感因子,即确定出对代码问题率影响最大的至少一个因子,根据确定的敏感因子可以得出显著提升代码质量的建议(如:代码行中的注释密度为最敏感因子,那么可以通过增加代码行的注释密度来显著提升代码质量),因此,根据确定的敏感因子修改代码可以有效降低代码问题率,提升代码质量,无需根据非敏感因子修改代码,节约了修改时间,由此,通过本方案可以得出影响代码质量的根本原因(即敏感因子),给出解决代码质量的根本性建议,帮助程序员显著提高代码质量,降低研发成本,使得提升代码质量的效率更高。
附图说明
23.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本公开的原理。
24.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
25.图1为本技术实施例提供的一种模型建立方法的流程示意图;
26.图2为本技术实施例提供的另一种模型建立方法的流程示意图;
27.图3为本技术实施例提供的又一种模型建立方法的流程示意图;
28.图4为本技术实施例提供的又一种模型建立方法的流程示意图;
29.图5为本技术实施例提供的又一种模型建立方法的流程示意图;
30.图6为本技术实施例提供的一种敏感因子分析方法的流程示意图;
31.图7为本技术实施例提供的一种分析影响代码问题率的因子的鱼骨图;
32.图8为本技术实施例提供的一种稳定性检验中异常点的示意图;
33.图9为本技术实施例提供的一种代码问题率的i-mr控制图;
34.图10为本技术实施例提供的一种可控因子的i-mr控制图;
35.图11为本技术实施例提供的另一种可控因子的i-mr控制图;
36.图12为本技术实施例提供的一种模型建立装置的结构示意图;
37.图13为本技术实施例提供的一种敏感因子分析装置的结构示意图;
38.图14为本技术实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
39.为了能够更清楚地理解本技术实施例的上述目的、特征和优点,下面将对本技术实施例的方案进行进一步描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
40.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本技术还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本技术的一部分实施
例,而不是全部的实施例。
41.以下通过几个具体的实施例,对本技术的技术方案进行详细的解释说明。
42.本技术实施例中,如图1所示,提供一种模型建立方法,该方法可以包括下述的步骤101至步骤102。
43.101、获取多个样本数据。
44.其中,每个样本数据包括一个第一数据和n个第二数据,其中,第一数据用于指示对应的样本代码数据的代码问题率,每个第二数据用于指示对应的样本代码数据的一个度量指标,每个第二数据对应的度量指标为影响代码问题率的一个因子,n为大于1的整数。
45.可以理解,一个样本代码数据是多行代码,根据样本代码数据基于代码问题率的计算公式计算得到一个第一数据,根据样本代码数据基于每个因子的计算公式计算得到多个第二数据。
46.示例性地,影响代码问题率的因子有:代码行中的重复行密度,代码行中的注释密度,代码行中的圈复杂度密度,代码行中的单元测试覆盖率;其中,各个因子的计算公式分别为:代码行中的重复行密度=新增代码重复行/新增代码行数,代码行中的注释密度=新增代码注释行数/新增代码行数,代码行中的圈复杂度密度=新增代码圈复杂度总和/新增代码行数,代码行中的单元测试覆盖率=新增单元测试覆盖行数/新增代码行数。
47.示例性地,代码问题率的计算公式为:代码问题率=新增代码问题数/新增代码行数,代码问题率越低,说明代码质量越高。
48.可以理解,代码问题率计算公式以及每个影响代码问题率的因子的计算公式中,分母可以是新增代码行数,还可以是其他预设的值,本技术实施例不做限定。
49.102、基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
50.其中,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型,该线性回归模型是从至少一个可控因子中确定影响代码问题率的至少一个敏感因子的模型,每个可控因子为n个第二数据对应的n个因子中的一个。
51.可选地,至少一个可控因子包括以下因子中的至少一个:代码行中的重复行密度,代码行中的注释密度,代码行中的圈复杂度密度,代码行中的单元测试覆盖率,代码行中的扇入扇出,代码行中的认知复杂度,代码行中的代码熵,代码行中的类密度。
52.可以理解,n个因子可以是预设的;也可以是通过综合分析代码得到影响代码问题率的n个因子(例如鱼骨图);还可以是通过展示预设的多个因子,根据用户选择确定n个因子;还可以是向用户展示通过综合分析代码得到影响代码问题率的多个因子(例如鱼骨图),根据用户选择确定的n个因子;具体根据实际情况确定,本技术实施例不做限定。
53.可以理解,用户选择时,可以依据菲尔德法、头脑风暴法或者专家法等方法选定n个因子,具体选定方法,本技术实施例不做限定。
54.可以理解,敏感因子指代码问题率对该因子变化比较敏感,即该因子改变,引起的代码问题率的变化较大。
55.示例性地,对于建立的线性回归模型,基于用蒙特卡洛模拟进行抽样,当抽样的次数较多时,可以采用正态分布进行抽样,即:使用每个可控因子对应的多个样本数据确定的正态分布的均值与标准差,限定抽样的范围进行抽样,当抽样的次数较少时,可以采用三角分布进行抽样,即:使用每个可控因子对应的多个样本数据的单值-移动极差图确定控制上
限、控制下限以及中心线,限定抽样的范围进行抽样;在可控因子包括:代码行中的重复行密度,代码行中的注释密度,代码行中的圈复杂度密度,代码行中的单元测试覆盖率时,则抽样得到的每组数据包括:代码行中的重复行密度,代码行中的注释密度,代码行中的圈复杂度密度,代码行中的单元测试覆盖率;将抽样得到的每组数据代入回归模型中,计算得到代码问题率,基于抽样得到的多组数据以及计算得到的代码问题率,确定各可控因子的方差贡献以及等级相关性,根据方差贡献率以及等级相关性确定至少一个敏感因子。
56.可选地,线性回归模型具有显著性,线性回归模型的回归系数均具有显著性,且线性回归模型的拟合优度大于或等于拟合优度阈值。
57.可以理解,线性回归模型具有显著性说明可靠性强,反之则不强,回归系数具有显著性说明每个可控因子对代码问题率具有显著影响。拟合优度用于说明回归直线对观测值的拟合程度,即线性回归模型确定的回归直线对样本数据的拟合程度,使用可决系数确定拟合优度的好坏,可决系数越接近1说明回归直线对观测值的拟合程度越好。拟合优度阈值根据实际情况确定,如拟合优度大于80%,即能够说明线性回归模型良好,拟合优度阈值的大小本技术实施例不做具体的限定。
58.本技术实施例中,获取多个样本数据,其中,每个样本数据包括一个第一数据和n个第二数据,其中,第一数据用于指示对应的样本代码数据的代码问题率,每个第二数据用于指示对应的样本代码数据的一个度量指标,每个第二数据对应的度量指标为影响代码问题率的一个因子,n为大于1的整数;基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型,该线性回归模型是从至少一个可控因子中确定影响代码问题率的至少一个敏感因子的模型,其中,每个可控因子为n个第二数据对应的n个因子中的一个。基于多个样本数据,构建出线性回归模型,使用线性回归模型对至少一个可控因子进行敏感度分析,最终得出至少一个敏感因子,即确定出对代码问题率影响最大的至少一个因子,根据确定的敏感因子可以得出显著提升代码质量的建议(如:代码行中的注释密度为最敏感因子,那么可以通过增加代码行的注释密度来显著提升代码质量),因此,根据确定的敏感因子修改代码可以有效降低代码问题率,提升代码质量,避免了根据非敏感因子修改代码,浪费大量时间的问题,由此,通过本方案可以得出影响代码质量的根本原因(即敏感因子),给出解决代码质量的根本性建议,帮助程序员显著提高代码质量,降低研发成本,使得提升代码质量的效率更高。
59.可选地,结合图1,如图2所示,上述步骤102具体可以通过下述步骤102a和步骤102b实现。
60.102a、确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布。
61.可以理解,基于服从正态分布的因变量(代码问题率)和自变量(可控因子)建立的回归方程,整个方程的显著性和拟合优度相对较好。
62.102b、在多个样本数据中的第一数据服从正态分布,且多个样本数据中的每个因子对应的第二数据均服从正态分布的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
63.可以理解,使用假设检验确定多个样本数据的第一数据和多个样本数据的每个因子对应的第二数据服从正态分布。
64.本技术实施例中,确定多个样本数据中的第一数据服从正态分布,且多个样本数据中的每个因子对应的第二数据均服从正态分布,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。由此,基于服从正态分布的因变量(代码问题率)和自变量(可控因子)建立的回归方程,整个方程的显著性和拟合优度相对较好。
65.可选地,如图2所示,上述步骤102a后,该方法还包括下述步骤102c和步骤102d。
66.102c、在多个样本数据中的第一目标数据不服从正态分布的情况下,对多个样本数据中的第一目标数据进行第一修正。
67.其中,在多个样本数据中的第一目标数据不服从正态分布的情况下,对多个样本数据中的第一目标数据进行第一修正,以得到第一修正后的多个样本数据,第一修正后的多个样本数据中的第一数据服从正态分布,且第一修正后的多个样本数据中的每个因子对应的第二数据均服从正态分布,第一目标数据为第一数据和n个第二数据中的任一个。
68.可以理解,多个样本数据中任一可控因子或者代码问题率对应的样本数据不服从正态分布时,对不服从正态分布的可多个样本数据进行第一修正,使得修正后的多个样本数据服从正态分布。
69.示例性地,获取的代码问题率的样本数据一组有12个数据,该12个数据不服从正态分布,对该12个数据进行第一修正后使其服从正态分布,获取的代码行中的重复行密度的样本数据一组有1212个数据,该12个数据不服从正态分布,对该12个数据进行第一修正后使其服从正态分布。
70.可以理解,第一修正可以是box-cox变换、对数变换、平方根变换、倒数变换、box-tidwell变换等变换方法,可以实现对不服从正态分布的数据在变换后服从正态分布的任一方法均可,本技术实施例不做限定。
71.102d、基于第一修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
72.本技术实施例中,通过对不满足正态分布的样本数据进行修正后使其满足正态分布,即对数据进行了清洗,使得基于清洗后的数据,构建的回归模型拟合优度更佳。
73.可选地,结合图1,如图3所示,上述步骤102,具体可以通过下述步骤102e和步骤102f实现。
74.102e、基于单值-移动极差检验法确定多个样本数据中的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定。
75.可以理解,基于一个可控因子对应的多个样本数据确定出单值的控制上限、中心线和控制下限以及移动极差的控制上限、中心线和控制下限,该可控因子对应的每个样本数据均在控制上限和控制下限之间;且该可控因子对应的每个样本数据中相邻两个数据的差的绝对值均在移动极差的控制上限和控制下限之间,则该可控因子对应的多个样本数据稳定。
76.可以理解,代码问题率对应的多个样本数据稳定性的确认,参考上述可控因子对应多个样本数据的稳定性的描述,此处不再赘述。
77.102f、在多个样本数据中的第一数据稳定,且多个样本数据中的每个因子对应的第二数据均稳定的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
78.本技术实施例中,基于单值-移动极差检验法确定多个样本数据中的第一数据稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据稳定,由此,确保了基于稳定性较好的代码问题率和可控因子建立的回归方程,整个方程的显著性和拟合优度相对较好。
79.可选地,如图3所示,上述步骤102e后,该方法还包括下述步骤102g和步骤102h。
80.102g、在多个样本数据中的第二目标数据不稳定的情况下,对多个样本数据中的第二目标数据进行第二修正。
81.其中,在多个样本数据中的第二目标数据不稳定的情况下,对多个样本数据中的第二目标数据进行第二修正,以得到第二修正后的多个样本数据,第二修正后的多个样本数据中的第一数据稳定,且第二修正后的多个样本数据中的每个因子对应的第二数据均稳定,第二目标数据为第一数据和n个第二数据中的任一个。
82.可以理解,第二修正是重新获取可控因子对应的多个样本数据或者删除可控因子对应的多个数据中的异常数据中的至少一个。
83.示例性地,对于获取的多行代码,基于代码行中的重复行密度的计算公式,计算得到多个反映代码行中的重复行密度的数据,该多个数值基于单值-移动极差检验法确定为不稳定,则重新获取多行代码(与上次获取的多行代码来源以及获取的对应行均相同),重新计算得到多个反映代码行中的重复行密度的数据,该多个数据作为第二修正后的数据。
84.可以理解,样本数据不稳定,说明数据中有异常点,异常点分为非自然错误和自然错误,非自然也就是人工错误,比如常见的数据输入错误,处理错误,抽样误差等,自然离群点就属于自然问题;如果是非自然错误则可以通过重新获取数据来调整错误,如果是自然错误,则需要根据实际设定,对这部分数据进行预设处理。
85.可以理解,如果样本数据不稳定,可以提示用户选择删除异常点或者重新获取数据,也可以时按照预设规则进行处理,具体地,本技术实施例不做限定。
86.可以理解,预设规则可以是:对于出现的多个异常点,先重新获取数据,再检验重新获取的数据是否稳定,如果重复获取预设阈值次数据,检验表明数据依旧不稳定,则通过预设删除规则对数据进行清洗,如:预设删除规则为:对出现异常的多个点,删除其中任一异常点后,进行稳定性验证,数据如果仍不稳定,则对出现异常的多个点,删除其中任意两个异常点后,进行稳定性验证,循环进行,直到数据稳定。
87.示例性地,有a,b两个异常点,预设阈值为3,重复获取三次数据,检验表明数据依旧不稳定;则先删除a,验证数据是否稳定,如果数据不稳定,保留a,删除b,验证数据是否稳定,如果数据不稳定,删除a和b,检验数据是否稳定。
88.102h、基于第二修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
89.本技术实施例中,基于单值-移动极差检验法确定多个样本数据中的第一数据或者基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据不稳定,通过对多个不稳定样本数据进行第二修正,使得修正后的多个样本数据稳定,由此,进一步对数据进行清洗,确保了基于稳定性较好的代码问题率和可控因子建立的回归方程,整个方程的显著性和拟合优度相对较好。
90.可以理解,上述步骤102a至步骤102h可以任意组合,具体地,本技术实施例不做限
定。示例性的,如图4所示,步骤110至步骤116为一种可选的组合方式。
91.110、获取多个样本数据。
92.111、确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布。
93.是则执行步骤113,否则执行步骤112和步骤113。
94.112、多个样本数据中的第一目标数据不服从正态分布,对多个样本数据中的第一目标数据进行第一修正。
95.113、基于单值-移动极差检验法确定多个样本数据张的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定。
96.是则执行步骤114,否则执行步骤115和116。
97.114、基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
98.115、多个样本数据中的第二目标数据不稳定,对多个样本数据中的第二目标数据进行第二修正。
99.116、基于第二修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
100.可选地,结合图1,如图5所示,上述步骤102具体可以通过下述步骤102i实现。
101.102i、基于多个样本数据,从n个因子中确定至少一个可控因子。
102.其中,每个可控因子与代码问题率不独立且相关程度大于或等于第一相关阈值,且任意两个可控因子独立和/或相关程度小于或等于第二相关阈值。
103.可以理解,需要建立的线性回归模型中,每个可控因子作为自变量,代码问题率作为因变量,要使线性回归模型以及线性回归模型的各回归系数具有显著性,则因变量与任一自变量之间必须不独立,各个因变量两两相互独立,因此,为了线性回归模型以及线性回归模型的回归系数均具有显著性,需要确保可控因子与代码问题率不独立,并且相关程度越大越好;任意两个可控因子独立,且相关性越小越好。
104.102j、删除多个样本数据中除每个可控因子之外的因子对应的数据,得到更新后的多个样本数据。
105.可以理解,对于任一与代码问题率不独立或者相关程度小于第一相关阈值可控因子,删除该可控因子对应的样本数据。
106.102k、基于更新后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
107.本技术实施例中,删除掉多个样本数据中除每个可控因子之外的因子对应的数据,得到更新后的多个样本数据,基于更新后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。确保了剩余的样本数据中,任一可控因子与代码问题率之间不独立且相关性大于或等于第一相关阈值,并且任意两个可控因子独立和/或相关程度小于或等于第二相关阈值,由此,通过更新样本数据,为构建拟合优度较好的线性回归模型建立了良好的基础。
108.可选地,上述步骤102i,具体可以通过下述步骤102i1实现。
109.102i1、在n个因子中包括互不独立和/或相关程度大于第二相关阈值的两个目标因子,且每个目标因子与代码问题率不独立且相关程度大于或等于第一相关阈值的情况
下,将两个目标因子中与代码问题率相关程度较大的确定为一个可控因子。
110.可以理解,对于任意两个互不独立的目标因子,或者相关程度大于第二相关阈值的目标因子,或者既互不独立且相关程度大于第二相关阈值的目标因子,但该两个目标因子与代码问题率之间不独立且相关程度大于或等于第一相关阈值,删除掉目标因子中与代码问题率相关程度较小的目标因子对应的样本数据,将目标因子中与代码问题率相关程度较大的目标因子保留,确定为可控因子。
111.本技术实施例中,在n个因子中包括互不独立和/或相关程度大于第二相关阈值的两个目标因子,且每个目标因子与代码问题率不独立且相关程度大于或等于第一相关阈值的情况下,将两个目标因子中与代码问题率相关程度较大的确定为一个可控因子。由此,删除掉目标因子中与代码问题率相关程度较小的目标因子对应的样本数据,将目标因子中与代码问题率相关程度较大的目标因子保留,确定为可控因子,为构建拟合优度较好的线性回归模型建立了良好的基础。
112.本技术实施例中,如图6所示,提供一种敏感因子分析方法,该方法可以包括下述的步骤201和步骤202。
113.201、获取代码问题率与至少一个可控因子的线性回归模型。
114.其中,每个可控因子为影响代码问题率的一个因子,该线性回归模型是根据上述模型建立方法得到的。
115.202、基于线性回归模型,对至少一个可控因子进行敏感度分析,确定影响代码问题率的至少一个敏感因子。
116.本技术实施例中,敏感因子分析方法的描述可以参照上述模型建立方法实施例的具体描述,且能达到相同的技术效果,为避免重复,此处不再赘述。
117.本技术实施例中,基于代码问题率与至少一个可控因子的线性回归模型,对至少一个可控因子进行敏感度分析,确定影响代码问题率的至少一个敏感因子;其中,每个可控因子为影响代码问题率的一个因子,线性回归模型是根据上述模型建立方法得到的。使用线性回归模型对至少一个可控因子进行敏感度分析,最终得出至少一个敏感因子,即确定出对代码问题率影响最大的至少一个因子,根据确定的敏感因子可以得出显著提升代码质量的建议(如:代码行中的注释密度为最敏感因子,那么可以通过增加代码行的注释密度来显著提升代码质量),由此,通过本方案可以得出影响代码质量的根本原因(即敏感因子),给出解决代码质量的根本性建议,帮助程序员显著提高代码质量,降低研发成本。
118.示例性地,下述步骤701至步骤706为一种可选地模型建立方法与敏感因子分析方法的具体实现过程。
119.701、使用sonar静态扫描确定影响代码质量的因子,基于获取的因子得到鱼骨图。
120.如图6所示,为影响代码问题率的因子的鱼骨图,由图7可知,影响代码问题率的因子有:代码行中的重复行密度,代码行中的注释密度,代码行中的圈复杂度密度,代码行中的单元测试覆盖率,代码行中的扇入扇出,代码行中的认知复杂度,代码行中的代码熵,代码行中的类密度。
121.702、向用户显示鱼骨图,用户基于鱼骨图中的因子选择了n个因子。
122.此处以用户选择了代码行中的重复行密度,代码行中的注释密度,代码行中的圈复杂度密度,代码行中的单元测试覆盖率四个因子为例进行说明。
123.其中,将代码问题率确定为因变量,即y值,将四个可控因子确定为自变量,即:x值,具体的计算公式为:(新增)代码问题率=新增代码问题数/新增代码行数,(新增)代码行中的重复行密度=新增代码重复行/新增代码行数,(新增)代码行中的注释密度=新增代码注释行数/新增代码行数,(新增)代码行中的圈复杂度密度=新增代码圈复杂度总和/新增代码行数,(新增)代码行中的单元测试覆盖率=新增单元测试覆盖行数/新增代码行数。
124.703、样本数据的正态性检验。
125.可以理解,使用假设检验验证样本数据的是否服从正态分布。
126.检验方法:
127.h0(原假设):数据正态分布;
128.h1(备择假设):数据非正态分布;
129.p值检验取0.05参考;
130.p值》0.05不拒绝原假设,数据正态分布;
131.如果p值《0.05,数据非正态,可对数据进行box-cox变换,使其达到线性模型的基本假定。
132.对所有样本数据分析得到如表1所示的正态分布参数统计表。
133.表1正态分布参数统计表
[0134] p值均值标准差代码问题率0.5122.0230.1233代码行中的重复行密度0.0803.0520.5411代码行中的注释密度0.8424.3510.6104代码行中的圈复杂度密度0.2601.0160.3412代码行中的单元测试覆盖率0.3740.29920.8868
[0135]
分析及结论:
[0136]
代码问题率:p=0.512》0.05不拒绝原假设,数据正态分布;代码行中的圈复杂度密度:p=0.260》0.05不拒绝原假设,数据正态分布;代码行中的单元测试覆盖率:p=0.374》0.05不拒绝原假设,数据正态分布;代码行中的重复行密度:p=0.08》0.05不拒绝原假设,数据正态分布;代码行中的注释密度:p=0.842》0.05不拒绝原假设,数据正态分布。
[0137]
703、样本数据的稳定性检验。
[0138]
可以理解,单值的控制上限:单值的中心线:单值的控制下限:移动极差的控制上限:移动极差的中心线:移动极差的控制下限:其中,e2、d4、d3为计算控制限用的系数,可以查阅控制限系数表得到。
[0139]
检验标准:k值标准下各个规则虚发警报的概率接近。例如:第一条规则,有一个点落在正负3倍标准差的概率为99.73,落在控制线外的概率为1-99.73%=0.27%,则第ⅰ类错误,虚发警报的概率为0.27%,正常点判异的概率很小。其他规则类比,均可计算出来。具体的k值标准检验规则如表2所示。
[0140]
表2 k值标准检验规则表
[0141]
执行所有特殊原因检验k1个点,距离中心线大于k个标准差3连续k点在中心线同一侧9连续k个点,全部递增或全部递减6连续k个点,上下交错14k 1个点中有k个点,距离中心线(同侧)大于2个标准差2k 1个点中有k个点,距离中心线(同侧)大于1个标准差4连续k个点,距离中心线(任一侧)1个标准差以内15可连续k个点,距离中心线(任一侧)大于1个标准差8
[0142]
如图8所示,为示例性地不满足k值标准检验规则的异常点,如标号701,表明单点调出c区,即不满足如表2所示的规则一:1个点,距离中心线距离大于k个标准差;标号702,表明3个点中的2个点掉出b区,即不满足如表2所示的规则五:k 1个点中有k个点,距离中心线(同侧)大于2个标准差;标号703,表明9个连续的点在中线的同一侧,即不满足如表2所示的规则二:连续k点在中心线的同一侧;如标号704,表明5个中的4个点在b区,即不满足如表2所示的规则六:k 1个点中有k个点,距离中心线(同侧)大于1个标准差。
[0143]
如图9、图10和图11所示,为代码问题率以及四个可控因子的i-mr控制图,由图9、图10和图11可以得出结论,所有样本数据稳定可控。
[0144]
704、样本数据的相关性检验。
[0145]
检验标准:基于p值的假设检验,
[0146]
h0(原假设):数据间相互独立;
[0147]
h1(备择假设):数据间不独立。
[0148]
先看p值,p值小于0.05,拒绝原假设,选择备择假设,数据间不独立;p值大于0.05,不拒绝原假设,数据间独立;再看pearson相关系数,0.0-0.2极弱相关或无相关,0.2-0.4弱相关,0.4-0.6为中等程度相关,0.6-0.8为强相关,0.8-1.0极强相关;正号为正相关,负号为负相关。变量和自变量之间数据不独立且具有强相关性,数据可用来做多元线性回归方程,各个自变量之间数据独立,不存在强相关关系,数据可以用来做多元线性回归方程。
[0149]
y和x分析:代码问题率和代码行中的圈复杂度密度:p=0.000《0.05,数据不独立,pearson相关系数=0.91,极强相关并且为正相关;代码问题率和代码行中的单元测试覆盖率:p=0.000《0.05,数据不独立,pearson相关系数=-0.934,极强相关并且为负相关;代码问题率和代码行中的重复行密度:p=0.000《0.05,数据不独立,pearson相关系数=0.944,极强相关并且为正相关;代码问题率和代码行中的注释密度:p=0.000《0.05,数据不独立,pearson相关系数=-0.965,极强相关并且为负相关。
[0150]
y和x结论:变量和自变量之间样本数据不独立且具有强相关性,样本数据可用来做多元线性回归方程。
[0151]
x和x分析:代码行中的圈复杂密度和代码行中的单元测试覆盖率:p=0.149》0.05,数据独立;代码行中的圈复杂密度和代码行中的重复行密度:p=0.128》0.05,数据独立;代码行中的圈复杂密度和代码行中的注释密度:p=0.296》0.05,数据独立;代码行中的单元测试覆盖率和代码行中的重复行密度:p=0.319》0.05,数据独立;代码行中的单元测试覆盖率和代码行中的注释密度:p=0.243》0.05,数据独立;代码行中的重复行密度和代
码行中的注释密度:p=0.215》0.05,数据独立。
[0152]
x和x结论:各个自变量之间样本数据独立,不存在强相关关系,样本数据可以用来做多元线性回归方程。
[0153]
705、基于样本数据构建回归方程。
[0154]
基于最小二乘法构建回归方程,基于假设检验确定回归方程和可控因子的显著性。
[0155]
分析及结论:如表3所示,整个方程的显著性看f检验的p值,p=0.000《0.05说明回归方程显著,可控因子的回归系数的p值也都小于0.05,说明变量是显著的,不需要从方程中剔除,可以做保留。回归方程的拟合优度为94.77%,说明方程拟合得很好,模型可以解释80%的问题。
[0156]
表3 p值统计表
[0157] p值回归方程0代码行中的重复行密度0.012代码行中的注释密度0.018代码行中的圈复杂度密度0.034代码行中的单元测试覆盖率0.029
[0158]
其中,拟合优度是指回归直线对观测值的拟合程度,度量拟合优度的统计量是可决系数(也叫确定系数)r2。r2最大值为1,r2的值越接近1,说明回归直线对观测值的拟合程度越好;反之,r2的值越小,说明回归直线对观测值的拟合程度越差。
[0159]
调整后的拟合优度(规避了当多一个自变量加入模型时,不管这个变量影响是否显著,回归平方和都会增大的问题),91.78%说明模型依旧很好,而且和94.77%的差距不大,模型符合数学规范。
[0160]
在应用过程中发现,如果在模型中增加一个解释变量,拟合优度往往增大。这就给人一个错觉,要使得模型拟合得好,只要增加解释变量即可。但是现实情况是,增加解释变量个数引起的r2增大和拟合好坏无关,所以r2需调整。在样本容量一定的情况下,增加解释变量必定会使自由度减少,所以调整的思路是:将残差平方和与总离差平方和分别除以各自的自由度,以剔除变量个数对拟合优度的影响。即调整后的可决系数的计算公式为:
[0161][0162]
其中:n-k-1为残差平方和的自由度,n-1为总体平方和的自由度。
[0163]
最终得到的回归方程为:代码问题率=1.211-0.886代码行中的注释密度-1.098代码行中的单元测试覆盖率 0.315代码行中的圈复杂度密度 0.476代码行中的重复行密度。
[0164]
706、各可控因子敏感度分析。
[0165]
示例性地,采用正态分布用蒙特卡洛模拟进行抽样,抽样次数为10万次,抽样的范围限制如表4所示。
[0166]
表4正态分布抽样的范围限制表
[0167] 均值标准差代码行中的重复行密度3.0520.541代码行中的注释密度4.3510.610代码行中的圈复杂度密度1.0160.341代码行中的单元测试覆盖率0.8870.299
[0168]
结论与分析:敏感度判定标准依据方差贡献率,如表5所示,为敏感度分析数据。
[0169]
表5敏感度分析数据
[0170] 方差贡献率等级相关代码行中的重复行密度36.10%0.58代码行中的注释密度46.70%-0.66代码行中的圈复杂度密度0.90%-0.09代码行中的单元测试覆盖率16.20%0.39
[0171]
由表5可以得出:代码行中的注释密度为负相关最敏感因子,即可以通过增加注释行降低代码问题率,提升代码质量;代码行中的重复行密度为正相关最敏感因子,即可以通过减少代码行中的重复行密度降低代码问题率,提升代码质量;由此,在后续代码更新中,可以通过改变这两项可控因子,来降低代码问题率,达到代码质量提升的效果。并且,本技术实施例中,根据提出的提升代码质量的建议,通过对照组数据的双t检验,发现达到了预期技术效果,代码问题率明显减低,代码质量有明显的提升。
[0172]
本技术实施例还提供一种模型建立装置,图12为本技术实施例提供的一种敏感因子分析装置的结构示意图,如图12所示,该装置包括:获取模块1201和构建模块1202;该获取模块1201,用于获取多个样本数据,每个样本数据包括一个第一数据和n个第二数据,其中,第一数据用于指示对应的样本代码数据的代码问题率,每个第二数据用于指示对应的样本代码数据的一个度量指标,每个第二数据对应的度量指标为影响代码问题率的一个因子,n为大于1的整数;该构建模块1202,用于基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型,该线性回归模型是从至少一个可控因子中确定影响代码问题率的至少一个敏感因子的模型,每个可控因子为n个第二数据对应的n个因子中的一个。
[0173]
可选地,该构建模块1202,具体用于确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布;在多个样本数据中的第一数据服从正态分布,且多个样本数据中的每个因子对应的第二数据均服从正态分布的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
[0174]
可选地,该构建模块1202,具体用于在确定多个样本数据中的第一数据是否服从正态分布,以及确定多个样本数据中的每个因子对应的第二数据是否服从正态分布之后,在多个样本数据中的第一目标数据不服从正态分布的情况下,对多个样本数据中的第一目标数据进行第一修正,以得到第一修正后的多个样本数据,第一修正后的多个样本数据中的第一数据服从正态分布,且第一修正后的多个样本数据中的每个因子对应的第二数据均服从正态分布,第一目标数据为第一数据和n个第二数据中的任一个;基于第一修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
[0175]
可选地,该构建模块1202,具体用于基于单值-移动极差检验法确定多个样本数据
中的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定;在多个样本数据中的第一数据稳定,且多个样本数据中的每个因子对应的第二数据均稳定的情况下,基于多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
[0176]
可选地,该构建模块1202,具体用于在基于单值-移动极差检验法确定多个样本数据中的第一数据是否稳定,以及基于单值-移动极差检验法确定多个样本数据中的每个因子对应的第二数据是否稳定之后,在多个样本数据中的第二目标数据不稳定的情况下,对多个样本数据中的第二目标数据进行第二修正,以得到第二修正后的多个样本数据,第二修正后的多个样本数据中的第一数据稳定,且第二修正后的多个样本数据中的每个因子对应的第二数据均稳定,第二目标数据为第一数据和n个第二数据中的任一个;基于第二修正后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
[0177]
可选地,本技术实施例的敏感因子分析装置还包括:确定模块1203和删除模块1204;该确定模块1203,用于基于多个样本数据,从n个因子中确定至少一个可控因子,每个可控因子与代码问题率不独立且相关程度大于或等于第一相关阈值,且任意两个可控因子独立和/或相关程度小于或等于第二相关阈值;该删除模块1204,用于删除多个样本数据中除每个可控因子之外的因子对应的数据,得到更新后的多个样本数据;该构建模块1202,具体用于基于更新后的多个样本数据,构建代码问题率与至少一个可控因子的线性回归模型。
[0178]
可选地,该确定模块1203,具体用于在n个因子中包括互不独立和/或相关程度大于第二相关阈值的两个目标因子,且每个目标因子与代码问题率不独立且相关程度大于或等于第一相关阈值的情况下,将两个目标因子中与代码问题率相关程度较大的确定为一个可控因子。
[0179]
需要说明的是:如图12所示,模型建立装置1200中一定包括的模块用实线框示意,如获取模块1201和构建模块1202;数据处理装置1200中可以包括也可以不包括的模块用虚线框示意,如确定模块1203和删除模块1204。
[0180]
本公开提供的模型建立装置,可用于执行上述方法实施例的步骤,其实现原理和技术效果类似,此处不再赘述。
[0181]
需要说明的是,上述模型建立装置可以为本技术上述方法实施例中的电子设备,也可以是该电子设备中能够实现该装置实施例功能的功能模块和/或功能实体,本技术实施例不做限定。
[0182]
本技术实施例中,各模块可以实现上述方法实施例提供的模型建立方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0183]
本技术实施例还提供一种敏感因子分析装置,如图13所示,该敏感因子分析装置包括获取模块301和分析模块302;该获取模块301,用于获取代码问题率与至少一个可控因子的线性回归模型,其中,每个可控因子为影响代码问题率的一个因子,线性回归模型是根据模型建立方法得到的。该分析模块302,用于基于线性回归模型,对至少一个可控因子进行敏感度分析,确定影响代码问题率的至少一个敏感因子。
[0184]
本技术实施例中,各模块可以实现上述方法实施例提供的敏感因子分析方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0185]
本技术实施例还提供一种电子设备,如图14所示,该电子设备可以包括:处理器401,存储器402以及存储在存储器402上并可在处理器401上运行的程序或指令,该程序或指令被处理器401执行时可以实现上述方法实施例提供的模型建立方法或敏感因子分析方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0186]
本技术实施例提供一种可读存储介质,该可读存储介质上存储程序或指令,该程序或指令被处理器执行时实现上述方法实施例提供的模型建立方法或敏感因子分析方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0187]
本技术实施例还提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序或指令,当该计算机程序产品在处理器上运行时,使得处理器执行该计算机程序或指令,实现上述方法实施例提供的模型建立方法或敏感因子分析方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0188]
本技术实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述模型建立方法或敏感因子分析方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0189]
应理解,本技术实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
[0190]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置,服务器和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0191]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0192]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0193]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0194]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前
述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。