本发明属于数据处理领域,涉及一种基于代码变更的方法层即时软件缺陷预测方法及相关装置。
背景技术:
1、随着互联网的快速发展,软件已成为人们生活中不可或缺的必备工具。然而,随着用户需求的不断提高,应用程序的各种功能需要不断更新。例如,在软件的版本迭代过程中,由于一些不可控因素,新版本应用程序发布后可能会引入缺陷,从而影响软件质量。因此,在发布新版本之前,通过合理的检测方式及时发现缺陷并反馈给相关开发人员进行修复已成为一项迫切需要解决的问题。
2、为了降低软件缺陷所带来的成本并提升软件质量,研究人员提出了基于变更级的软件缺陷预测方法。相较于预测文件或模块的缺陷倾向性,即时软件缺陷预测可以帮助开发人员检查更少的风险变更,使他们更快地发现缺陷,并且由于即时缺陷预测技术具有细粒度、即时性和易追溯的特点,尤其适用于频繁进行更新且涉及大量的代码提交的软件产品。然而,目前的即时软件缺陷预测技方法的粒度普遍位于变更层,在涉及较大规模代码变更的情况下,基于变更层粒度的即时软件缺陷预测方法仍然难以帮助开发人员迅速定位缺陷。
技术实现思路
1、本发明的目的在于克服上述现有技术的缺点,提供一种基于代码变更的方法层即时软件缺陷预测方法及相关装置。
2、为达到上述目的,本发明采用以下技术方案予以实现:
3、本发明第一方面,提供一种基于代码变更的方法层即时软件缺陷预测方法,包括:获取待检测软件的git代码变更信息;根据git代码变更信息提取变更层度量元和方法层度量元;基于变更层度量元和方法层度量元,调用预设的基于代码变更的方法层即时软件缺陷预测模型,得到待检测软件的缺陷预测结果。
4、可选的,所述根据git代码变更信息提取变更层度量元和方法层度量元包括:根据git代码变更信息,通过git仓库日志分析工具pydriller提取变更层度量元,通过软件度量元提取工具ck提取方法层度量元。
5、可选的,所述基于代码变更的方法层即时软件缺陷预测模型由下述方式得到:获取待检测软件的git仓库;根据待检测软件的git仓库提取变更层度量元样本以及方法层度量元样本;根据变更层度量元样本,结合正则表达式提取含有缺陷关键字的变更hash;根据含有缺陷关键字的变更hash,采用缺陷标注算法识别含有缺陷的代码行,得到缺陷代码行并进行溯源,得到首次引入缺陷代码行的变更层度量元样本,并将该变更层度量元样本的标注设定为有缺陷;提取缺陷代码行所在的上下文并通过静态代码分析工具获得抽象语法树,以及对抽象语法树进行深度优先遍历,得到引入缺陷的方法层度量元样本,并将该方法层度量元样本的标注设定为有缺陷;根据变更层度量元样本、方法层度量元样本、变更层度量元样本的标注以及方法层度量元样本的标注构建训练集,并根据训练集训练预设的分类器模型,得到基于代码变更的方法层即时软件缺陷预测模型。
6、可选的,所述采用缺陷标注算法识别含有缺陷的代码行包括:采用b-szz缺陷标注算法识别含有缺陷的代码行。
7、可选的,所述通过静态代码分析工具获得抽象语法树包括:使用antlr工具获取待检测软件的编程语言语法规则,并根据待检测软件的编程语言语法规则对缺陷代码行所在的上下文进行解析获得抽象语法树。
8、可选的,所述预设的分类器模型为随机森林分类器模型。
9、本发明第二方面,提供一种基于代码变更的方法层即时软件缺陷预测系统,包括:数据获取模块,用于获取待检测软件的git代码变更信息;数据处理模块,用于根据git代码变更信息提取变更层度量元和方法层度量元;缺陷检测模块,用于基于变更层度量元和方法层度量元,调用预设的基于代码变更的方法层即时软件缺陷预测模型,得到待检测软件的缺陷预测结果。
10、可选的,所述基于代码变更的方法层即时软件缺陷预测模型由下述方式得到:获取待检测软件的git仓库;根据待检测软件的git仓库提取变更层度量元样本以及方法层度量元样本;根据变更层度量元样本,结合正则表达式提取含有缺陷关键字的变更hash;根据含有缺陷关键字的变更hash,采用缺陷标注算法识别含有缺陷的代码行,得到缺陷代码行并进行溯源,得到首次引入缺陷代码行的变更层度量元样本,并将该变更层度量元样本的标注设定为有缺陷;提取缺陷代码行所在的上下文并通过静态代码分析工具获得抽象语法树,以及对抽象语法树进行深度优先遍历,得到引入缺陷的方法层度量元样本,并将该方法层度量元样本的标注设定为有缺陷;根据变更层度量元样本、方法层度量元样本、变更层度量元样本的标注以及方法层度量元样本的标注构建训练集,并根据训练集训练预设的分类器模型,得到基于代码变更的方法层即时软件缺陷预测模型。
11、本发明第三方面,提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于代码变更的方法层即时软件缺陷预测方法的步骤。
12、本发明第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于代码变更的方法层即时软件缺陷预测方法的步骤。
13、与现有技术相比,本发明具有以下有益效果:
14、本发明基于代码变更的方法层即时软件缺陷预测方法,首先获取待检测软件的git代码变更信息,然后提取待检测软件的git代码变更信息的变更层度量元和方法层度量元,进而将变更层度量元和方法层度量元,输入至预设的基于代码变更的方法层即时软件缺陷预测模型进行分析,得到待检测软件的缺陷预测结果。本发明方法能够在更细粒度的方法层进行预测,及时避免开发人员在提交代码阶段引入缺陷,有助于更好地保障软件产品的质量与可靠性,有效克服现有的即时缺陷预测方法的预测粒度普遍位于变更层,在涉及较大规模代码变更的情况下,变更层粒度的缺陷预测难以帮助开发人员迅速定位的缺陷。同时,结合变更层度量元和方法层度量元,充分利用了多种细粒度的软件度量元的信息,基于代码变更的方法层即时软件缺陷预测模型能够更好地学习到更细粒度的缺陷信息,从而提升软件缺陷预测的准确性和效率。
1.一种基于代码变更的方法层即时软件缺陷预测方法,其特征在于,包括:
2.根据权利要求1所述的基于代码变更的方法层即时软件缺陷预测方法,其特征在于,所述根据git代码变更信息提取变更层度量元和方法层度量元包括:
3.根据权利要求1所述的基于代码变更的方法层即时软件缺陷预测方法,其特征在于,所述基于代码变更的方法层即时软件缺陷预测模型由下述方式得到:
4.根据权利要求3所述的基于代码变更的方法层即时软件缺陷预测方法,其特征在于,所述采用缺陷标注算法识别含有缺陷的代码行包括:
5.根据权利要求3所述的基于代码变更的方法层即时软件缺陷预测方法,其特征在于,所述通过静态代码分析工具获得抽象语法树包括:
6.根据权利要求3所述的基于代码变更的方法层即时软件缺陷预测方法,其特征在于,所述预设的分类器模型为随机森林分类器模型。
7.一种基于代码变更的方法层即时软件缺陷预测系统,其特征在于,包括:
8.根据权利要求7所述的基于代码变更的方法层即时软件缺陷预测系统,其特征在于,所述基于代码变更的方法层即时软件缺陷预测模型由下述方式得到:
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述基于代码变更的方法层即时软件缺陷预测方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于代码变更的方法层即时软件缺陷预测方法的步骤。