基于Github的Java程序缺陷自动修复方法研究

来源 :西北大学 | 被引量 : 0次 | 上传用户:guhong_2
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件缺陷制约软件产业发展,严重影响软件质量。探索高效、自动的软件缺陷修复方法是目前软件工程领域的重要课题之一。深度学习技术的发展和大规模开源代码库的出现为改进传统基于“生成-验证”的缺陷修复方法带来了可能,正在成为目前研究的热点方向。目前基于深度学习的缺陷修复方法主要依赖来自开源代码库中的数据集构建模型,尽管与传统基于手工提取缺陷修复模式的修复方法相比,能够生成可通过配套测试用例集的有效补丁,但生成的补丁往往偏离了原始程序的语义,正确性依然有待提升,其主要原因在于:(1)因为这些方法使用简单的规则从开源仓库中获取数据,由于开源仓库的多样性,这种单一的数据筛选方式获取的训练数据质量低,影响模型的学习效果;(2)现有方法忽略关注程序中的控制流和数据流信息;(3)现有方法在序列化处理源代码时粒度单一,并且对其中的用户自定义标识符抽象表示,使生成的词汇表中损失了一部分程序语义信息,影响模型生成补丁的效果。本文针对以上问题对现有缺陷修复方法进行改进,并提出一种基于深度学习技术的缺陷修复解决方案,具体研究内容总结如下:(1)面对开源仓库的数据存在质量分布不均衡的挑战,本文提出了一种基于大规模开源仓库的数据优化方法,通过数据筛选过程对开源仓库中的数据进行提纯,并且为了捕获程序上下文中对缺陷修复有意义的重点特征,构建一种基于程序控制流和数据流的程序切片方法对数据进行预处理,提升从开源仓库获取数据的质量。(2)提出一种使用编码器-解码器结构的程序缺陷修复模型。针对现有方法在源码序列化过程中存在粒度单一、损失部分程序信息的问题,本文使用基于子词表示的序列化方法对源码进行处理,尽可能多的保留程序上下文中的用户自定义标识符信息。再通过基于局部注意力机制的编码器-解码器模型学习缺陷的修复模式,实现补丁的自动生成。考虑到每种缺陷的修复操作具有相似性,本文通过构建一个基于程序抽象语法树(Abstract Syntax Tree,AST)结构特征的缺陷预分类模型,为待修复缺陷选择最匹配的补丁生成模型。(3)设计并实现了一个基于Github的Java程序缺陷修复原型系统VulRepair。并且为了验证VulRepair的缺陷修复效果,还设计并实现了一组评估对比实验,从多个角度评估验证本文提出的缺陷修复模型和系统。实验结果表明,本文提出的缺陷修复方法在基准数据集和来自开源仓库的数据集上,相比已有的缺陷修复方法,VulRepair生成的有效补丁和正确补丁数量更多,并且具有修复多行缺陷的潜力。
其他文献
视频超分辨率重建是一种根据低分辨率视频恢复高分辨率视频的技术。视频超分辨率技术是计算机视觉领域中的经典和热点研究内容之一。视频超分辨率重建旨在利用视频帧序列的时空相关性生成精度高,且感知质量好的高分辨率视频。本论文重点围绕基于深度学习方法提高视频的感知质量问题展开研究。在深入研究先进的基于深度学习的视频超分辨率方法的基础上,提出了一个新的光流补偿结合多特征鉴别生成对抗网络OFC-MFGAN,并将其
近年来,深度卷积神经网络(Deep Convolution Neural Networks,DCNN)在单幅图像超分辨率(Single Image Super-Resolution,SISR)中得到了广泛的应用。然而,大多数现有的基于DCNN的SISR方法往往会产生过于平滑的输出,对图像细节信息的恢复不够理想。为了解决上述问题,本文对基于小波变换和自注意力机制的图像超分辨率重建算法进行了相关研究,
在网络媒体时代,人们通过微博、短视频等社交平台对各类热点事件发表相关言论和看法,这些文本内容简短、表达幽默,能充分反映人们的内心情绪。挖掘这些短文本的潜在情感倾向性,分析和预测用户行为,可以为各个领域的舆情监管工作提供辅助支持。目前,面向网络短文本的情感分析算法研究已取得了一定的成果,但仍存在一些问题,例如,网络新词的不断涌现造成分词效果较差;短文本表现形式的复杂导致传统特征选择结果不佳;特征学习
MOOC平台课程评论文本中包含了大量学习者对某一门课程的看法,甚至是对授课教师和学习平台的看法。然而海量的评论数据使得教师或平台无法对每条评论及时阅读和处理。通过对MOOC课程评论进行情感分类和方面挖掘研究,能够了解学习者在学习过程中所关注的方面和对其产生的情感态度,有助于教师或平台改进教学方式和完善平台功能,从而调动学习者积极性,降低退课率。本文以MOOC课程评论文本为研究对象,针对情感分类和方
句子相似度计算是自然语言处理中广泛应用的技术,是句子语义理解的基础,能促进计算机对人类语言的深入理解。为了能准确地对句子进行相似度计算,本文首先提出一种能准确地对句子语义建模的句子表示方法,然后提出一种能高效地对句子之间的语义关系建模的句子匹配算法,最后在此基础上提出一种句子相似度计算方法。本文主要研究工作如下:(1)针对句子包含的空间信息的特征很难被准确提取的问题,提出了一种基于异构图的句子表示
眼眶淋巴瘤(Orbital Adnexal Lymphoma,OAL)和炎性假瘤(Idiopathic Orbital Inflammation,IOI)是眼眶最常见的两种淋巴组织增生性疾病。OAL是一种恶性眼眶肿瘤,发生率高达55%,其最佳治疗方法是局部放疗。IOI是一种特发性良性病变,约占眼眶疾病的10%,糖皮质激素治疗是目前公认首选的治疗方法。这两种疾病治疗方法的巨大不同使得区分二者极为迫切
古代文物具有丰富的文化内涵,由于自然灾害或人为因素,出土文物存在不同程度的缺损,影响了虚拟展示等后续工作。随着三维激光扫描技术的发展,三维数字化修复成为文物虚拟化修复领域的挑战性问题,对重现文物全貌具有重要意义。然而,为了提高修复效率首先会压缩文物模型,导致部分特征丢失。此外,复原的三维文物表面缺乏颜色纹理的信息。因此本文应用深度学习技术,分别从三维和二维的角度修复表面几何特征和纹理信息。主要研究
随着计算机视觉技术的蓬勃发展,人们越来越不满足于仅通过计算机了解场景目标的二维信息,使用二维序列图像重建出目标主体的三维信息成为了越来越迫切的需求。如今,基于序列图像的三维重建技术已在多个领域发挥着不可替代的作用,然而该技术存在着无法兼顾重建精度与实时性的问题。本文主要关注序列图像三维重建的精度与实时性问题,从三维重建对输入序列图像的分辨率要求较高以及传统三维重建算法无法兼顾精度和实时性这两个问题
与人脸识别、语音识别一样,手势识别也较常见,广泛应用于日常生活,具有很高的应用价值。已有的识别方法是视频成像、佩戴设备或无线装置,其中前两种在精度和效率上都较高,但受限于环境或隐私。而无线识别中基于Wi-Fi信道状态信息(Channel State Information,CSI)的识别方法则没有这些限制,有利于手势识别研究。但是,在跨场景手势识别问题中,每个不同的场景均需大量的数据样本来完成高精
异构设备的发展和应用促使相关的运行框架得到快速的发展,OpenCL作为首个跨平台的运行框架,代表了当前异构设备的发展趋势。它能够在多核的CPU、GPU等异构单元上透明运行,但因不同平台的环境差异,导致其性能优化移植性较差,从而造成程序运行效率的低下。现有的OpenCL程序优化方法采用自然语言处理技术对程序顺序关系特征进行建模优化,以提高程序的加速比,由于忽略了程序的语法语义关系,导致程序运行效率低