CN110362310A - 一种基于不完全抽象语法树的代码语法错误修复方法 - Google Patents

一种基于不完全抽象语法树的代码语法错误修复方法 Download PDF

Info

Publication number
CN110362310A
CN110362310A CN201910219636.8A CN201910219636A CN110362310A CN 110362310 A CN110362310 A CN 110362310A CN 201910219636 A CN201910219636 A CN 201910219636A CN 110362310 A CN110362310 A CN 110362310A
Authority
CN
China
Prior art keywords
code
token
information
incomplete
error
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
Application number
CN201910219636.8A
Other languages
English (en)
Inventor
李斐
吴礼蔚
吴优华
刘峰
郑滔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201910219636.8A priority Critical patent/CN110362310A/zh
Publication of CN110362310A publication Critical patent/CN110362310A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于不完全抽象语法树的代码语法错误修复方法。针对代码编译错误,该方法实现了对代码编译错误的定位与纠错。该方法利用不完全的AST信息,构建包含代码结构信息的输入序列,使用图模型传播、更新相邻节点之间的信息。该方法同时提出了一种新的纠错的方法。通过预测错误起始位置,结束位置,是否拷贝,拷贝位置,生成的词这5种信息,该方法可以修改和替换任意长度的错误代码。同时,该方法基于迭代的方式进行纠错,能够实现代码中多个错误的修复。

Description

一种基于不完全抽象语法树的代码语法错误修复方法
技术领域
本发明涉及利用深度学习的方法,基于代码的文本与结构的信息,构建神经网络,纠正代码语法错误的方法,属于深度学习和软件工程的交叉应用领域。
背景技术
语法错误指的是被语法检测器认为不符合编程语言语法规则的错误。语法错误是程序开发中会遇到的常见错误,一些简单的语法错误往往会因为编译器生成的误导信息而掩盖。这些错误信息使得语法错误难以定位,同时也浪费编程者(特别是新手)大量宝贵时间。若能自动化的准确发现并修复语法错误,将会极大的提高开发效率,降低开发成本,带来经济和社会效益。
在之前已经有以下几种代码语法纠错的方法。(1)基于规则的语法错误修复方法:通过设置一些规则来筛选可能错误的位置,并枚举可能的修复操作;(2)基于概率的方法:将代码视为一段文本,统计不同位置不同情况下发生错误的概率分布,使用规则或枚举可能的替换符号;(3)基于深度学习的语言模型方法:将代码视为一段文本,构建代码的语言模型,预测纠错的操作;(4)基于端到端的深度学习模型的方法:模型将定位到错误位置,并重新生成新的代码替换原有的错误代码。
语法纠错的难点在于词与词之间的依赖关系十分远,并且对文法要求十分严苛。目前的方法存在以下问题:(1)基于概率的错误定位方法过于简单,无法准确定位错误;(2)仅仅将代码视为文本,没有充分利用代码的结构和语义的信息;(3)需要大量启发式的规则限制修复的方法。
为了提高代码语法纠错的准确度,本发明提出了一种基于不完全抽象语法树的代码语法错误修复方法,可以有效利用代码结构信息,改进错误定位的方法,无需启发式规则限制。
发明内容
本发明的目的是充分利用代码的结构信息,结合代码的文本信息,提出一种新的语法纠错的方法,提高代码语法纠错的准确度。本发明采用的技术方案是:
一种基于不完全抽象语法树(Abstract Syntax Tree,AST)的代码语法错误修复方法,该方法包括以下步骤:
1)生成代码的不完全AST树
2)编码代码信息
3)预测错误位置
4)预测修复内容
5)根据预测的修复操作,生成新的代码
6)检测代码纠错结果,迭代修复错误
7)结束
其中步骤1所述的生成代码的不完全抽象语法树的说明:
在自底向上的LALR方法生成代码的语法树的过程中,语法解析器从给定的标记(token) 序列归约到开始符号。这个过程中,语法解析器将归约的语法节点信息存储到symstack栈中。在生成语法错误的代码的过程中,语法解析器将会在某个状态查询到无合法的归约节点(分析表中对应位置为空),因而产生错误。我们使用yacc生成的C语言语法分析器,利用存储在symstack栈中的已经推导完成的语法节点信息,构建一个未推导完成的不完全的抽象语法树信息。我们定义图G=(V;E;X)。将AST信息以图的形式进行保存。具体步骤如下:
1)利用词法分析工具将代码划分为一个token序列,根据字典生成token的id序列Itoken
2)将代码输入语法解析器中,尝试进行编译;
3)捕获AST异常,从symstack栈中获得之前得到的节点,构建不完全AST;
4)深度优先搜索整个不完全的AST的所有节点,根据字典生成节点的id队列Iast
5)将节点id队列Iast连接到token的id队列Itoken末尾,得到输入的序列I;
6)记录AST中连接的节点的边,生成边集合E。边的类型包含两种:①AST中连接的节点的边,②AST的节点与对应的token相连;
7)计算输入序列I的长度L。构造一个大小为L*L的矩阵,初始值为0。根据边集合E,将存在边的位置置为1,得到邻接矩阵A;
8)结束。
其中步骤2所述的编码代码信息:
模型编码输入序列I和邻接矩阵A,转换为中间状态。我们利用GGNN(Gated GraphNeural Networks)对输入的图进行编码。GGNN是一个迭代的图传播网络,用来学习图上节点的新的表示。随着图上信息在每层的传播,节点的信息将传递到相邻的节点并更新。具体步骤如下:
1)利用embedding模块编码token的id序列I,获得token的向量表示:
I=[w1,w2,...,wL]
xi=E[wi],i=1,2,...,L
2)由前馈神经网络计算初始的每个位置的状态:
3)进行多层的信息传播与更新。在每层编码中,先用GRU对当前节点信息进行更新,再利用 GGNN网络,根据邻接矩阵A将更新后的信息传播到相邻(相连)的节点。
其中j为编码的层数。
4)取Le层的隐藏层状态为编码的输出h,结束。在实验中,我们取层数Le为3
其中步骤3所述的预测错误位置的说明:
模型利用步骤2中得到的编码信息,预测错误的起始位置P1与结束位置P2。起始位置与结束位置之间的内容是错误的代码片段。具体步骤如下:
1)根据encoder的输出hLe与查询向量计算错误的起始位置P1概率分布;
其中为两个可训练的权重,q1为可训练的起始位置的查询向量,p1为起始位置的概率分布。
2)根据起始位置P1概率分布更新查询向量q1为新的查询向量q2
q2=GRUu(q1,tq)
3)根据query向量q2计算错误的结束位置P2概率分布;
其中为两个可训练的权重,q2为可训练的结束位置的查询向量,p2为结束位置的概率分布。
4)计算具体起始位置P1与具体结束位置P2
5)结束。
其中步骤4所述的预测修复内容的说明:
模型对起始位置之前与结束位置之后的内容进行编码,并在此基础上利用循环神经网络 (RNN),结合注意力(Attention)机制,循环生成预测的token内容。将前后文分开编码,能够较好的利用前后正确代码的上下文信息,而不引入错误代码片段的影响。RNN能够恰当的生成不定长的模型输出。Attention机制能够更好的利用原文的字面信息,在多个其他任务中都取得了不错的结果。具体步骤如下:
1)编码错误位置前后文状态信息。拼接错误起始位置P1之前信息与错误结束位置P2之后信息:
其中hi为模型编码的输出hLe
2)使用GRU,循环的生成隐藏状态:
其中x0为输入的token序列。
3)预测当前位置是否需要从源代码中复制:
其中Wc、bc为可训练参数。
4)预测复制的token的位置:
其中sc为预测是否拷贝的向量表示。
5)预测生成的token的id:
其中ss为预测是否拷贝的向量表示,Ws为可训练参数。
6)当生成的token为<END>,结束,否则转步骤3),继续预测下一个token。
7)结束。
其中步骤5所述的生成新的修复代码的操作并修复错误:
对于一段错误代码I,我们将产生一个预测的修复错误的操作。我们定义一个错误的修复操作0为(P1,P2,C,Wc,Ws),其中P1为错误起始位置,P2为错误结束位置,C为是否从原代码中拷贝的列表,Wc为复制的token在源代码中的位置的列表,Ws为生成的token的id列表,其中C,Wc,Ws为相同长度的列表。对于一个给定的错误修复操作O=(p1,p2,c,wc,ws),生成新代码的操作如下:
1)得到输入序列I:
I=[w1,w2,...,wL]
2)判断此位置是否需要拷贝,如果需要拷贝,则转步骤3)。若不需要拷贝,则转步骤4);
3)如果此位置需要拷贝,从输入序列I中获得第个token。转步骤5)
4)如果此位置不需要拷贝,则此处生成的token即为转步骤5)
5)若生成的token不为<END>且仍然有后续token,则重新回到步骤2)。最终得到完整的生成token序列wr
6)生成的新代码:
I′=I[:p1]+wr+I[p2:]
7)结束。
其中步骤6所述的检测代码纠错结果,迭代修复错误的说明:
在生成一个修复操作之后,我们根据操作生成一段新的代码,并编译这段代码。若代码中仍然存在语法错误,则重新回到步骤1生成不完全的抽象语法树,进入新的一次迭代,生成新的错误修复操作,在之前修改的基础上迭代的修复错误代码。这种错误修复方式,能够解决一份代码中存在多个语法错误。同时,由于每次修复的操作都是选择错误可能性最高的位置,因此能够最小化引入新错误的可能性。最终停止修复的条件有如下两种:1)代码纠错完成;2)迭代次数超过限制。具体步骤如下:
1)根据源代码I,预测错误的修复操作O=(p1,p2,c,wc,ws)。
2)根据错误修复操作O=(p1,p2,c,wc,ws)和源代码I,生成修复的代码I′;
3)尝试编译这段代码,获得编译结果;
4)若编译出错且未达停止修复条件,则重新回到步骤1),重新预测错误的修复操作
5)若编译出错且达到停止修复条件,则修复失败,结束。
6)若编译成功,则修复成功,结束。
在整个神经网络中,隐藏层大小均为400,编码网络层数Le为3。模型使用已标记错误修复操作的错误代码作为训练数据。在实验中,我们通过修改正确代码得到语法错误的代码,并记录修改的动作生成相应的错误修复操作。模型使用Adam算法进行训练。
附图说明
图1基于不完全抽象语法树的代码语法错误修复方法流程图
图2生成不完全抽象语法树流程图
图3输入序列示例图
图4编码代码信息流程图
图5修复错误并生成新的代码流程图
图6迭代修复错误流程图
具体实施方式
为了加深对本发明的理解,下面结合附图和实施例对本发明进一步说明,该实施例仅用于解释本发明,并不对本发明的保护范围构成限定。
图1是基于不完全抽象语法树的代码语法错误修复方法流程图。首先,系统生成错误代码的不完全的AST树,根据文本与AST树编码代码信息,利用神经网络预测代码发生语法错误的位置和修复的内容,还原并验证新的代码,重复迭代修复直至修复全部语法错误。
图2描述了生成基于代码的不完全抽象语法树的输入序列的具体流程图。我们选用 PYCParser工具对错误的C代码进行编译。具体步骤如下:
1)利用词法分析工具CLex将错误的C语言代码划分为一个token序列,得到token的id序列Itoken
2)将代码输入PYCParser中,编译代码
3)捕获AST异常,从symstack栈中获得不完全AST
4)深度优先搜索整个AST的所有节点,根据字典生成节点的id队列Iast
5)将节点id队列Iast连接到token的id队列Itoken末尾,得到输入的序列I
6)记录AST中连接的节点的边,将节点与对应token连接,生成边集合E
7)计算输入序列I的长度L。构造一个大小为L*L的矩阵,初始值为0。根据边集合E,将存在边的位置置为1,得到邻接矩阵A
8)结束
图3描述了步骤1得到的最终输入序列I示例。序列由5部分组成:<BEGIN>节点,代码的token序列,<Delimiter>节点,AST节点序列,<END>节点。
图4描述了编码代码信息的具体流程图。具体步骤如下:
1)计算输入序列中每个token的向量表示:
I=[w1,w2,...,wL]
xi=E[wi],i=1,2,...,L
2)由前馈神经网络计算初始的每个位置的状态:
3)从第0层开始,进行多层的信息传播与更新。在每层编码中,利用6RU更新每个节点的节点信息。更新节点状态
其中j为编码的层数。
4)由邻接矩阵A和节点状态传播和更新节点信息为
其中j为编码的层数。
5)取Le层的隐藏层状态为编码的输出。
6)结束
图5描述了修复错误并生成新的代码的操作的具体流程图。对于一段错误代码I,我们将产生一个预测的修复错误的操作。我们定义一个错误的修复操作为(P1,P2,C,Wc,Ws),其中P1为错误起始位置,P2为错误结束位置,C为是否从原代码中拷贝的列表,Wc为复制的token在源代码中的位置的列表,Ws为生成的token的id列表,其中C,Wc,Ws为相同长度的列表。一组(C[i],Wc[i],Ws[i])可以确定一个唯一的token,i表示位置。因此模型的输出可以预测一个连续的token序列。对于一个给定的错误修复操作O=(p1,p2,c,wc,ws),生成新代码的操作如下:
1)得到输入序列I:
I=[w1,w2,...,wL]
2)根据ci判断位置i是否需要拷贝,如果需要拷贝,则转步骤3)。若不需要拷贝,则转步骤 4);
3)如果此位置需要拷贝,从输入序列I中获得第个token。转步骤5)
4)如果此位置不需要拷贝,则此处生成的token即为转步骤5)
5)若生成的token不为<END>且仍然有后续token,则重新回到步骤2),i向后自增1。最终得到完整的生成token序列wr
6)生成的新代码
I′=I[:p1]+wr+I[p2:]
7)结束。
图6描述了检测代码纠错结果,迭代修复错误的具体流程图。在生成一个修复操作之后,我们根据操作生成一段新的代码,并编译这段代码。若代码中仍然存在语法错误,则重新回到步骤1生成不完全的抽象语法树,进入新的一次迭代,生成新的错误操作,在之前修改的基础上迭代的修复错误代码。这种错误修复方式,能够解决一份代码中存在多个语法错误。同时,由于每次修复的操作都是选择错误可能性最高的位置,因此能够最小化引入新错误的可能性。最终停止修复的条件有如下两种:1)代码纠错完成;2)迭代次数超过限制。具体步骤如下:
1)根据源代码I,预测错误的修复操作O=(p1,p2,c,wc,ws)。
2)根据错误修复操作O=(p1,p2,c,wc,ws)和源代码I,生成修复的代码I′;
3)尝试编译这段代码,获得编译结果;
4)若编译出错且未达迭代次数上限,则重新回到步骤1),重新预测错误的修复操作
5)若编译出错且达到迭代次数上限,则修复失败,结束。
6)若编译成功,则修复成功,结束。

Claims (7)

1.一种基于不完全抽象语法树(Abstract Syntax Tree,AST)的代码语法错误修复方法,其特征在于该方法包括以下步骤:
1)生成基于不完全的AST树的输入序列;
2)编码代码信息;
3)预测错误位置;
4)预测修复内容;
5)根据预测的修复操作,生成新的代码;
6)检测代码纠错结果,迭代修复错误;
7)结束。
2.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:生成代码的不完全抽象语法树,在底向上的LALR方法生成语法错误代码的语法树的过程中,语法解析器将会在某个状态查询到无合法的归约节点(分析表中对应位置为空),因而产生错误,我们利用已经推导的部分语法节点信息,构建一个未推导完成的不完全的抽象语法树信息,将AST信息以图G=(V;E;X)的形式进行保存,具体步骤如下:
1)利用词法分析工具将代码划分为一个标记(token)序列,根据字典生成token的id序列Itoken
2)将代码输入语法解析器中,尝试进行编译;
3)捕获AST异常,获得之前已经推导完成的节点信息,组成不完全AST;
4)深度优先搜索整个不完全的AST的所有节点,根据字典生成节点的id队列Iast
5)将节点id队列Iast连接到token的id队列Itoken末尾,得到输入的序列I;
6)生成边集合,包含两种类型的边:①AST中连接的节点的边,②AST的节点与对应的token相连;
7)计算输入序列I的长度L,构造一个大小为L*L的矩阵,初始值为0,根据边集合E,将矩阵中对应位置置为1,得到邻接矩阵A;
8)结束。
3.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:编码代码信息,模型编码输入序列I、邻接矩阵A,转换为中间状态,利用图传播网络对输入的图进行编码,随着节点信息在每层的传播,节点的信息将传递到周围的节点并更新,具体步骤如下:
1)利用embedding模块编码token的id序列I,获得token的向量表示:
I=[w1,w2,...,wL]
xi=E[wi],i=1,2,...,L
2)由前馈神经网络计算初始的每个位置的状态h(0)
3)进行多层的信息传播与更新,在每层编码中,先用GRU对当前节点信息进行更新,再利用GGNN网络,根据邻接矩阵A将更新后的信息传播到相邻(相连)的节点:
其中j为编码的层数;
4)取Le层的隐藏层状态为编码的输出h,Le为模型的超参数编码层数;
5)结束。
4.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:预测错误位置,模型利用权利要求3中计算得到的编码信息,预测错误代码的起始位置P1与结束位置P2,起始位置与结束位置之间的内容是预测的错误的代码片段,具体步骤如下:
1)根据encoder的输出h与查询向量q1计算错误的起始位置P1概率分布;
其中为可训练的权重,q1为可训练的起始位置的查询向量,p1为起始位置的概率分布;
2)根据起始位置P1概率分布更新查询向量q1为新的查询向量q2
q2=GRUu(q1,tq)
3)根据查询向量q2计算错误的结束位置P2概率分布;
其中为两个可训练的权重,q2为可训练的结束位置的查询向量,p2为结束位置的概率分布;
4)计算具体起始位置P1与具体结束位置P2
5)结束。
5.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:预测修复内容,模型对起始位置之前与结束位置之后的内容进行编码,并在此基础上利用循环神经网络(RNN),结合注意力(Attention)机制,循环生成预测的token内容,将前后文分开编码,能够较好的利用前后正确代码的上下文信息,而不引入错误代码片段的影响,RNN能够恰当的生成不定长的模型输出,Attention机制能够更好的利用原文的字面信息,在多个其他任务中都取得了不错的结果,具体步骤如下:
1)编码错误位置前后文状态信息,拼接错误起始位置P1之前信息与错误结束位置P2之后信息:
其中hi为模型编码的输出hLe
2)使用GRU,循环的生成隐藏状态:
其中x0为输入token的向量表示;
3)预测当前位置是否需要从源代码中复制:
其中Wc、bc为可训练参数;
4)预测复制的token的位置:
其中sc为预测是否拷贝的向量表示;
5)预测生成的token的id:
其中ss为预测是否拷贝的向量表示,Ws为可训练参数;
6)当生成的token为<END>,结束,否则转步骤2),继续预测下一个token;
7)结束。
6.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:生成新的修复代码的操作并修复错误,对于一段错误代码I,我们将生成一个预测的修复错误的操作,定义一个错误的修复操作为(P1,P2,C,Wc,Ws),其中P1为错误起始位置,P2为错误结束位置,C为是否从原代码中拷贝的列表,Wc为复制的token在源代码中的位置的列表,Ws为生成的token的id列表,其中C,Wc,Ws为相同长度的列表,对于一个给定的错误修复操作O=(p1,p2,c,wc,ws),生成新代码的操作如下:
1)得到输入序列I:
I=[w1,w2,...,wL]
其中w为token;
2)将i赋值为1,从1开始逐个遍历修复操作的列表;
3)判断此位置ci是否需要拷贝,如果需要拷贝,则转步骤4);不需要拷贝,则转步骤5);
4)如果此位置需要拷贝,从输入序列I中获得第个token;步骤6);
5)如果此位置不需要拷贝,则此处生成的token即为步骤6);
6)若生成的token不为<END>且仍然有后续token,则重新回到步骤3),生成下一个token;最终得到完整的生成token序列wr
7)生成的新代码为:
I′=I[:p1]+wr+I[p2:]
其中p1为错误起始位置,p2为错误结束位置;
8)结束。
7.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:检测代码纠错结果,迭代修复错误,在生成一个修复操作之后,我们按照权利要求6所述方式生成一段新的代码,并编译这段代码,若代码中仍然存在语法错误,则重新回到步骤1生成不完全的抽象语法树,进入新的一次迭代,生成新的错误修复操作,在之前修改的基础上迭代的修复错误代码,这种错误修复方式,能够解决一份代码中存在多个语法错误,同时,由于每次修复的操作都是选择错误可能性最高的位置,因此能够最小化引入新错误的可能性,最终停止修复的条件有如下两种:1)代码纠错完成;2)迭代次数超过限制,具体步骤如下:
1)根据源代码I,预测错误的修复操作O=(p1,p2,c,wc,ws);
2)根据错误修复操作O=(p1,p2,c,wc,ws)和源代码I,生成修复的代码I′;
3)尝试编译这段代码,获得编译结果;
4)若编译出错且未达停止修复条件,则重新回到步骤1),重新预测错误的修复操作;
5)若编译出错且达到停止修复条件,则修复失败,结束;
6)若编译成功,则修复成功,结束。
CN201910219636.8A 2019-03-19 2019-03-19 一种基于不完全抽象语法树的代码语法错误修复方法 Pending CN110362310A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910219636.8A CN110362310A (zh) 2019-03-19 2019-03-19 一种基于不完全抽象语法树的代码语法错误修复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910219636.8A CN110362310A (zh) 2019-03-19 2019-03-19 一种基于不完全抽象语法树的代码语法错误修复方法

Publications (1)

Publication Number Publication Date
CN110362310A true CN110362310A (zh) 2019-10-22

Family

ID=68214723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910219636.8A Pending CN110362310A (zh) 2019-03-19 2019-03-19 一种基于不完全抽象语法树的代码语法错误修复方法

Country Status (1)

Country Link
CN (1) CN110362310A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111580825A (zh) * 2020-04-28 2020-08-25 中国科学院软件研究所 一种面向机械臂程序开发编程语言的编译方法及系统
CN112181428A (zh) * 2020-09-28 2021-01-05 北京航空航天大学 一种基于抽象语法树的开源软件缺陷数据分类方法及系统
CN112269568A (zh) * 2020-11-16 2021-01-26 加和(北京)信息科技有限公司 一种基于nlp算法的预警处理方法及系统
CN112379888A (zh) * 2020-12-02 2021-02-19 北京皮尔布莱尼软件有限公司 一种代码变更分析方法
WO2021174823A1 (zh) * 2020-07-30 2021-09-10 平安科技(深圳)有限公司 语法纠错方法、装置、计算机系统及可读存储介质
CN115686923A (zh) * 2023-01-05 2023-02-03 中国人民解放军军事科学院系统工程研究院 一种软件源代码缺陷自动修复方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160350199A1 (en) * 2015-06-01 2016-12-01 Cisco Technology, Inc. Predictive in-field memory repair scheme
CN108460117A (zh) * 2018-02-12 2018-08-28 清华大学 一种预测结果驱动的数据修复方法
CN108829438A (zh) * 2018-07-05 2018-11-16 南京大学 一种基于深度学习与程序合成的c/c++程序缺陷自动修复方法
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160350199A1 (en) * 2015-06-01 2016-12-01 Cisco Technology, Inc. Predictive in-field memory repair scheme
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法
CN108460117A (zh) * 2018-02-12 2018-08-28 清华大学 一种预测结果驱动的数据修复方法
CN108829438A (zh) * 2018-07-05 2018-11-16 南京大学 一种基于深度学习与程序合成的c/c++程序缺陷自动修复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李斌等: "" 程序自动修复:关键问题及技术"", 《软件学报》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111580825A (zh) * 2020-04-28 2020-08-25 中国科学院软件研究所 一种面向机械臂程序开发编程语言的编译方法及系统
WO2021174823A1 (zh) * 2020-07-30 2021-09-10 平安科技(深圳)有限公司 语法纠错方法、装置、计算机系统及可读存储介质
CN112181428A (zh) * 2020-09-28 2021-01-05 北京航空航天大学 一种基于抽象语法树的开源软件缺陷数据分类方法及系统
CN112269568A (zh) * 2020-11-16 2021-01-26 加和(北京)信息科技有限公司 一种基于nlp算法的预警处理方法及系统
CN112379888A (zh) * 2020-12-02 2021-02-19 北京皮尔布莱尼软件有限公司 一种代码变更分析方法
CN115686923A (zh) * 2023-01-05 2023-02-03 中国人民解放军军事科学院系统工程研究院 一种软件源代码缺陷自动修复方法及系统

Similar Documents

Publication Publication Date Title
CN110362310A (zh) 一种基于不完全抽象语法树的代码语法错误修复方法
Wang et al. Search, align, and repair: data-driven feedback generation for introductory programming exercises
Autili et al. Aligning qualitative, real-time, and probabilistic property specification patterns using a structured english grammar
Harer et al. Tree-transformer: A transformer-based method for correction of tree-structured data
CN113064586B (zh) 一种基于抽象语法树增广图模型的代码补全方法
CN103049458B (zh) 一种修正用户词库的方法和系统
CN110888798B (zh) 一种基于图卷积神经网络对软件缺陷预测方法
EP4204968A1 (en) Unit test case generation with transformers
CN112463424A (zh) 一种基于图的端到端程序修复方法
US20240070053A1 (en) Automatic generation of assert statements for unit test cases
Wu et al. Ggf: A graph-based method for programming language syntax error correction
CN115934147A (zh) 软件自动修复方法、系统、电子设备及存储介质
Culpepper Fortifying macros
Tucci et al. Parsing nonlinear languages
Engelen From napkin sketches to reliable software
Kalyon et al. A two phase smart code editor
Wang et al. Data-driven feedback generation for introductory programming exercises
Cao et al. Guaranteeing sound reactions to long-tailed changes: A syntax-directed annotation approach
Zhang et al. Patterns for Activities on Formalization Based Requirements Reuse
Zhang et al. Human-Machine Cooperative Program Translation Based on Abstract Syntax Tree
Ballis et al. Fixing web sites using correction strategies
Ráth Event-driven model transformations in domain-specific modeling languages
Gray et al. Reuse of constraint knowledge bases and problem solvers explored in engineering design
CN116069337A (zh) 一种结合修复模板与深度学习的代码缺陷自动修复方法
CN115408698A (zh) 一种基于rust-IR2Graph与RGNN的rust漏洞检测方法

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20191022

WD01 Invention patent application deemed withdrawn after publication