[发明专利]基于学习算法实现缺陷修复推荐的方法在审
申请号: | 201910623765.3 | 申请日: | 2019-07-11 |
公开(公告)号: | CN110442514A | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 孙小兵;朱轩锐;李斌 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62;G06N3/04;G06N3/08 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 马鲁晋 |
地址: | 225009*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 修复 编辑操作 源代码 缺陷修复 向量特征 学习算法 细粒度 映射 语句 过滤 训练神经网络 筛选 抽象语法树 上下文关系 代码分析 模型特征 缺陷代码 语句识别 语义特征 解析器 抽象 后代 | ||
本发明公开了一种基于学习算法实现缺陷修复推荐的方法,包括以下步骤:针对收集的bug修复前和修复后的源代码,分别通过GumTree进行抽象语法树AST提取,获得bug修复前、修复后代码各自的AST编辑操作序列;对AST编辑操作序列进行筛选过滤;结合筛选过滤后的AST编辑操作序列,利用解析器抽象bug修复前和修复后的源代码,并分别映射为向量特征表示;根据映射后的向量特征表示训练神经网络,获得缺陷语句识别模型,由此识别出缺陷语句;基于源代码的语义特征为识别出的缺陷语句推荐修复方案。本发明方法根据代码之间的AST编辑操作,通过细粒度的代码分析实现模型特征表示,并联系上下文关系对缺陷代码进行定位,能获得具有细粒度性质的修复推荐方案,使得修复更加准确。
技术领域
本发明属于软件维护领域,特别是一种基于学习算法实现缺陷修复推荐的方法。
背景技术
对于软件而言,修复缺陷是一项很耗时的任务。随着软件产品的规模和复杂性增长,缺陷是一个不可避免的问题。由于需求理解的偏差、开发过程的不合理或开发人员的经验不足等原因,都有可能产生软件缺陷。当开发人员面对大量缺陷时,如果能够根据缺陷代码实现修复方案的推荐,则可以大幅提高开发人员修复缺陷的效率。
自动程序修复问题是当前软件维护领域中的一个研究热点,国内外研究人员对该问题展开了深入的研究。已有的自动程序修复方法可以简单分为基于测试用例的自动程序修复和其他类型的自动程序修复方法。其他类型的自动程序修复方法是借助基于前置条件/后置条件的契约或缺陷报告等信息来对候选补丁的正确性进行评估。当开发人员没有足够的时间完成所有缺陷的人工修复时,借助自动程序修复方法可以为一些缺陷程序自动生成临时补丁,随后开发人员可以参考这些临时补丁,借助人工方式来进一步提高补丁的质量。目前自动修复方法相对有限,且对开发人员的专业知识要求比较高,对于确认可接受的修复模式或转换需要耗费大量的时间;并且自动修复方法生成程序员可接受的补丁会存在问题,比如文章[Qi,Z.,Long,F.,Achour,S.,and Rinard,M.An analysis of patchplausibility and correctness for generate-and-validate patch generationsystems.ISSTA’15.],其由删除功能块或通过在测试用例上过载来实现修复的技术产生的大多数报告的补丁都是不正确的。
目前深度学习技术广泛应用于缺陷定位、缺陷预测和缺陷修复。在基于深度学习的自动缺陷修复中,普遍使用学习代码转换或者学习历史提交以生成补丁,虽然能够产生足够正确的代码转换变体或补丁且不再需要人工去选择,但是缺陷修复正确率在45%左右,正确率还是比较低的,且在完成大量缺陷数据修复时存在困难。在真实的缺陷代码修复中,通过错误代码转换的自动修复仍需要进一步研究。
发明内容
本发明的目的在于提供一种为开发人员提供缺陷修复方案,提高开发人员缺陷修复效率及质量的缺陷修复推荐方法。
实现本发明目的的技术解决方案为:基于学习算法实现缺陷修复推荐的方法,包括以下步骤:
步骤1、针对收集的bug修复前和修复后的源代码,分别通过GumTree进行抽象语法树AST提取,获得bug修复前、修复后代码各自的AST编辑操作序列;
步骤2、对AST编辑操作序列进行筛选过滤;
步骤3、结合筛选过滤后的AST编辑操作序列,利用解析器抽象bug修复前和修复后的源代码,并分别映射为向量特征表示;
步骤4、根据映射后的向量特征表示训练神经网络,获得缺陷语句识别模型,由此识别出缺陷语句;
步骤5、基于源代码的语义特征为步骤4识别出的缺陷语句推荐修复方案。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910623765.3/2.html,转载请声明来源钻瓜专利网。