[发明专利]一种基于深度学习与程序合成的C/C++程序缺陷自动修复方法有效

专利信息
申请号: 201810727406.8 申请日: 2018-07-05
公开(公告)号: CN108829438B 公开(公告)日: 2020-04-07
发明(设计)人: 王林章;周风顺;李宣东 申请(专利权)人: 南京大学
主分类号: G06F8/72 分类号: G06F8/72;G06F8/30
代理公司: 南京知识律师事务所 32207 代理人: 张苏沛
地址: 210023 江苏*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 深度 学习 程序 合成 c++ 缺陷 自动 修复 方法
【权利要求书】:

1.一种基于深度学习与程序合成的C/C++程序缺陷自动修复方法,输入带有缺陷的C/C++程序、错误定位信息、程序需要满足的规约以及满足相同规约正确程序集,通过学习正确程序中的书写结构,建立一个正确书写结构模型;根据错误定位信息,将错误点之前的代码结构作为模型的输入,预测错误点的书写结构,扩展成修复候选项集,并组织成选择表达式的形式;使用程序合成方法,将带有选择表达式的程序和该程序需要满足的规约转化为逻辑表达式,使用约束求解器,在设定的时间内进行求解;根据每个选择表达式的选项,输出最终的C/C++代码,即得到修复后的程序;其特征在于,包括以下步骤:

步骤1)输入带有缺陷的C/C++程序及其需要满足的规约,并输入该程序的缺陷定位信息,表示为{d1d2...dk};

步骤2)输入满足相同规约的正确程序集{p1p2...pn},将其转化成线性序列集{l1l2...ln},学习其中的书写结构,构建书写结构模型,具体步骤如下:

步骤2.1)将正确的C/C++程序解析为抽象语法树;

步骤2.2)先序遍历抽象语法树,将抽象语法树转化为抽象线性序列,并添加“{”、“}”将抽象语法树中每个中间节点包裹起来;

步骤2.3)将正确程序集{p1p2...pn}转化成线性序列集{l1l2...ln},并截取固定长度序列作为训练数据;采用长短期记忆网络,利用梯度下降优化算法训练全部数据,得到书写结构模型;

步骤3)根据书写结构模型,将缺陷位置之前的代码转化所得的抽象线性序列作为模型的输入,预测缺陷处的语句结构,扩展语句结构并产生修复候选项,具体步骤如下:

步骤3.1)对于缺陷位置di,将该缺陷位置之前的代码转化为抽象线性序列;

步骤3.2)将转化后的抽象线性序列作为书写结构模型的输入,预测缺陷位置di处语句可能的书写结构;

步骤3.3)用程序当前可见的变量名扩展预测到的书写结构,得到多种修复候选项,分别记为ci1ci2...ciu,并组织为选择表达式的形式;

步骤3.4)对每一个缺陷位置,重复步骤3.1-步骤3.3,为每一个缺陷位置产生一组修复候选项;

步骤4)利用程序合成方法,为每一个缺陷位置选择修复选项,得到修复后的程序,具体步骤如下:

步骤4.1)将缺陷程序、缺陷定位信息以及修复后选项结合,得到扩展的带有选择表达式的C/C++程序;

步骤4.2)将程序需要满足的规约作为约束,运用程序合成技术求解扩展的带有选择表达式的C/C++程序,为每一处选择表达式确定最终的选项,得到c1c2...ck

步骤4.3)根据每一处选择表达式的选项,替换对应的选择表达式,得到修复后的程序。

2.根据权利要求1所述的基于深度学习与程序合成的C/C++程序缺陷自动修复方法,其特征在于:学习正确程序的书写结构,本方法能够修复C/C++程序的常见缺陷。

3.根据权利要求1所述的基于深度学习与程序合成的C/C++程序缺陷自动修复方法,其特征在于:本方法能够在多项式的时间复杂度内实现缺陷修复。

4.根据权利要求1所述的基于深度学习与程序合成的C/C++程序缺陷自动修复方法,其特征在于:本方法使用程序合成方法,根据程序需要满足的规约,实现缺陷修复,保证修复后程序的正确性。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201810727406.8/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top