- 教育计划修复基准测试
为了促进竞争方法的公平比较和标准化,该研究提出了一个新颖的教育性程序修复基准,对两个高质量的编程数据集进行整理,引入一种新的评估度量指标 rouge@k 来评估修复质量,并评估了五种最近的模型以建立基础性能。
- 自动编程:大型语言模型与更多
自动编程的流行增加了对代码质量、安全性、程序修复和程序员责任等相关问题的关注,这些问题是组织在决定使用自动生成代码时所关心的关键问题,本文研究了自动编程的各个方面,并讨论了软件工程的进展,如程序修复和分析可以实现自动编程,并对未来的编程环境 - NExT:教授大型语言模型推理代码执行
通过 NExT 方法,我们可以教会大型语言模型检查程序的执行痕迹并通过推理理解其运行行为,从而显着提升程序修复能力。
- ConDefects: 解决基于 LLM 的故障定位和程序修复中的数据泄漏问题的新数据集
通过引入名为 ConDefects 的数据集,我们为故障定位和程序修复这两个任务的研究提供了一个全新的数据集,该数据集消除了已有广泛采用的基准测试中的重叠,并提供了包括 Java 和 Python 故障程序以及其修复版本在内的 1,254 - 使用 CodeT5 进行最小编辑的程序修复
通过精调预训练的 CodeT5 模型,在纠错编辑的过程中提供正确的程序建议,实验结果表明至少可以生成 100 个候选程序之一,并以最相似正确程序的平均编辑距离为 6.84,验证了语言模型在解决初级编程问题时提供最小编辑程序修复建议的有效性。
- 程序之间变量映射的图神经网络 -- 扩展版
提出使用图神经网络(GNNs)基于程序的抽象语法树(ASTs)将变量集合映射到两个程序之间,以修复初级编程作业(IPAs)中初学者经常出现的错误,并在实验中表明,与当前最先进的程序修复方法相比,仅基于变量映射的方法可以修复大约 88.5%的 - 多数原则:自洽性更好的修补
本文介绍了将基于自我一致性的技术应用于程序修复,并使用提交日志作为解释性示例输入来实现此目标,该方法在 MODIT 数据集上取得了领先的效果。
- 基于大语言模型的全自动编程
本文探讨了使用 Large Language Models 进行程序合成时,实现 Synthesize,Execute,Debug 方法的方法,包括替换或修复故障程序,以及不同基于模板和基于模型的提示生成技术,取得了比传统方法更好的表现。
- 教授大型语言模型自我调试技能
本论文结合自我调试技术和大型语言模型,提出了一种代码生成方法,不依靠反馈信息和测试用例,实现了语言模型的自我纠错和错误说明能力,从而在文本到 SQL 生成、C++ 到 Python 转换等方面,取得了更优秀的性能表现。
- EMNLPDetect-Localize-Repair: 使用 CodeT5 学习调试的统一框架
提出了一种基于预训练编程语言模型 CodeT5 的新型统一 “Detect-Localize-Repair” 框架 CodeT5-DLR,它包括三个目标,即 bug 检测、定位和程序修复,并在 Java 和 Python 的两个新收集的行级 - 自适应粘贴:通过学习语义感知的变量使用表示进行代码适应
本文介绍了 AdaptivePaste,一种基于机器学习的源代码适应方法,可用于适应已粘贴的代码片段,可以显著提高 Python 开发人员的编程效率,同时避免错误。我们评估了该方法的准确性,并进行了用户研究来确定其实际价值和改进机会。
- DeepDebug: 使用堆栈跟踪、回译和代码框架修复 Python 错误
DeepDebug 是一种使用大型预训练变压器的自动调试方法,可通过训练反转的提交数据来生成人工合成缺陷,并通过将这些缺陷应用于功能测试,提供调试信息并改进模型的预训练,并在 QuixBugs 测试中取得良好成果。
- 使用预训练 Transformer 生成错误修复
DeepDebug 是数据驱动的程序修复方法,其可以从 GitHub 代码库中挖掘的实际 Java 方法中学习检测和修复错误的方法。通过将错误修补构建为序列到序列的学习任务,它实现了两个步骤,即去噪预训练和有监督的微调。本方法显示出比以前的 - 修补即翻译:数据与隐喻
本文探讨了将计算语言学等其他领域的机器学习模型用于软件工程任务的现象,特别针对代码修复任务所面临的挑战,并通过基于本身特点的原则性模型设计以及条件编辑代码综合方案的实现与效果验证,展示了如何优化这些模型,提高其效果,促进领域的进一步创新。
- ICML基于图形的自监督程序修复技术,利用诊断反馈
本文提出了一种基于程序 -- 反馈图的图神经网络及一种用非监督学习方法构建大量程序修复样例的自监督学习范式。最终应用的 DrRepair 算法在两个应用领域上都取得了比之前的工作更好的修复效果。
- ENCORE:使用卷积神经机器翻译的集成学习进行自动程序修复
ENCORE:一个使用卷积神经网络和集成学习的自动程序修复技术,可修复四种常见编程语言中的 67 个缺陷,并在两个公共基准测试中修复了 42 个缺陷。
- 单语句 Bug 有多常见? ManySStuBs4J 数据集
提供了一个数据集,包含来自 1,000 个流行开源 Java 项目中挖掘的 153,652 个单语句代码修复,注释了它们是否与 16 个由先进程序修复技术启发的 Bug 模板之一相匹配,结果显示简单的 Bug 修复模板匹配率约为 33%,且 - SequenceR: 端到端程序修复的序列到序列学习
本文以序列到序列学习为基础,提出了一种全新的端到端程序修复方法。通过利用复制机制克服大型代码中出现的无限词汇问题,使用数据驱动的 SequenceR 系统在开放源代码上进行了评估和评测,有效地从 Defects4J 基准中找到正确的补丁。
- 面向初学编程练习的数据驱动反馈生成
本文介绍了 “搜索,对齐和修复” 数据驱动程序修复框架,旨在自动化初级编程练习的反馈生成,采用了大量的学生提交。该技术可在大型或 MOOC 规模的初级编程课程中使用,其结果表明,在平均 2 秒内,SARFGEN 系统可以为 89.7%不正确 - 动态神经程序嵌入用于程序修复
提出了一种基于程序执行轨迹学习的新型语义程序嵌入,相比于基于程序语法的嵌入,可以更准确地捕捉程序语义,并用于预测学生程序提交中的错误类型,并展示了通过该语义嵌入预测进行搜索的效率显著提高的结果。