基于缺陷上下文深度学习的程序修复方法

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:y567843241
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
由于近些年来软件程序应用领域逐渐扩大,这便导致软件规模也会随之变大。因为程序中日渐增加的缺陷会导致程序运行时出现错误的频率越来越大,这种缺陷程序存在的隐患将会影响到整个软件领域。所以,尽可能提前的发现并且修复程序中可能存在的缺陷,是当前软件工程学科中非常值得研究的方向。在修复程序缺陷的问题上,自动修复编程错误,也称为程序修复,在一定程度上提高了修复程序缺陷的效率,推动了软件开发的进程。然而,目前的程序修复方法仍然存在修复率低以及修复类型少等问题,修复效果有待提升。在程序修复的语法错误修复方面,对于修复部分缺陷程序语句,有时可能需要分析整个程序结构,从而浪费了大量的有效时间。而在对程序修复的语义错误修复方面,对程序语句进行有效的结构语义分析又成为了目前语义错误修复的主要限制。针对上述问题,本文提出了一种基于缺陷上下文的深度学习方法来进行错误程序的自动修复,主要分为不考虑编译信息的语法错误修复方法、考虑编译信息的语法错误修复方法和语义错误修复方法。首先,对于修复程序语法错误,本文采用不考虑编译信息的语法错误修复方法和考虑编译信息的语法错误修复方法,采用编译器对程序语句分别进行不编译和编译处理,在该处理的基础上再利用深度学习技术对程序的缺陷语句进行预测并得到对应修复。其次,对于修复程序语义错误,本文主要是采用语义错误修复方法,将基于历史缺陷修复程序对的自动程序修复转化为一个机器学习问题,即挖掘同一个编程任务的大量历史缺陷修复程序对中的缺陷修复上下文作为学习语料,对缺陷程序中存在语义错误的程序语句进行有效修复。另外,本文对所提出的不考虑编译信息的语法错误修复方法、考虑编译信息的语法错误修复方法和语义错误修复方法进行了实验评估。实验结果表明,本文提出的不考虑编译信息的语法错误修复方法比当前自动程序修复方法在学生错误程序生成的数据集上进一步修复了缺陷程序。本文提出的考虑编译信息的语法错误修复方法和语义错误修复方法也在该数据集上可以分别修复一定的对应错误类型缺陷程序。
其他文献
伴随着大数据时代的兴起,数据已成为驱动经济发展的新能源。如何从海量的数据中准确地检索到用户需求的数据,并从中挖掘出有价值的信息,已成为当下信息检索领域的研究热点。
超级电容器是一种新型绿色的电化学储能设备,它具有充电时间短、放电效率高、高功率密度、使用寿命长和对环境无污染等优点。电极材料对于超级电容器整体储能性能的影响尤为
为了抑制基于永磁同步电机的机电伺服系统中存在的由电机波动力矩导致的周期性干扰,本文将传统的重复控制推广到位置域,在此基础上,提出位置域重复控制的补偿方法,并开展应用
现在正处于21世纪信息技术发展高速迅猛的时期,社会已经进入到“信息+”时代,教育行业也在推行“信息+教育”的模式,处于这种环境下便形成了新的模式,即基于网络的在线教学系
近年来,随着人工智能的发展,自然语言处理下的机器阅读理解任务已经成为人们研究的热点问题。中文数据集的大量涌现,掀起了中文机器阅读理解任务的研究高潮。机器阅读理解任
随着无线通讯技术的不断发展和普及,Wi-Fi在日常生活中的应用领域越来越广,由于成本低、信号传输范围广、适用性强等特点,Wi-Fi广泛应用于不同的室内定位系统。由于不需要部
室内外环境日益复杂,人们对于导航的需求日益增加,尤其是商场、图书馆、地铁站等大型公共场所,常需要快速的获得用户所在的位置。WIFI、红外线、UWB等基于无线射频信号的室内
随着智能手机、平板电脑等智能移动设备迅速普及和新型业务的不断出现,无线网络正面临着数据流量指数增长的巨大挑战。为了满足更高的网络性能需求,异构网络(Heterogeneous N
煤炭是我国最主要的能源之一,低透性煤层瓦斯的瓦斯抽采效率低、施工周期长严重制约着安全生产,通过深孔预裂爆破增透技术可以提高瓦斯的抽采效率,提高生产效率、保障生产安
杜84块兴隆台油藏是重是辽河油区投产较早的超稠油油藏。兴I组油层发育较好,平面上大面积连片分布,油顶埋深650~750m,单层平均厚度14.2m,边水油藏。岩性主要为砾状砂岩和含砾