本技术涉及人工智能,特别是涉及一种代码质量评估模型的训练、代码质量评估方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术:
1、代码是按照一定的程序设计语言规范编写的、由字符和符号等组成的文本。随着程序项目开发的大型化和复杂化,一个程序项目往往由大量的代码构成,同时,程序项目代码的编写通常是由多个程序开发人员共同协作完成,存在很多影响代码质量的因素,如不同程序开发人员编写的代码的功能的衔接问题、编写风格的统一问题等。
2、而在软件开发过程中,代码质量往往直接影响着软件的可维护性、性能以及安全性。如何对编写的代码的质量进行评价成为了一个问题。相关技术中,往往是对全量代码的测试脚本依次进行测试,再根据全部测试脚本的测试结果评估代码质量,无法准确地评估代码质量。
3、因此,相关技术中存在着代码质量评估不准确的问题。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高代码质量评估的准确性的代码质量评估模型的训练、代码质量评估方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本技术提供了一种代码质量评估模型的训练方法,包括:
3、获取训练样本代码在各代码质量评估指标下对应的指标数据;所述训练样本代码为已修复代码问题的应用程序代码;所述已修复代码问题为采用预设的代码扫描规则在样本应用程序检测出的且已经修复好的代码问题;
4、各所述代码质量评估指标包括问题难度指标和问题修复成本指标;所述问题修复成本指标对应的指标数据包括所述代码扫描规则对应的规则修复评估时间,以及所述代码扫描规则针对所述样本应用程序中的代码问题的规则平均修复时间;
5、采集所述已修复代码问题对应的实际修复时间,并根据所述实际修复时间,以及所述训练样本代码在各所述代码质量评估指标下对应的指标数据,对待训练的代码质量评估模型进行训练,得到目标代码质量评估模型;所述目标代码质量评估模型用于预测待测应用程序对应的代码技术债务率。
6、在其中一个实施例中,所述根据所述实际修复时间,以及所述训练样本代码在各所述代码质量评估指标下对应的指标数据,对待训练的代码质量评估模型进行训练,得到目标代码质量评估模型,包括:
7、将各所述指标数据输入至所述待训练的代码质量评估模型,通过所述待训练的代码质量评估模型预测所述已修复代码问题在所述代码扫描规则下的代码问题修复时间,得到所述已修复代码问题在所述代码扫描规则下对应的预测修复时间;
8、根据所述预测修复时间和所述实际修复时间的差异,对所述待训练的代码质量评估模型进行训练,得到所述目标代码质量评估模型。
9、在其中一个实施例中,所述根据所述预测修复时间和所述实际修复时间的差异,对所述待训练的代码质量评估模型进行训练,得到所述目标代码质量评估模型,包括:
10、根据所述差异,对所述待训练的代码质量评估模型的模型参数进行更新;所述模型参数包括各所述代码质量评估指标对应的权重;
11、重新训练模型参数更新后的代码质量评估模型,直到训练后的代码质量评估模型满足预设的训练结束条件,得到所述目标代码质量评估模型。
12、在其中一个实施例中,所述规则修复评估时间为预先评估出的采用所述代码扫描规则在所述样本应用程序中检测出的代码问题的平均修复时间;
13、所述获取训练样本代码在各代码质量评估指标下对应的指标数据,包括:
14、获取所述样本应用程序在所述代码扫描规则下对应的已修复代码问题数量和未修复代码问题数量,以及所述已修复代码问题对应的实际平均修复时间;
15、根据所述已修复代码问题数量和所述实际平均修复时间的乘积结果,以及所述未修复代码问题数量和所述规则修复评估时间的乘积结果,以及代码问题总数,得到所述规则平均修复时间。
16、在其中一个实施例中,所述代码扫描规则存在至少两个,所述样本应用程序存在至少两个;所述对待训练的代码质量评估模型进行训练,得到目标代码质量评估模型,包括:
17、将同一代码扫描规则下的各所述样本应用程序对应的指标数据和实际修复时间,作为一个训练单元;
18、根据各所述代码扫描规则对应的训练单元,对所述待训练的代码质量评估模型进行训练,得到所述目标代码质量评估模型。
19、第二方面,本技术还提供了一种代码质量评估方法,所述方法包括:
20、根据目标代码扫描规则在待测应用程序对应的测试程序代码中扫描出的代码问题,获取所述测试程序代码在各代码质量评估指标下对应的指标数据;
21、各所述代码质量评估指标包括问题难度指标和问题修复成本指标;所述问题修复成本指标对应的指标数据包括所述目标代码扫描规则对应的规则修复评估时间,以及所述目标代码扫描规则针对所述测试程序代码中的代码问题的规则平均修复时间;
22、将各所述代码质量评估指标下对应的指标数据,输入至目标代码质量评估模型,通过所述目标代码质量评估模型预测所述测试程序代码中的未修复代码问题的修复时间,得到所述待测应用程序对应的代码技术债务率;所述代码技术债务率用于评估所述待测应用程序的代码质量;所述目标代码质量评估模型为根据如权利要求1至5中任一项所述的代码质量评估模型的训练方法得到的。
23、在其中一个实施例中,所述目标代码扫描规则存在多个;所述未修复代码问题包括各所述目标代码扫描规则在所述测试程序代码中检测出的未修复的代码问题;
24、所述将各所述代码质量评估指标下对应的指标数据,输入至目标代码质量评估模型,通过所述目标代码质量评估模型预测所述测试程序代码中的未修复代码问题的修复时间,得到所述待测应用程序对应的代码技术债务率,包括:
25、将每个目标代码扫描规则下的与各所述代码质量评估指标下对应的指标数据,输入至目标代码质量评估模型,通过所述目标代码质量评估模型预测所述测试程序代码中的未修复代码问题的修复时间,得到各所述目标代码扫描规则下的未修复代码问题对应的预测修复时间;
26、根据各所述目标代码扫描规则下的未修复代码问题对应的预测修复时间,与所述测试程序代码对应的代码编写成本时间,得到所述待测应用程序对应的代码技术债务率。
27、第三方面,本技术还提供了一种代码质量评估模型的训练装置,包括:
28、训练数据获取模块,用于获取训练样本代码在各代码质量评估指标下对应的指标数据;所述训练样本代码为已修复代码问题的应用程序代码;所述已修复代码问题为采用预设的代码扫描规则在样本应用程序检测出的且已经修复好的代码问题;
29、所述代码质量评估指标包括问题难度指标和问题修复成本指标;所述问题修复成本指标对应的指标数据包括所述代码扫描规则对应的规则修复评估时间,以及所述代码扫描规则针对所述样本应用程序中的代码问题的规则平均修复时间;
30、训练模块,用于采集所述已修复代码问题对应的实际修复时间,并根据所述实际修复时间,以及所述训练样本代码在各所述代码质量评估指标下对应的指标数据,对待训练的代码质量评估模型进行训练,得到目标代码质量评估模型;所述目标代码质量评估模型用于预测待测应用程序对应的代码技术债务率。
31、第四方面,本技术还提供了一种代码质量评估装置,包括:
32、待测数据获取模块,用于根据目标代码扫描规则在待测应用程序对应的测试程序代码中扫描出的代码问题,获取所述测试程序代码在各代码质量评估指标下对应的指标数据;
33、各所述代码质量评估指标包括问题难度指标和问题修复成本指标;所述问题修复成本指标对应的指标数据包括所述目标代码扫描规则对应的规则修复评估时间,以及所述目标代码扫描规则针对所述测试程序代码中的代码问题的规则平均修复时间;
34、预测模块,用于将各所述代码质量评估指标下对应的指标数据,输入至目标代码质量评估模型,通过所述目标代码质量评估模型预测所述测试程序代码中的未修复代码问题的修复时间,得到所述待测应用程序对应的代码技术债务率;所述代码技术债务率用于评估所述待测应用程序的代码质量;所述目标代码质量评估模型为根据所述的代码质量评估模型的训练方法得到的。
35、第五方面,本技术还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如第一方面或第一方面的任一种可能实现方式所述的代码质量评估模型的训练方法的步骤,和/或,如第二方面或第二方面的任一种可能实现方式所述的代码质量评估方法的步骤。
36、第六方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面的任一种可能实现方式所述的代码质量评估模型的训练方法的步骤,和/或,如第二方面或第二方面的任一种可能实现方式所述的代码质量评估方法的步骤。
37、第七方面,本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面或第一方面的任一种可能实现方式所述的代码质量评估模型的训练方法的步骤,和/或,如第二方面或第二方面的任一种可能实现方式所述的代码质量评估方法的步骤。
38、上述代码质量评估模型的训练方法、装置、计算机设备、存储介质和计算机程序产品,通过获取训练样本代码在各代码质量评估指标下对应的指标数据;训练样本代码为已修复代码问题的应用程序代码;已修复代码问题为采用预设的代码扫描规则在样本应用程序检测出的且已经修复好的代码问题;各代码质量评估指标包括问题难度指标和问题修复成本指标;问题修复成本指标对应的指标数据包括代码扫描规则对应的规则修复评估时间,以及代码扫描规则针对样本应用程序中的代码问题的规则平均修复时间;采集已修复代码问题对应的实际修复时间,并根据实际修复时间,以及训练样本代码在各代码质量评估指标下对应的指标数据,对待训练的代码质量评估模型进行训练,得到目标代码质量评估模型;目标代码质量评估模型用于预测待测应用程序对应的代码技术债务率。
39、如此,通过设定多个和代码质量评估相关的可度量的代码质量评估指标,通过获取训练样本代码在各代码质量评估指标下对应的指标数据;其中,代码质量评估指标包括问题难度指标和问题修复成本指标;问题修复成本指标对应的指标数据包括代码扫描规则对应的规则修复评估时间,以及代码扫描规则针对样本应用程序中的代码问题的规则平均修复时间,然后,采用训练样本代码中的已修复代码问题对应的实际修复时间,以及各代码质量评估指标下对应的指标数据,对待训练的代码质量评估模型进行训练,使得训练后得到的目标代码质量评估模型可以通过多维度的指标数据,更加准确地量化待测应用程序对应的代码技术债务率,使得预测出的代码技术债务率可以更加准确地表征待测应用程序的代码质量,有效提升了代码质量评估的准确性。
1.一种代码质量评估模型的训练方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述实际修复时间,以及所述训练样本代码在各所述代码质量评估指标下对应的指标数据,对待训练的代码质量评估模型进行训练,得到目标代码质量评估模型,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述预测修复时间和所述实际修复时间的差异,对所述待训练的代码质量评估模型进行训练,得到所述目标代码质量评估模型,包括:
4.根据权利要求1所述的方法,其特征在于,所述规则修复评估时间为预先评估出的采用所述代码扫描规则检测出的代码问题的平均修复时间;
5.根据权利要求1所述的方法,其特征在于,所述代码扫描规则存在至少两个,所述样本应用程序存在至少两个;所述对待训练的代码质量评估模型进行训练,得到目标代码质量评估模型,包括:
6.一种代码质量评估方法,其特征在于,所述方法包括:
7.根据权利要求6所述的方法,其特征在于,所述目标代码扫描规则存在多个;所述未修复代码问题包括各所述目标代码扫描规则在所述测试程序代码中检测出的未修复的代码问题;
8.一种代码质量评估模型的训练装置,其特征在于,所述装置包括:
9.一种代码质量评估装置,其特征在于,所述装置包括:
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤,和/或,如权利要求6至7中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤,和/或,如权利要求6至7中任一项所述的方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤,和/或,如权利要求6至7中任一项所述的方法的步骤。