RunBugRun -- 一个用于自动程序修复的可执行数据集
机器学习在自动程序修复领域中广泛应用,使用神经机器翻译和大型语言模型生成软件补丁等任务,但与以往的研究存在重要差异,因此评估和比较结果必须谨慎确保其有效性和普遍性,挑战在于现有的评估基准并非针对机器学习技术设计,尤其是大型语言模型,其训练数据集通常庞大且披露不足,可能包含了其所评估的问题。
May, 2024
使用 Codex 这样的大型编程语言模型,在多模式提示、迭代式查询、基于测试用例的少样本选择和程序块组合的帮助下,构建了一个自动编程修复 (MMAPR) 系统来解决学生在 Python 编程课程中常见的语法和语义错误问题,并与已有基线方案相比较得出了较好的结果。
Sep, 2022
本文首次研究并比较了基于大型代码语言模型和基于深度学习的自动化程序修复技术在 Java 漏洞修复方面的能力,结果表明现有的语言模型和程序修复技术修复的 Java 漏洞很少,呼吁创新提高 Java 漏洞修复的自动化程度。
May, 2023
自动程序修复是减少开发人员手动调试努力并提高软件可靠性的关键。本文提出了一种新颖的检索增强型修补生成框架(RAP-Gen),通过明确利用从以前的错误修复对的代码库中检索出的相关修复模式来简化参数模型的负担,进而自动化程序修复过程。实验结果表明,RAP-Gen 在所有基准测试中显著优于先前的最先进方法,例如在 818 个 Defects4J 错误上修复了 15 个更多的错误。
Sep, 2023
提出了一种名为 CURE 的新型自动程序修复技术,通过预先训练编程语言模型和设计新的基于代码的搜索策略来解决现有神经机器翻译方法存在的限制,CURE 技术在两个广泛使用的基准测试中表现出了优异的修复效果。
Feb, 2021
采用非自回归方法 (NAR) 的自动程序修复 (APR) 技术 (NARRepair) 可在并行方式下输出目标代码,从而避免大量的推理延迟,同时提高修复精度。
Jun, 2024
本文提出了 Recoder—— 一种基于语法引导的、用于自动程序修复的编码器解码器模型,它通过生成编辑操作而不是修改代码来修复缺陷,可以高效表示小的编辑。模型支持生成可以相应项目中定义的标识符,相较于现有的 APR 方法具有更好的通用性和修复效果。
Jun, 2021
本文提出一种基于 CodeBERT 的自动化程序修复方法,使用 ManySStuBs4J 小和大数据集对模型进行微调,能够准确地预测开发人员在 19-72%的情况下实现修复代码,并可以在不到一秒钟的时间内自动生成修复程序。
Mar, 2021
本文介绍了一种名为因果程序修复(CPR)的可解释性方法,该方法基于序列到序列模型和因果推断,可以在自动程序修复的过程中生成决策解释的相关组成部分、通过数据增广来推断这些关系、生成响应的令牌图,并解决划分问题。实验表明,CPR 可以生成合理的解释因果图,并提高自动程序修复的错误修正性能。
May, 2022