记录(0) A Syntax-Guided Edit Decoder for Neural Program Repair
1.简述APR目的及其过程,2.提出3个局限性,3.针对这三个局限性进行的改进,进行简要分析。4.写下了Recoder采用的两个新颖的技术,5.Recoder模型架构,6.最后照搬了文章的结果。
在后续1.会对Recoder采用的提供者决策者架构进行分析,2.对Recoder模型架构的四个组成部分(coder reader, AST reader, tree path reader, edit decoder)进行分析,3.对实验进行分析。
目录
- 1.APR
- 2.当前基于DL的APR的局限性
- 1. 会包含语法错误的程序
- 2. 对于小的编辑表示效率低(原因见3.2)
- 3. 无法生成特定于项目的标识符
- 3.Recoder:Repair Decoder针对对上述局限性的改进
- 3.1确保语法正确性
- 3.2编辑生成,显著减小补丁空间
- 3.3生成占位符
- 4.Novelty
- 1. 基于提供者/决策器体系结构的语法制导Edit Decoding(针对局限性1,2)
- 2. 占位符生成(针对局限性3)
- 5.Overview of Recoder
- 6.结果
1.APR
APR(automated program repair):有助于提高软件开发和维护的效率
最近的APR技术结合深度学习,特别是使用编译器解码器架构来生成补丁。
2.当前基于DL的APR的局限性
Limitations of current DL-based APR:
1. 会包含语法错误的程序
2. 对于小的编辑表示效率低(原因见3.2)
3. 无法生成特定于项目的标识符
3.Recoder:Repair Decoder针对对上述局限性的改进
针对上面的局限性1:扩展AST中的Non-terminals来确保生成程序的语法正确性
针对上面的局限性2:Recoder的解码器组件生成一系列编辑而不是生成新的语句;且可以从含错误代码复制sub-tree
针对上面的局限性3:生成占位符
以下依次分析
3.1确保语法正确性
编辑语法定义如下(HL:host language)
首先由规则3可以看出,在另一个语句之前插入一个语句(HLStatement)时,HLStatement自身是语法正确的。
其次,当用规则4 modify替换子树时,modify操作有两个参数。第一个参数是要替换的AST子树中的根节点的ID,第二个参数是根节点具有相同符号的AST子树,modify操作不能改变根节点。通过这种方式,modify确保了语法的正确性。第三,插入和修改操作要么使用HL的语法规则,要么复制具有相同根节点符号的子树(规则5 copy操作),最后看规则6,实例化占位符也可以确保语法的正确性( only replace a placeholder with a token whose lexical type is ⟨HLIdentifier⟩)。
以下图为例简单说明:
对于左边AST的修改操作(insert),右边的ID of Non-Term节点直接复制了左边AST的Method Invocation为根节点的子树。放在代码中理解,即为在修改的的代码中插入一个if声明,if声明含条件判断,condition左部直接复制了buggy code中的一部分(interface Type.getImplicaitPrototype()),这部分的抽象语法树刚好是以Method Invocation为根节点的那棵子树。
3.2编辑生成,显著减小补丁空间
Recoder的解码器组件生成一系列编辑而不是生成新的语句;且可以从含错误代码复制sub-tree(看3.1中的例子)。
以下buggy code为例:
上述语句仅更改一个标记,故只需要考虑仅包含一个token更改编辑的补丁空间。即要生成补丁,仅需在错误语句中选择一个标记(m1)\binom{m}{1}(1m)并用一个新标记代替即可,在该补丁空间仅包含
记录(0) A Syntax-Guided Edit Decoder for Neural Program Repair相关推荐
- Anytime项目开发记录0
Anytime,中文名:我很忙. 开发者:孤独的猫咪神. 这个项目会持续更新,直到我决定不再维护这个APP. 2014年3月10日:近日有事,暂时断更.希望可以会尽快完事. 2014年3月27日:很抱 ...
- HFSS学习记录——0. HFSS软件安装(ANSYS Electromagnetics Suite 2023 R1)
目录 0. 引言 1. 安装版本 2. 安装注意事项 3. 安装包 4. 安装步骤 5. 版本介绍 6. 版本更新内容 6.1 注意事项 6.2 使用感受 7. 有关软件的一些其他信息 7.1 各个版 ...
- 如何解决DOSBox 0.74无法运行edit指令
看王爽的书第四章,里面有一处需要DOS环境下运行edit命令,但运行之后报错. 百度之后发现是缺少一个edit.exe的文件. 解决方法如下: 首先下载edit.exe文件,文末附下载链接. 如果提前 ...
- sap 采购信息记录0净价怎么创建
我试着创建了一个可以,步骤如下: 1.ME11 创建信息记录,给个价格,保存 2.ME12 修改价格的condition ,把价格改为0 ,保存即可: 但是我觉得实际业务上是不需要的,大部分信息记录金 ...
- 记录0~9各数字出现的次数
问题:编写一个程序,输入一个整数,输出0~9各个数字在该整数中出现的次数.(<C语言程序设计>夏宽理u3t1) 我一开始写的代码: #include <stdio.h> #in ...
- Hive 版本升级记录(0.13.0 - 2.3.3)
背景: 我们这边有线上线下两套hive, 版本:0.13.0,由于版本较低,近期准备升级新的hive版本. 首先选择升级线下hive集群: 线下 hive 集群覆盖较广,牵扯大概10台左右客户端, 覆 ...
- 算法转AI平台工程师记录-0
--- vim源码安装: 1. git clone https://github.com/vim/vim.git 2. cd vim && ./configure --prefix=x ...
- 记录0.7.1版本的seata批量保存会报错的情况
at io.seata.rm.datasource.AbstractPreparedStatementProxy.addBatch(AbstractPreparedStatementProxy.jav ...
- Context-Transformer 迁移学习 few-shot目标混淆问题
论文题目: Context-Transformer: Tackling Object Confusion for Few-Shot Detection 论文地址:https://arxiv.org/p ...
最新文章
- 【转载】【贪心】各种覆盖问题
- 宁波机器人餐厅需要预约吗_拍婚纱照需要预约吗 预约婚纱照需要注意哪些问题...
- Java洛谷P5461 赦免战俘讲解
- 小米路由器mini改打印服务器_如何把家里的闲置路由器用起来
- android程序崩溃了却没法通过log查看错误日志
- 计算机一级13点,2013年计算机一级考试MsOffice备考题及答案(13)
- java dib文件 加位图文件头_位图(bmp)文件格式分析
- 小结-python连接redis的基本配置-解决远程连接问题
- 2013年6月13日星期四
- mysql sharding 方案_mysql sharding 方案 分库分表(sharding)系列(4)
- Weblogic负载均衡/Session复制之集群架构
- 架构师如何才能够设计一个安全的架构
- 杂谈:Molehill API 的体现
- yml文件配置数据库
- python实时读取串口数据_串口的数据采集、以及数据的实时显示
- 哈哈哈,这个勒索软件笑死我了!太菜了~
- 【PHP基础-3】PHP常用运算符
- 基于单片机的测量心率脉搏健康系统设计与
- 取消iphone 自动更新提示
- .htaccess技巧: URL重写(Rewrite)与重定向(Redirect)