[发明专利]一种基于代码表示学习的即时软件缺陷预测方法有效
申请号: | 202010665255.5 | 申请日: | 2020-07-11 |
公开(公告)号: | CN111858323B | 公开(公告)日: | 2021-06-01 |
发明(设计)人: | 祝永滕;刘望舒;刘学军 | 申请(专利权)人: | 南京工业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 田凌涛 |
地址: | 210000 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 代码 表示 学习 即时 软件 缺陷 预测 方法 | ||
本发明涉及一种基于代码表示学习的即时软件缺陷预测方法,借助自然语言模型思想,解决了传统神经网络无法解决长距离依赖的问题;首先审查代码变更信息,分解成提交信息和代码变更两部分;接着编码代码变更信息,得到基于单词嵌入、段落嵌入和位置嵌入等词向量序列;然后利用注意力机制构建Transformer编码器模型;最后预训练之前的编码序列,构建基于代码表示学习的代码缺陷预测模型。本发明相较现有技术,应用注意力机制的优势,构造出Transformer编码器作为模型进行两项预训练任务,使得生成的语言模型更加健壮,能更好地表示代码变更信息,进而提高软件缺陷的检测率。
技术领域
本发明涉及一种基于代码表示学习的即时软件缺陷预测方法,属于软件工程中的软件分析及缺陷预测技术领域。
背景技术
软件缺陷预测技术诞生于20世纪70年代,主要作用是为了降低软件的测试成本,同时进一步保障软件的开发质量。近些年来,软件领域发展迅速,国内外对高质量软件的需求也大幅增长。随着软件的开发越来越复杂,软件开发过程中耦合度急速增长也产生了极大的隐患。软件系统作为推动我国经济和社会发展的重要组成部分,在面临上述隐患时将会对企业和人民产生巨大影响。为了提高软件系统的质量,开发人员需要在测试或调试过程中投入大量的精力。然而,在大多数情况下,开发人员精力有限而且他们的测试成本高昂,因此直接通过人工审查的方式,已难以保证软件测试的及时性和准确性。于是学者们提出了软件缺陷预测技术来帮助开发人员确定软件中是否存在可能的缺陷问题。与软件缺陷预测相关的专利主要有:基于深度神经网络和概率决策森林的软件缺陷预测模型(公开号CN 109446090);一种基于卷积神经网络的软件缺陷预测方法(公开号CN 108829607)等。
在之前的研究中,机器学习技术已广泛应用于软件的缺陷预测任务中,相关工作大都集中于设计并提取软件系统中的度量特征,例如用于度量代码复杂程度的McCabe度量特征,以此构建基于软件度量特征的预测分类模型。为了在开发过程中更早地预测软件项目模块内是否存在缺陷,一种在代码变更提交时就能进行软件缺陷预测的方法被提出,一般称其为即时软件缺陷预测。即时软件缺陷预测可以帮助软件开发人员快速缩小软件系统中最可能包含缺陷的代码搜索范围。2013年Kamei等人在代码变更级别上从五个角度手动提取了14个人工特征,包括修改子系统、文件或目录的数量、添加或删除的代码行数、当前和上次修改某些文件的平均时间间隔等,并采用逻辑回归来做软件缺陷预测任务,实验结果表明代码变更提交后进行的缺陷预测也同样有效,大大节约了软件的测试时间和成本。但是现有传统深度学习的软件缺陷预测方法中,存在着无法处理长距离依赖性的问题,该问题在软件系统中,特别是单个源代码文件内常常出现,例如方法的调用可能相隔上千行代码,由此便导致了长距离依赖问题。
发明内容
本发明所要解决的技术问题是提供一种基于代码表示学习的即时软件缺陷预测方法,借助自然语言模型思想,缓解代码中经常存在的长距离现象,能够有效提升即时软件缺陷预测的准确率。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种基于代码表示学习的即时软件缺陷预测方法,用于针对对应代码库中各软件源代码的各变更修改,实现代码缺陷预测;包括代码缺陷预测模型构建方法,以及应用代码缺陷预测模型针对待检测变更修改实现缺陷检测;其中,代码缺陷预测模型构建方法包括如下步骤:
步骤A.选择预设数量的各类型代码缺陷、并将已提交至代码库的各个变更修改,作为各个变更修改样本,并分别针对各个变更修改样本,将变更修改样本分解为提交信息与各个代码变更信息,进而获得各变更修改样本分别所对应的提交信息与各个代码变更信息,然后进入步骤B;
步骤B.分别针对各个变更修改样本,针对变更修改样本所对应的提交信息与各个代码变更信息进行编码,获得提交信息与各个代码变更信息分别所对应的单词序列,进而获得各变更修改样本分别所对应的各个单词序列,然后进入步骤C;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京工业大学,未经南京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010665255.5/2.html,转载请声明来源钻瓜专利网。