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.当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面任意一项所述的代码质量的检测方法。
52.本技术第四方面提供了一种计算机存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如第一方面任意一项所述的代码质量的检测法。
53.由以上方案可知,本技术提供一种代码质量的检测方法、装置、电子设备及计算机存储介质,所述代码质量的检测方法包括:在接收目标产品名称以及第一任务编号后;首先,根据所述目标产品名称确定代码信息;其中,所述代码信息包括代码复杂度、代码单元测试覆盖率、代码修改时间、代码行数、函数行数和第二任务编号;然后,根据所述第一任务编号所属任务与所述第二任务编号所属任务,生成目标程序清单;再针对所述目标程序清单中的每一个目标程序,将所述目标程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到所述目标程序的推荐度得分;其中,所述预测模型由训练样本集对神经网络模型进行训练得到;所述训练样本集包括至少一个训练样本程序;所述训练样本程序分为正训练样本程序和负训练样本程序;所述正训练样本程序为不需要复查的训练样本程序;所述负训练样本程序为需要复查的训练样本程序;所述目标程序的推荐度得分越高,说明所述目标程序中的代码越需要复查。从而达到准确的对代码质量进行检测,及时得出需要进行复查的程序的代码的目的。
附图说明
54.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
55.图1为本技术实施例提供的一种代码质量的检测方法的具体流程图;
56.图2为本技术另一实施例提供的一种确定代码信息的流程图;
57.图3为本技术另一实施例提供的一种确生成目标程序清单的流程图;
58.图4为本技术另一实施例提供的一种预测模型的构建方法的流程图;
59.图5为本技术另一实施例提供的一种代码质量的检测装置的示意图;
60.图6为本技术另一实施例提供的一种第一确定单元的示意图;
61.图7为本技术另一实施例提供的一种第一生成单元的示意图;
62.图8为本技术另一实施例提供的一种预测模型的构建单元的示意图;
63.图9为本技术另一实施例提供的一种实现代码质量的检测方法的电子设备的示意图。
具体实施方式
64.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
65.需要注意,本技术中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单
元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系,而术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
66.本技术实施例提供了一种代码质量的检测方法,如图1所示,具体包括以下步骤:
67.s101、接收目标产品名称以及第一任务编号。
68.s102、根据目标产品名称确定代码信息。
69.其中,代码信息包括代码复杂度、代码单元测试覆盖率、代码修改时间、代码行数、函数行数和第二任务编号。
70.可选的,在本技术的另一实施例中,步骤s102的一种实施方式,如图2所示,包括:
71.s201、根据目标产品名称在代码质量系统中查询得到产品的第一代码信息。
72.其中,第一代码信息包括:代码复杂度和代码单元测试覆盖率。代码质量系统可以是但不限于sonar系统等,此处不做限定,主要用于扫描代码。
73.s202、根据目标产品名称在分布式版本控制系统中查询得到产品的第二代码信息。
74.其中,第二代码信息包括:代码修改时间、代码行数、函数行数和第二任务编号。分布式版本控制系统可以是但不限于git等,此处不做限定,主要用于管理代码。
75.s103、根据第一任务编号所属任务与第二任务编号所属任务,生成目标程序清单。
76.可选的,在本技术的另一实施例中,步骤s103的一种实施方式,如图3所示,包括:
77.s301、将第二任务编号所属任务与第一任务编号所属任务相同的程序,筛选至第一程序清单中。
78.s302、在任务管理系统中查询得到,第一任务编号对应的版本提交时间。
79.s303、在第一程序清单中,筛选得到晚于版本提交时间的至少一个目标程序,生成目标程序清单。
80.s104、针对目标程序清单中的每一个目标程序,将目标程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到目标程序的推荐度得分。
81.其中,预测模型由训练样本集对神经网络模型进行训练得到;训练样本集包括至少一个训练样本程序;训练样本程序分为正训练样本程序和负训练样本程序;正训练样本程序为不需要复查的训练样本程序;负训练样本程序为需要复查的训练样本程序;目标程序的推荐度得分越高,说明目标程序中的代码越需要复查。
82.可选的,在本技术的另一实施例中,预测模型的构建方法的一种实施方式,如图4所示,包括:
83.s401、构建训练样本集。
84.其中,训练样本集包括至少一个训练样本程序;训练样本程序分为正训练样本程序和负训练样本程序;正训练样本程序为不需要复查的训练样本程序;负训练样本程序为需要复查的训练样本程序。
85.s402、在训练样本集中,随机抽选一个训练样本程序,作为目标训练样本程序。
86.需要说明的是,在使用随机抽选的训练样本程序对神经网络模型进行训练后,还可以再次随机抽选一个训练样本程序对神经网络模型继续进行训练,且可以理解的是,使用的训练样本程序越多,训练得到的神经网络模型,即预测模型越精确。
87.s403、将目标训练样本程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至神经网络模型中,输出得到预测推荐度得分。
88.其中,预测推荐度得分越高,说明目标训练样本程序中的代码越需要复查。
89.s404、根据预测推荐度得分,生成预测结果。
90.其中,若预测推荐度得分大于预设值时,则生成表明目标训练样本程序中的代码需要复查的预测结果;若预测推荐度得分不大于预设值时,则生成表明目标训练样本程序中的代码不需要复查的预测结果。
91.s405、判断预测结果与真实结果之间的误差是否满足预设的收敛条件。
92.其中,若目标训练样本程序是正训练样本程序,则真实结果为目标训练样本程序为不需要复查的训练样本程序;若目标训练样本程序是负样本文本,则真实结果为目标训练样本程序为需要复查的训练样本程序。
93.需要说明的是,预设的收敛条件由技术人员、专家组、有权限的相关人员等进行设定更改,此处不做限定。
94.具体的,若判断出预测结果与真实结果之间的误差满足预设的收敛条件时,则执行步骤s406;若判断出预测结果与真实结果之间的误差不满足预设的收敛条件时,则执行步骤s407。
95.s406、将神经网络模型确定为预测模型。
96.s407、对神经网络模型进行调整。
97.需要说明的是,在本技术的具体实现过程中,不仅限于利用预设的收敛条件对模型进行修改、还可以设置一定的最大迭代次数,对模型进行训练,此处不做限定。
98.可选的,在本技术的另一实施例中,代码质量的检测方法的一种实施方式,还包括:
99.将所有目标程序的推荐度得分进行降序排序,输出预设个数的目标程序,生成代码复查清单。
100.其中,预设个数由技术人员或相关有权限的工作人员进行预先设定、更改,此处不做先点。
101.可选的,在本技术的另一实施例中,代码质量的检测方法的一种实施方式,还包括:
102.输出代码复查清单中的每一个目标程序对应的回归测试案例。
103.其中,目标程序对应的回归测试案例为预先存储的,可以在得到代码复查清单中,快速的得到代码复查清单中的每一个目标程序对应的回归测试案例,从而第一时间可以进行回归测试,进而降低系统投产风险,有利于质量管理。
104.由以上方案可知,本技术提供一种代码质量的检测方法:在接收目标产品名称以及第一任务编号后;首先,根据目标产品名称确定代码信息;其中,代码信息包括代码复杂度、代码单元测试覆盖率、代码修改时间、代码行数、函数行数和第二任务编号;然后,根据第一任务编号所属任务与第二任务编号所属任务,生成目标程序清单;再针对目标程序清
单中的每一个目标程序,将目标程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到目标程序的推荐度得分;其中,预测模型由训练样本集对神经网络模型进行训练得到;训练样本集包括至少一个训练样本程序;训练样本程序分为正训练样本程序和负训练样本程序;正训练样本程序为不需要复查的训练样本程序;负训练样本程序为需要复查的训练样本程序;目标程序的推荐度得分越高,说明目标程序中的代码越需要复查。从而达到准确的对代码质量进行检测,及时得出需要进行复查的程序的代码的目的。
105.本发明提供的发明名称可用于金融领域或其他领域,例如,可用于金融领域中的金融程序代码检查应用场景。其他领域为除金融领域之外的任意领域,例如,代码检查领域、神经网络领域等。上述仅为示例,并不对本发明提供的发明名称的应用领域进行限定。
106.在本技术的另一实施例中,代码质量的检测装置的一种实施方式,如图5所示,包括:
107.接收单元501,用于接收目标产品名称以及第一任务编号。
108.第一确定单元502,用于根据目标产品名称确定代码信息。
109.其中,代码信息包括代码复杂度、代码单元测试覆盖率、代码修改时间、代码行数、函数行数和第二任务编号。
110.可选的,在本技术的另一实施例中,第一确定单元502的一种实施方式,如图6所示,包括:
111.第一查询单元601,用于根据目标产品名称在代码质量系统中查询得到产品的第一代码信息。
112.其中,第一代码信息包括:代码复杂度和代码单元测试覆盖率。
113.第二查询单元602,用于根据目标产品名称在分布式版本控制系统中查询得到产品的第二代码信息。
114.其中,第二代码信息包括:代码修改时间、代码行数、函数行数和第二任务编号。
115.本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图2所示,此处不再赘述。
116.第一生成单元503,用于根据第一任务编号所属任务与第二任务编号所属任务,生成目标程序清单。
117.可选的,在本技术的另一实施例中,第一生成单元503的一种实施方式,如图7所示,包括:
118.筛选单元701,用于将第二任务编号所属任务与第一任务编号所属任务相同的程序,筛选至第一程序清单中。
119.第三查询单元702,用于在任务管理系统中查询得到,第一任务编号对应的版本提交时间。
120.第一生成子单元703,用于在第一程序清单中,筛选得到晚于版本提交时间的至少一个目标程序,生成目标程序清单。
121.本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图3所示,此处不再赘述。
122.预测单元504,用于针对目标程序清单中的每一个目标程序,将目标程序的函数行
数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到目标程序的推荐度得分。
123.其中,预测模型由训练样本集对神经网络模型进行训练得到;训练样本集包括至少一个训练样本程序;训练样本程序分为正训练样本程序和负训练样本程序;正训练样本程序为不需要复查的训练样本程序;负训练样本程序为需要复查的训练样本程序;目标程序的推荐度得分越高,说明目标程序中的代码越需要复查。
124.本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图1所示,此处不再赘述。
125.可选的,在本技术的另一实施例中,预测模型的构建单元的一种实施方式,如图8所示,包括:
126.样本构建单元801,用于构建训练样本集。
127.其中,训练样本集包括至少一个训练样本程序;训练样本程序分为正训练样本程序和负训练样本程序;正训练样本程序为不需要复查的训练样本程序;负训练样本程序为需要复查的训练样本程序。
128.抽取单元802,用于在训练样本集中,随机抽选一个训练样本程序,作为目标训练样本程序。
129.输入单元803,用于将目标训练样本程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至神经网络模型中,输出得到预测推荐度得分。
130.其中,预测推荐度得分越高,说明目标训练样本程序中的代码越需要复查。
131.处理单元804,用于根据预测推荐度得分,生成预测结果。
132.其中,若预测推荐度得分大于预设值时,则生成表明目标训练样本程序中的代码需要复查的预测结果;若预测推荐度得分不大于预设值时,则生成表明目标训练样本程序中的代码不需要复查的预测结果。
133.调整单元805,用于利用预测结果与真实结果之间的误差,对神经网络模型中的参数进行不断调整,直至调整后的神经网络模型输出的预测推荐度得分得到的预测结果与真实结果之间的误差满足预设的收敛条件时,将调整后的神经网络模型确定为预测模型。
134.其中,若目标训练样本程序是正训练样本程序,则真实结果为目标训练样本程序为不需要复查的训练样本程序;若目标训练样本程序是负样本文本,则真实结果为目标训练样本程序为需要复查的训练样本程序。
135.本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图4所示,此处不再赘述。
136.可选的,在本技术的另一实施例中,代码质量的检测装置的一种实施方式,还包括:
137.第二生成单元,用于将所有目标程序的推荐度得分进行降序排序,输出预设个数的目标程序,生成代码复查清单。
138.本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,此处不再赘述。
139.可选的,在本技术的另一实施例中,代码质量的检测装置的一种实施方式,还包括:
140.输出单元,用于输出代码复查清单中的每一个目标程序对应的回归测试案例。
141.本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,此处不再赘述。
142.由以上方案可知,本技术提供一种代码质量的检测装置:在接收单元501接收目标产品名称以及第一任务编号后;首先,第一确定单元502根据目标产品名称确定代码信息;其中,代码信息包括代码复杂度、代码单元测试覆盖率、代码修改时间、代码行数、函数行数和第二任务编号;然后,第一生成单元503根据第一任务编号所属任务与第二任务编号所属任务,生成目标程序清单;预测单元504针对目标程序清单中的每一个目标程序,将目标程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到目标程序的推荐度得分。其中,预测模型由训练样本集对神经网络模型进行训练得到;训练样本集包括至少一个训练样本程序;训练样本程序分为正训练样本程序和负训练样本程序;正训练样本程序为不需要复查的训练样本程序;负训练样本程序为需要复查的训练样本程序;目标程序的推荐度得分越高,说明目标程序中的代码越需要复查。从而达到准确的对代码质量进行检测,及时得出需要进行复查的程序的代码的目的。
143.本技术另一实施例提供了一种电子设备,如图9所示,包括:
144.一个或多个处理器901。
145.存储装置902,其上存储有一个或多个程序。
146.当所述一个或多个程序被所述一个或多个处理器901执行时,使得所述一个或多个处理器901实现如上述实施例中任意一项所述的重金属产品的展示方法。
147.本技术另一实施例提供了一种计算机存储介质,其上存储有计算机程序,其中,计算机程序被处理器执行时实现如上述实施例中任意一项所述的重金属产品的展示方法。
148.在本技术公开的上述实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
149.另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,直播设备,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,
random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
150.专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:1.一种代码质量的检测方法,其特征在于,包括:接收目标产品名称以及第一任务编号;根据所述目标产品名称确定代码信息;其中,所述代码信息包括代码复杂度、代码单元测试覆盖率、代码修改时间、代码行数、函数行数和第二任务编号;根据所述第一任务编号所属任务与所述第二任务编号所属任务,生成目标程序清单;针对所述目标程序清单中的每一个目标程序,将所述目标程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到所述目标程序的推荐度得分;其中,所述预测模型由训练样本集对神经网络模型进行训练得到;所述训练样本集包括至少一个训练样本程序;所述训练样本程序分为正训练样本程序和负训练样本程序;所述正训练样本程序为不需要复查的训练样本程序;所述负训练样本程序为需要复查的训练样本程序;所述目标程序的推荐度得分越高,说明所述目标程序中的代码越需要复查。2.根据权利要求1所述的检测方法,其特征在于,所述根据所述目标产品名称确定代码信息,包括:根据所述目标产品名称在代码质量系统中查询得到所述产品的第一代码信息;其中,所述第一代码信息包括:代码复杂度和代码单元测试覆盖率;根据所述目标产品名称在分布式版本控制系统中查询得到所述产品的第二代码信息;其中,所述第二代码信息包括:代码修改时间、代码行数、函数行数和第二任务编号。3.根据权利要求1所述的检测方法,其特征在于,所述根据所述第一任务编号所属任务与所述第二任务编号所属任务,生成目标程序清单,包括:将所述第二任务编号所属任务与第一任务编号所属任务相同的程序,筛选至第一程序清单中;在任务管理系统中查询得到,所述第一任务编号对应的版本提交时间;在所述第一程序清单中,筛选得到晚于所述版本提交时间的至少一个目标程序,生成目标程序清单。4.根据权利要求1所述的检测方法,其特征在于,所述预测模型的构建方法,包括:构建训练样本集;其中,所述训练样本集包括至少一个训练样本程序;所述训练样本程序分为正训练样本程序和负训练样本程序;所述正训练样本程序为不需要复查的训练样本程序;所述负训练样本程序为需要复查的训练样本程序;在所述训练样本集中,随机抽选一个训练样本程序,作为目标训练样本程序;将所述目标训练样本程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至神经网络模型中,输出得到预测推荐度得分;其中,所述预测推荐度得分越高,说明所述目标训练样本程序中的代码越需要复查;根据所述预测推荐度得分,生成预测结果;其中,若预测推荐度得分大于预设值时,则生成表明所述目标训练样本程序中的代码需要复查的预测结果;若预测推荐度得分不大于预设值时,则生成表明所述目标训练样本程序中的代码不需要复查的预测结果;利用所述预测结果与真实结果之间的误差,对所述神经网络模型中的参数进行不断调整,直至调整后的所述神经网络模型输出的预测推荐度得分得到的预测结果与真实结果之间的误差满足预设的收敛条件时,将所述调整后的神经网络模型确定为预测模型;其中,若所述目标训练样本程序是正训练样本程序,则所述真实结果为所述目标训练样本程序为不
需要复查的训练样本程序;若所述目标训练样本程序是负样本文本,则所述真实结果为所述目标训练样本程序为需要复查的训练样本程序。5.根据权利要求1所述的检测方法,其特征在于,所述根据所述目标程序的风险度,确定所述目标程序的推荐度得分之后,还包括:将所有目标程序的推荐度得分进行降序排序,输出预设个数的目标程序,生成代码复查清单。6.根据权利要求1所述的检测方法,其特征在于,所述将所有目标程序的推荐度得分进行降序排序,输出预设个数的目标程序,生成代码复查清单之后,还包括:输出所述代码复查清单中的每一个目标程序对应的回归测试案例。7.一种代码质量的检测装置,其特征在于,包括:接收单元,用于接收目标产品名称以及第一任务编号;第一确定单元,用于根据所述目标产品名称确定代码信息;其中,所述代码信息包括代码复杂度、代码单元测试覆盖率、代码修改时间、代码行数、函数行数和第二任务编号;第一生成单元,用于根据所述第一任务编号所属任务与所述第二任务编号所属任务,生成目标程序清单;预测单元,用于针对所述目标程序清单中的每一个目标程序,将所述目标程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到所述目标程序的推荐度得分;其中,所述预测模型由训练样本集对神经网络模型进行训练得到;所述训练样本集包括至少一个训练样本程序;所述训练样本程序分为正训练样本程序和负训练样本程序;所述正训练样本程序为不需要复查的训练样本程序;所述负训练样本程序为需要复查的训练样本程序;所述目标程序的推荐度得分越高,说明所述目标程序中的代码越需要复查。8.根据权利要求7所述的检测装置,其特征在于,所述第一确定单元,包括:第一查询单元,用于根据所述目标产品名称在代码质量系统中查询得到所述产品的第一代码信息;其中,所述第一代码信息包括:代码复杂度和代码单元测试覆盖率;第二查询单元,用于根据所述目标产品名称在分布式版本控制系统中查询得到所述产品的第二代码信息;其中,所述第二代码信息包括:代码修改时间、代码行数、函数行数和第二任务编号。9.一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至6中任一所述的代码质量的检测方法。10.一种计算机存储介质,其特征在于,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至6中任一所述的代码质量的检测方法。
技术总结本申请提供一种代码质量的检测方法、装置、电子设备及计算机存储介质,可应用于金融领域或其他领域,该方法包括:在接收目标产品名称以及第一任务编号后;首先,根据目标产品名称确定代码信息;其中,代码信息包括第二任务编号;然后,根据第一任务编号所属任务与第二任务编号所属任务,生成目标程序清单;再针对目标程序清单中的每一个目标程序,将目标程序的函数行数、代码行数、代码单元测试覆盖率和代码复杂度输入至预测模型中,得到目标程序的推荐度得分;其中,预测模型由训练样本集对神经网络模型进行训练得到;训练样本集包括至少一个训练样本程序;目标程序的推荐度得分越高,说明目标程序中的代码越需要复查。说明目标程序中的代码越需要复查。说明目标程序中的代码越需要复查。
技术研发人员:李健保 刘旭锦 林灿发 李明
受保护的技术使用者:中国银行股份有限公司
技术研发日:2022.04.08
技术公布日:2022/7/5