CN116484722A - 基于图神经网络的缺陷程序自动修复方法及处理装置 - Google Patents
基于图神经网络的缺陷程序自动修复方法及处理装置 Download PDFInfo
- Publication number
- CN116484722A CN116484722A CN202310324680.1A CN202310324680A CN116484722A CN 116484722 A CN116484722 A CN 116484722A CN 202310324680 A CN202310324680 A CN 202310324680A CN 116484722 A CN116484722 A CN 116484722A
- Authority
- CN
- China
- Prior art keywords
- program
- defect
- neural network
- patch
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000007547 defect Effects 0.000 title claims abstract description 170
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000008439 repair process Effects 0.000 title claims abstract description 49
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 37
- 238000012545 processing Methods 0.000 title claims abstract description 18
- 238000012360 testing method Methods 0.000 claims abstract description 54
- 238000003062 neural network model Methods 0.000 claims abstract description 49
- 238000012549 training Methods 0.000 claims abstract description 27
- 238000012795 verification Methods 0.000 claims abstract description 26
- 238000004364 calculation method Methods 0.000 claims abstract description 14
- 230000006403 short-term memory Effects 0.000 claims abstract description 11
- 230000007787 long-term memory Effects 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims abstract description 10
- 230000015654 memory Effects 0.000 claims description 28
- 230000002950 deficient Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供了基于图神经网络的缺陷程序自动修复方法及处理装置,属于程序自动修复技术领域,所述方法包括:对待修复程序进行可疑度计算,输出待修复程序中的可疑程序列表,获取缺陷程序;将解析后的缺陷程序转化为缺陷程序的图结构存储;对图神经网络模型进行训练,进行参数调整,获取最优图神经网络模型;将缺陷程序的图结构作为输入数据,经最优图神经网络模型嵌入,将缺陷程序的图结构映射为固定维向量空间的表示,由长短期记忆网络生成程序补丁;对程序补丁进行验证,当程序补丁通过测试套件的验证,输出正确补丁。本申请通过捕获缺陷程序的语法语义结构,使得生成符合程序语法语义结构的正确补丁,本申请可处理更加广泛的程序缺陷类型。
Description
技术领域
本申请涉及程序自动修复技术领域,具体说是一种基于图神经网络的缺陷程序自动修复方法及处理装置。
背景技术
程序缺陷在软件的开发过程中是不可避免的,特别是随着现代信息技术的迅速发展,软件规模在不断增加,程序缺陷的数量也在随之增加。程序缺陷破坏软件的正常执行,使得软件在某种程度上不能满足其既有的功能要求。严重的程序缺陷不仅会造成企业的重大经济损失,甚至会对人们的生命安全造成重大威胁。因此,及时修复程序中的缺陷十分重要,已经成为软件维护中的一项重要任务。
已经有研究使用基于搜索的自动程序修复方法来指导修复补丁的生成过程。其核心思想是代码具有重复性,希望复用程序中的代码片段来修复缺陷。具体而言,将程序中若干位置的更新(修改、删除、添加)视为个体,并把所有通过更新得到组合作为一个搜索空间,并在此搜索空间中寻求最优解。基于搜索的自动程序修复方法存在着如何设置合适的搜索空间、生成的补丁能够通过全部测试用例但可能违背程序语义等关键性问题。另一些研究提出了基于语义的自动程序修复方法。基于语义的修复方法将缺陷修复转化为约束求解问题。该类方法首先收集软件运行时的相关信息,然后提取正确程序需要满足的约束;最后将修复约束作为合成补丁的规约,利用约束求解器求解。基于语义的自动程序修复方法存在着求解时间较长、难以应用于复杂的大规模软件上等关键性问题。还有研究采用基于模板的自动程序修复方法修复程序缺陷。该类方法首先通过人工预定义修复模板或者从历史数据中挖掘修复模板,然后根据程序缺陷的类型选取适当的修复模板进行修复。基于模板的自动程序修复方法存在着人工成本较大、受行业人员开发经验制约、修复模板数量有限等关键性问题。
基于搜索、语义、模板的自动程序修复方法较传统的人工修复方法在效率上有较大提升,但仍需设计复杂的人工策略来指导修复缺陷的过程,且这些方法仅仅适用于特定的程序缺陷类型。为此,需要寻找一种更加高效,且能适用于广泛复杂的程序缺陷类型的修复方法。
因此,如何克服上述存在的技术问题和缺陷成为需要重点解决的问题。
发明内容
为了克服当前自动程序修复技术大多针对特定的程序缺陷类型,无法处理广泛的缺陷程序类型问题,本申请提供了基于图神经网络的缺陷程序自动修复方法及处理装置,采用了如下的技术方案:
第一方面,本申请提供了基于图神经网络的缺陷程序自动修复方法,包括:
步骤S1,获取缺陷程序;
步骤S2,对所述缺陷程序进行解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储;
步骤S3,选取训练数据集,对图神经网络模型进行训练,根据损失函数对所述图神经网络模型进行模型参数调整,获取最优图神经网络模型;
步骤S4,将所述缺陷程序的图结构作为输入数据,经所述最优图神经网络模型嵌入后,将所述缺陷程序的图结构映射为固定维向量空间的表示,然后通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成;
步骤S5,通过测试套件对所述程序补丁进行验证,当所述程序补丁通过测试套件的验证,则所述最优图神经网络模型输出所述缺陷程序的正确补丁,完成基于图神经网络的缺陷程序自动修复。
进一步地,所述步骤S1中的所述获取缺陷程序包括,将待修复程序输入到缺陷定位单元中,经过所述缺陷定位单元执行测试用例,通过测试用例覆盖信息对所述待修复程序进行可疑度计算,输出所述待修复程序中的可疑程序列表,其中所述可疑程序列表中包含的程序为缺陷程序。
进一步地,所述步骤S1中的经过所述缺陷定位单元对所述待修复程序的可疑度计算的可疑度计算公式为:
其中,nef(s)表示覆盖程序实体S的失败测试数据的数量,nep(s)表示覆盖程序实体S的成功测试数据数量,nf表示测试套件中针对缺陷程序的所有失败测试数据数量。
进一步地,所述步骤S2中的对所述缺陷程序进行解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储,包括:
将所述缺陷程序解析为抽象语法树(AST)形式,以捕获所述缺陷程序的语法语义结构,然后连接节点与边形成图结构以存储所述缺陷程序信息。
进一步地,所述步骤S3中的所述图神经网络模型的组成包括:
一个门控图神经网络(GGNN)和一个长短期记忆网络(LSTM);其中门控图神经网络用于嵌入缺陷程序,长短期记忆网络用于生成程序补丁;
此外,长短期记忆网络还可以通过增加、删除和替换图节点来实现复杂的程序结构转化,以处理广泛的程序缺陷类型。
进一步地,所述步骤S3中的所述损失函数公式为:
其中和Y分别表示输出概率分布和标准答案分布,n代表训练样本个数,j代表第j个样本,Lce代表交叉熵损失,/>表示第j个样本输出分布,yj表示第j个样本标准答案;损失越小说明模型的预测越接近真实输出。
进一步地,所述步骤S4中生成的程序补丁为一系列的候选补丁,候选补丁列表为采用束搜索策略选取最优的前N(束搜索宽度)个候选补丁。
进一步地,通过测试套件对所述程序补丁进行验证还包括:当所述程序补丁未通过测试套件的验证时,从候选补丁列表中选取下一候选补丁继续进行程序补丁的验证,直至所述程序补丁通过测试套件的验证。
进一步地,当程序补丁通过测试套件的验证后,对程序补丁进行回归测试,检测引入的程序补丁是否对程序产生新的程序缺陷问题,如果程序补丁通过了回归测试,则程序补丁为正确的程序补丁。
第二方面,本申请还提供了基于图神经网络的自动程序修复处理装置,包括:缺陷程序获取模块,缺陷程序解析模块,图神经网络模型训练模块,缺陷程序补丁生成模块,缺陷程序补丁验证模块;
缺陷程序获取模块,用于将待修复程序输入到缺陷定位单元中,经过所述缺陷定位单元执行测试用例,通过测试用例覆盖信息对所述待修复程序进行可疑度计算,输出所述待修复程序中的可疑程序列表,其中所述可疑程序列表中包含的程序为缺陷程序;
缺陷程序解析模块,用于对所述缺陷程序进行抽象语法树解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储;
图神经网络模型训练模块,用于选取训练数据集,对图神经网络模型进行训练,根据损失函数对所述图神经网络模型进行模型参数调整,获取最优图神经网络模型;
缺陷程序补丁生成模块,用于将所述缺陷程序的图结构作为输入数据,经所述最优图神经网络模型嵌入后,将所述缺陷程序的图结构映射为固定维向量空间的表示,然后通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成;
缺陷程序补丁验证模块,用于通过测试套件对所述程序补丁进行验证,当所述程序补丁通过测试套件的验证,则所述最优图神经网络模型输出所述缺陷程序的正确补丁,完成基于图神经网络的缺陷程序自动修复。
第三方面,本申请提供了一种电子设备,包括:
一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备执行如第一方面所述的方法。
第四方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。
第五方面,本申请提供了一种计算机程序,当所述计算机程序被计算机执行时,用于执行第一方面所述的方法。
在一种可能的设计中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
与现有技术相比,本申请实施例主要有以下有益效果:
1.本申请提供的将缺陷程序解析为抽象语法树形式,然后以图结构存储以捕获缺陷程序的语法语义结构,使得图神经网络模型生成符合程序语法语义结构的正确补丁。
2.本申请提供的图神经网络模型,通过增加、删除和替换图节点来处理更加广泛、复杂的程序缺陷类型。
附图说明
图1为本申请实施例可以应用于其中的示例性系统架构图;
图2是本申请实施例的方法流程图;
图3是本申请实施例获取可疑程序列表的流程图;
图4是本申请实施例的缺陷程序解析流程图;
图5是本申请实施例的最优图神经网络模型训练流程图;
图6是本申请实施例的缺陷补丁的生成流程图;
图7是本申请实施例的缺陷补丁验证流程图;
图8是本申请实施例的处理装置示意图;
图9是本申请实施例的计算机设备示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExpertsGroupAudioLayerIII,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExpertsGroupAudioLayerIV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于图神经网络的缺陷程序自动修复方法一般由服务器/终端设备执行,相应地,基于图神经网络的自动程序修复处理装置一般设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,图中示出了本申请的基于图神经网络的缺陷程序自动修复方法流程图,所述方法包括以下步骤:
步骤S1,获取缺陷程序,获取缺陷程序包括:将待修复程序输入到缺陷定位单元中,经过所述缺陷定位单元执行测试用例,通过测试用例覆盖信息对所述待修复程序进行可疑度计算,输出所述待修复程序中的可疑程序列表,其中所述可疑程序列表中包含的程序为缺陷程序;
在一种可能的实施方式中,对所述待修复程序进行可疑度计算采用程序缺陷定位技术Ochiai,可疑度计算公式为:其中,nef(s)表示覆盖程序实体S的失败测试数据的数量,nep(s)表示覆盖程序实体S的成功测试数据数量,nf表示测试套件中针对缺陷程序的所有失败测试数据数量。
在一种可能的实施方式中,输出所述待修复程序中的可疑程序列表的流程如图3所示:
步骤S101,通过缺陷定位单元对所述待修复程序通过执行测试用例获取测试数据信息覆盖。
步骤S102,根据所述测试数据信息覆盖的执行结果。
步骤S103,输出所述待修复程序扩展语句的可疑程序列表。
步骤S2,对所述缺陷程序进行解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储;
在一种可能的实施方式中,对缺陷程序进行解析的流程如图4所示:
步骤S201,将缺陷程序解析为抽象语法树(AST)形式。
步骤S202,捕获缺陷程序中的语法语义结构。
步骤S203,连接节点与边形成缺陷程序的图结构以存储缺陷程序信息。
步骤S3,选取训练数据集,对,根据损失函数对所述图神经网络模型进行模型参数调整,获取最优图神经网络模型;
在一种可能的实施方式中,图神经网络模型训练过程请参考图5:
步骤S301,选取训练数据集;
训练数据集的选取来源于真实软件项目提交的缺陷代码,其可选择不同程序语言项目,如Java、C、C++、Python、JavaScript等编程语言。
步骤S302,训练图神经网络模型;
将缺陷程序与其对应的正确修复语句共同构成训练数据,通过缺陷程序与其对应的正确修复语句之间的关系对图神经网络模型进行训练。
图神经网络模型的组成包括:一个门控图神经网络(GGNN)和一个长短期记忆网络(LSTM);其中门控图神经网络用于嵌入缺陷程序,长短期记忆网络用于生成程序补丁;此外,长短期记忆网络还可以通过增加、删除和替换图节点来实现复杂的程序结构转化,以处理广泛、复杂的程序缺陷类型。
步骤S303,调整参数;
采用损失函数对图神经网络模型进行参数调整,其中,损失函数的公式为:其中/>和Y分别表示输出概率分布和标准答案分布,n代表训练样本个数,j代表第j个样本,Lce代表交叉熵损失,/>表示第j个样本输出分布,yj表示第j个样本标准答案;损失越小说明模型的预测越接近真实输出。
步骤S4,将所述缺陷程序的图结构作为输入数据,经所述最优图神经网络模型嵌入后,将所述缺陷程序的图结构映射为固定维向量空间的表示,然后通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成。
在一种可能的实施方式中,生成程序补丁的具体操作请参考图6:
步骤S401,输入缺陷程序的图结构表示:将缺陷程序的图结构作为最优图神经网络模型的输入数据;
步骤S402,最优图神经网络进行图嵌入,将缺陷程序的图结构映射为固定维向量空间的表示;
步骤S403,程序补丁的生成:通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成,生成的程序补丁为一系列的候选补丁,候选补丁列表为采用束搜索策略选取最优的前N(束搜索宽度)个候选补丁。
步骤S5,通过测试套件对所述程序补丁进行验证,当所述程序补丁通过测试套件的验证,则所述最优图神经网络模型输出所述缺陷程序的正确补丁,完成基于图神经网络的缺陷程序自动修复。
进行程序补丁验证的具体操作请参考图7:
在一种可能的实施方式中,通过测试套件对所述程序补丁进行验证还包括:当所述程序补丁未通过测试套件的验证时,从候选补丁列表中选取下一候选补丁继续进行程序补丁的验证,直至所述程序补丁通过测试套件的验证。
在一种可能的实施方式中,当程序补丁通过测试套件的验证后,对程序补丁进行回归测试,检测引入的程序补丁是否对程序产生新的程序缺陷问题,如果程序补丁通过了回归测试,则程序补丁为正确的程序补丁。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)等非易失性存储介质,或随机存储记忆体(RandomAccessMemory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
继续参考图8,本实施例所述的基于图神经网络的自动程序修复处理装置包括:缺陷程序获取模块801,缺陷程序解析模块802,图神经网络模型训练模块803,缺陷程序补丁生成模块804,缺陷程序补丁验证模块805;
缺陷程序获取模块801,用于将待修复程序输入到缺陷定位单元中,经过所述缺陷定位单元对所述待修复程序进行可疑度计算,输出所述待修复程序中的可疑程序列表,其中所述可疑程序列表中包含的程序为缺陷程序;
缺陷程序解析模块802,用于对所述缺陷程序进行解析,将解析后的所述缺陷程序抽象语法树形式转化为所述缺陷程序的图结构存储;
图神经网络模型训练模块803,用于选取训练数据集,对图神经网络模型进行训练,根据损失函数对所述图神经网络模型进行模型参数调整,获取最优图神经网络模型;
缺陷程序补丁生成模块804,用于将所述缺陷程序的图结构作为输入数据,经所述最优图神经网络模型嵌入后,将所述缺陷程序的图结构映射为固定维向量空间的表示,然后通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成;
缺陷程序补丁验证模块805,用于通过测试套件对所述程序补丁进行验证,当所述程序补丁通过测试套件的验证,则所述最优图神经网络模型输出所述缺陷程序的正确补丁,完成基于图神经网络的缺陷程序自动修复。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图9,图9为本实施例计算机设备基本结构框图。
所述计算机设备9包括通过系统总线相互通信连接存储器9a、处理器9b、网络接口9c。需要指出的是,图中仅示出了具有组件9a-9c的计算机设备9,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-ProgrammableGateArray,FPGA)、数字处理器(DigitalSignalProcessor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器9a至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器9a可以是所述计算机设备9的内部存储单元,例如该计算机设备9的硬盘或内存。在另一些实施例中,所述存储器9a也可以是所述计算机设备9的外部存储设备,例如该计算机设备9上配备的插接式硬盘,智能存储卡(SmartMediaCard,SMC),安全数字(SecureDigital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器9a还可以既包括所述计算机设备9的内部存储单元也包括其外部存储设备。本实施例中,所述存储器9a通常用于存储安装于所述计算机设备9的操作系统和各类应用软件,例如基于图神经网络的缺陷程序自动修复方法及处理装置的程序代码等。此外,所述存储器9a还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器9b在一些实施例中可以是中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器9b通常用于控制所述计算机设备9的总体操作。本实施例中,所述处理器9b用于运行所述存储器9a中存储的程序代码或者处理数据,例如运行所述基于图神经网络的缺陷程序自动修复方法及处理装置的程序代码。
所述网络接口9c可包括无线网络接口或有线网络接口,该网络接口9c通常用于在所述计算机设备9与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有基于图神经网络的缺陷程序自动修复方法及处理装置的程序,所述基于图神经网络的缺陷程序自动修复方法及处理装置可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于图神经网络的缺陷程序自动修复方法及处理装置的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.基于图神经网络的缺陷程序自动修复方法,其特征在于,包括:
步骤S1,获取缺陷程序;
步骤S2,对所述缺陷程序进行抽象语法树解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储;
步骤S3,选取训练数据集,对图神经网络模型进行训练,根据损失函数对所述图神经网络模型进行模型参数调整,获取最优图神经网络模型;
步骤S4,将所述缺陷程序的图结构作为输入数据,经所述最优图神经网络模型嵌入后,将所述缺陷程序的图结构映射为固定维向量空间的表示,然后通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成;
步骤S5,通过测试套件对所述程序补丁进行验证,当所述程序补丁通过测试套件的验证,则所述最优图神经网络模型输出所述缺陷程序的正确补丁,完成基于图神经网络的缺陷程序自动修复。
2.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S1中的所述获取缺陷程序包括:将待修复程序输入到缺陷定位单元中,经过所述缺陷定位单元执行测试用例,通过测试用例覆盖信息对所述待修复程序进行可疑度计算,输出所述待修复程序中的可疑程序列表,其中所述可疑程序列表中包含的程序为缺陷程序。
3.根据权利要求2的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S1中的经过所述缺陷定位单元对所述待修复程序的可疑度计算的可疑度计算公式为:
其中,nef(s)表示覆盖程序实体S的失败测试数据的数量,nep(s)表示覆盖程序实体S的成功测试数据数量,nf表示测试套件中针对缺陷程序的所有失败测试数据数量。
4.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S2中的对所述缺陷程序进行解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储,包括:
将所述缺陷程序解析为抽象语法树形式,以捕获所述缺陷程序的语法语义结构,然后连接节点与边形成图结构以存储所述缺陷程序信息。
5.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S3中的所述图神经网络模型的组成包括:
一个门控图神经网络(GGNN)和一个长短期记忆网络(LSTM);其中门控图神经网络用于嵌入缺陷程序,长短期记忆网络用于生成程序补丁;
此外,长短期记忆网络还可以通过增加、删除和替换图节点来实现复杂的程序结构转化,以处理广泛的程序缺陷类型。
6.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S3中的所述损失函数公式为:
其中和Y分别表示输出概率分布和标准答案分布,n代表训练样本个数,j代表第j个样本,Lce代表交叉熵损失,/>表示第j个样本输出分布,yj表示第j个样本标准答案;损失越小说明模型的预测越接近真实输出。
7.根据权利要求1的基于图神经网络的缺陷程序自动修复方法,其特征在于,所述步骤S5中的所述通过测试套件对所述程序补丁进行验证还包括:当所述程序补丁未通过测试套件的验证时,从候选补丁列表中选取下一候选补丁继续进行程序补丁的验证,直至所述程序补丁通过测试套件的验证。
8.基于图神经网络的自动程序修复处理装置,其特征在于,包括:缺陷程序获取模块,缺陷程序解析模块,图神经网络模型训练模块,缺陷程序补丁生成模块,缺陷程序补丁验证模块;
缺陷程序获取模块,用于将待修复程序输入到缺陷定位单元中,经过所述缺陷定位单元执行测试用例,通过测试用例覆盖信息对所述待修复程序进行可疑度计算,输出所述待修复程序中的可疑程序列表,其中所述可疑程序列表中包含的程序为缺陷程序;
缺陷程序解析模块,用于对所述缺陷程序进行抽象语法树解析,将解析后的所述缺陷程序转化为所述缺陷程序的图结构存储;
图神经网络模型训练模块,用于选取训练数据集,对图神经网络模型进行训练,根据损失函数对所述图神经网络模型进行模型参数调整,获取最优图神经网络模型;
缺陷程序补丁生成模块,用于将所述缺陷程序的图结构作为输入数据,经所述最优图神经网络模型嵌入后,将所述缺陷程序的图结构映射为固定维向量空间的表示,然后通过长短期记忆网络(LSTM)增加、删除和替换图节点实现所述缺陷程序的程序补丁的生成;
缺陷程序补丁验证模块,用于通过测试套件对所述程序补丁进行验证,当所述程序补丁通过测试套件的验证,则所述最优图神经网络模型输出所述缺陷程序的正确补丁,完成基于图神经网络的缺陷程序自动修复。
9.一种电子设备,其特征在于,包括:
一个或多个处理器、存储器,以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310324680.1A CN116484722A (zh) | 2023-03-30 | 2023-03-30 | 基于图神经网络的缺陷程序自动修复方法及处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310324680.1A CN116484722A (zh) | 2023-03-30 | 2023-03-30 | 基于图神经网络的缺陷程序自动修复方法及处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116484722A true CN116484722A (zh) | 2023-07-25 |
Family
ID=87218623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310324680.1A Pending CN116484722A (zh) | 2023-03-30 | 2023-03-30 | 基于图神经网络的缺陷程序自动修复方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116484722A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764784A (zh) * | 2021-02-03 | 2021-05-07 | 河南工业大学 | 基于神经机器翻译的软件缺陷自动修复方法及装置 |
US20210165647A1 (en) * | 2019-12-03 | 2021-06-03 | Bank Of America Corporation | System for performing automatic code correction for disparate programming languages |
CN113741886A (zh) * | 2021-08-02 | 2021-12-03 | 扬州大学 | 一种基于图的语句级程序修复方法及系统 |
CN114416421A (zh) * | 2022-01-24 | 2022-04-29 | 北京航空航天大学 | 一种代码缺陷的自动定位与修复方法 |
CN115686923A (zh) * | 2023-01-05 | 2023-02-03 | 中国人民解放军军事科学院系统工程研究院 | 一种软件源代码缺陷自动修复方法及系统 |
-
2023
- 2023-03-30 CN CN202310324680.1A patent/CN116484722A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210165647A1 (en) * | 2019-12-03 | 2021-06-03 | Bank Of America Corporation | System for performing automatic code correction for disparate programming languages |
CN112764784A (zh) * | 2021-02-03 | 2021-05-07 | 河南工业大学 | 基于神经机器翻译的软件缺陷自动修复方法及装置 |
CN113741886A (zh) * | 2021-08-02 | 2021-12-03 | 扬州大学 | 一种基于图的语句级程序修复方法及系统 |
CN114416421A (zh) * | 2022-01-24 | 2022-04-29 | 北京航空航天大学 | 一种代码缺陷的自动定位与修复方法 |
CN115686923A (zh) * | 2023-01-05 | 2023-02-03 | 中国人民解放军军事科学院系统工程研究院 | 一种软件源代码缺陷自动修复方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104598218B (zh) | 用于合并和重用门户信息的方法和系统 | |
CN113435846A (zh) | 业务流程编排方法、装置、计算机设备及存储介质 | |
CN112468658B (zh) | 语音质量检测方法、装置、计算机设备及存储介质 | |
CN112084752A (zh) | 基于自然语言的语句标注方法、装置、设备及存储介质 | |
CN112764784A (zh) | 基于神经机器翻译的软件缺陷自动修复方法及装置 | |
CN112506757A (zh) | 自动测试方法、系统、计算机设备及其介质 | |
CN114493255A (zh) | 基于知识图谱的企业异常监控方法及其相关设备 | |
CN113377372A (zh) | 业务规则的解析方法、装置、计算机设备及存储介质 | |
CN113869789A (zh) | 一种风险监控的方法、装置、计算机设备及存储介质 | |
CN117251559B (zh) | 基于自然语言大模型的工程标准规范获取方法及系统 | |
CN112182157B (zh) | 在线序列标注模型的训练方法、在线标注方法及相关设备 | |
CN117522538A (zh) | 招投标信息处理方法、装置、计算机设备及存储介质 | |
CN116661936A (zh) | 页面数据的处理方法、装置、计算机设备及存储介质 | |
CN115936895A (zh) | 基于人工智能的风险评估方法、装置、设备及存储介质 | |
CN108768742B (zh) | 网络构建方法及装置、电子设备、存储介质 | |
CN116453125A (zh) | 基于人工智能的数据录入方法、装置、设备及存储介质 | |
CN116484722A (zh) | 基于图神经网络的缺陷程序自动修复方法及处理装置 | |
CN115328764A (zh) | 基于自动化测试的测试代码优化方法及其相关设备 | |
CN115730603A (zh) | 基于人工智能的信息提取方法、装置、设备及存储介质 | |
CN114637672A (zh) | 自动化数据测试方法、装置、计算机设备及存储介质 | |
CN112417886A (zh) | 意图实体信息抽取方法、装置、计算机设备及存储介质 | |
CN112069807A (zh) | 文本数据的主题提取方法、装置、计算机设备及存储介质 | |
CN117234505A (zh) | 一种交互页面生成方法、装置、设备及其存储介质 | |
CN115526731A (zh) | 任务批处理方法、装置、计算机设备及存储介质 | |
CN117453536A (zh) | 系统异常分析方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |