[发明专利]基于学习算法实现缺陷修复推荐的方法在审
申请号: | 201910623765.3 | 申请日: | 2019-07-11 |
公开(公告)号: | CN110442514A | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 孙小兵;朱轩锐;李斌 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62;G06N3/04;G06N3/08 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 马鲁晋 |
地址: | 225009*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 修复 编辑操作 源代码 缺陷修复 向量特征 学习算法 细粒度 映射 语句 过滤 训练神经网络 筛选 抽象语法树 上下文关系 代码分析 模型特征 缺陷代码 语句识别 语义特征 解析器 抽象 后代 | ||
1.一种基于学习算法实现缺陷修复推荐的方法,其特征在于,包括以下步骤:
步骤1、针对收集的bug修复前和修复后的源代码,分别通过GumTree进行抽象语法树AST提取,获得bug修复前、修复后代码各自的AST编辑操作序列;
步骤2、对AST编辑操作序列进行筛选过滤;
步骤3、结合筛选过滤后的AST编辑操作序列,利用解析器抽象bug修复前和修复后的源代码,并分别映射为向量特征表示;
步骤4、根据映射后的向量特征表示训练神经网络,获得缺陷语句识别模型,由此识别出缺陷语句;
步骤5、基于源代码的语义特征为步骤4识别出的缺陷语句推荐修复方案。
2.根据权利要求1所述的基于学习算法实现缺陷修复推荐的方法,其特征在于,步骤1所述对源代码进行AST提取,提取的AST的节点类型包括:
(1)方法调用和类实例创建节点;
(2)方法声明、类型声明和枚举声明节点;
(3)控制流节点,包括while语句、catch语句、if语句以及throw语句。
3.根据权利要求1所述的基于学习算法实现缺陷修复推荐的方法,其特征在于,步骤2所述筛选过滤具体为:滤除语法错误以及出现频率低于设定阈值的AST编辑操作序列。
4.根据权利要求1所述的基于学习算法实现缺陷修复推荐的方法,其特征在于,步骤3所述利用解析器抽象bug修复前和修复后的源代码,并分别映射为向量特征表示,具体为:
步骤3-1、利用分析器将源代码生成标记流;
步骤3-2、将标记流回馈到解析器中,对源代码中的每个标识符/文字产生一个唯一的ID并进行映射。
5.根据权利要求1所述的基于学习算法实现缺陷修复推荐的方法,其特征在于,步骤4所述神经网络具体为循环神经网络RNN。
6.根据权利要求1所述的基于学习算法实现缺陷修复推荐的方法,其特征在于,步骤5所述基于代码的语义特征为缺陷语句推荐修复方案,具体为:
根据缺陷语句在源代码中的上下文,结合下表1的细粒度修复模式,推荐相应的修复方案:该缺陷语句中X存在问题需修复或该缺陷语句中X的Y存在问题需修复,其中X、Y为①至中的任意一个;
表1 bug的修复模式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910623765.3/1.html,转载请声明来源钻瓜专利网。