A Deep Dive into Large Language Models for Automated Bug Localization and Repair
本文提出 Toggle 框架,利用不同 LLM 分阶段实现 token 级缺陷定位与程序修复,并通过提示优化在 CodeXGLUE 上达到 SOTA。
2024-05-10 cs.SE
BUGSPHP: A dataset for Automated Program Repair in PHP
本文提出面向 PHP 的自动化程序修复基准数据集 BUGSPHP,包含超60万条训练提交和513条经人工验证并附带测试用例的测试提交,以填补 PHP 缺陷修复研究的数据空白。
2024-01-21 cs.SE
Adversarial Patch Generation for Automated Program Repair
提出基于GAN的NEVERMORE模型,利用历史缺陷修复数据生成类人修复方案,在500个真实缺陷上21.2%匹配人类修复,并解决多个基线未修复的缺陷。
2023-09-03 cs.SE
Integrating Crash Report Mining and LLMs for Bug Localization and Repair: An Industrial Report
Federal University of Rio Grande do Norte(北里奥格兰德联邦大学);Singapore Management University(新加坡管理大学);Federal University of Pernambuco(伯南布哥联邦大学)
本研究整合崩溃报告挖掘技术与大语言模型,经对5种LLMs的评估后,在38个Java企业系统崩溃缺陷上验证,最优配置可定位71%、修复52%的缺陷,为工业调试提供有效方案。
2026-09-07 cs.SE
Can we learn from developer mistakes? Learning to localize and repair real bugs from real bug fixes
University of Oldenburg(奥尔登堡大学)
在开源仓库中找到的真正的bug修复似乎是学习本地化和修复真正bug的完美来源。然而,由于缺乏大规模的bug修复集合,过去很难在训练较大的神经模型时有效地利用真正的bug修复。相比之下,人工bug--通过改变现有源代码产生--可以很容易地以足够的规模获得,因此在现有方法的训练中通常是首选的。尽管如此,在人工错误上训练的本地化和修复模型在面对真正的错误时通常表现不佳。这就提出了一个问题,即在真实的bug修复上训练的bug定位和修复模型在定位和修复真实的bug方面是否更有效。我们通过引入RealIT来解决这个问题,这是一种预训练和微调方法,可以有效地学习从真正的错误修复中定位和修复真正的错误。RealiT首先在传统变异算子产生的大量人工bug上进行预训练,然后在较小的一组真实bug修复上进行微调。微调不需要任何修改的学习算法,因此可以很容易地采用在各种训练场景的缺陷定位或修复(即使当真正的训练数据是稀缺的)。此外,我们发现,使用Realit对真实错误修复进行训练的经验非常强大,可以将现有模型对真实错误的本地化性能提高近一倍,同时保持甚至提高修复性能。
2022-07-01 cs.LG cs.SE
Bears: An Extensible Java Bug Benchmark for Automatic Program Repair Studies
错误基准测试对于经验性地评估自动程序修复工具是必不可少的。在本文中,我们提出了熊,一个项目收集和存储错误到一个可扩展的错误基准自动修复研究在Java中。bug的收集依赖于持续集成(CI)的提交构建状态,以从GitHub上托管的开源项目中找到潜在的bug和补丁程序版本对。每一对程序版本都通过一个管道,在管道中尝试复制一个错误及其补丁。再现流水线的核心步骤是在两个程序版本上执行程序的测试套件。如果在有缺陷的程序版本候选中发现测试失败,并且在其修补程序版本候选中没有发现测试失败,则错误及其修补程序成功再现。Bears的独特之处在于使用CI(构建)来识别有缺陷和打补丁的程序版本候选者,这在过去几年中已被广泛采用在开源项目中。这种方法允许我们从各种各样的项目中收集bug,而不仅仅是使用bug跟踪系统的成熟项目。此外,Bears被设计为公开可用,并通过在给定的GitHub存储库中自动创建带有bug的分支来轻松扩展研究社区,这些分支可用于Bears存储库中的拉取请求。我们在本文中介绍的方法所采用的熊,我们提供了版本1.0的熊,其中包含251个可重复的错误收集72个项目,使用特拉维斯CI和Maven构建环境。
2019-01-17 cs.SE
A large-scale study on human-cloned changes for automated program repair
对自动程序修复的研究表明,真正的错误可以自动修复。然而,这一任务涉及的若干挑战尚未得到充分解决。作为一个例子,考虑一个基于测试套件的修复工具在程序中执行一个更改,以修复一个失败的测试用例发现的错误,但是随后同一个或另一个测试用例失败了。这可能意味着更改是对错误的部分修复,或者另一个错误已经显现。但是,修复工具会放弃更改并可能执行其他修复尝试。人们可能会想,应用的更改是否也应该应用于程序中的其他位置,以便完全修复bug。在本文中,我们感兴趣的是调查开发人员在补丁中克隆的错误修复更改的程度。我们的目标是通过在相同或相似的背景下使用相同或相似的变化来调查多位置修复的需要。为此,我们分析了来自ManySStuBs4J数据集的3,049个多块补丁,ManySStuBs4J数据集是一个单语句错误修复更改的大型数据集。我们发现,68%的多块补丁包含至少一个更改克隆组。此外,这些补丁中的大多数(70%)是严格克隆的补丁,这些补丁完全由属于一个单一的更改克隆组的更改组成。最后,大多数严格克隆的补丁(89%)包含具有相同更改的更改克隆,独立于其上下文。我们的结论是,自动化的解决方案,用于创建由相同或相似的变化组成的补丁可以修复错误是有用的。
2021-04-06 cs.SE
Better Automatic Program Repair by Using Bug Reports and Tests Together
自动程序修复已经在工业中部署,但对修复质量的担忧仍然存在。最近的研究表明,修复工具产生不正确的(但似乎是正确的)补丁的主要原因之一是不完善的故障定位(FL)。本文表明,结合自然语言的错误报告和测试执行时,本地化故障的信息可以有显着的积极影响修复质量。例如,具有这种FL的现有修复工具能够正确地修复Defects 4J基准中的7个缺陷,而现有工具没有正确地修复这些缺陷。我们开发,蓝调,第一个信息检索为基础的,语句级FL技术,不需要训练数据。我们进一步开发RAFL,第一个无监督的方法结合多种FL技术,它优于监督的方法。使用RAFL,我们通过将蓝光与基于频谱(SBFL)的技术相结合来创建SBIR。在对815个真实缺陷进行评估后,SBIR始终将错误语句的排名高于其底层技术。然后,我们修改三个国家的最先进的修复工具,Arja,SequenceR,和SimFix,使用SBIR,SBFL,和蓝调作为其内部FL。我们评估了689个真实世界的缺陷所产生的补丁的质量。Arja和SequenceR显著受益于SBIR:使用SBIR的Arja正确修复了28个缺陷,但使用SBFL时只有21个,使用Blues时只有15个;使用SBIR的SequenceR正确修复了12个缺陷,但使用SBFL时只有10个,使用Blues时只有4个。SimFix(具有克服不良FL的内部机制)使用SBIR和SBFL正确修复了30个缺陷,…
2023-02-06 cs.SE
Hierarchical Knowledge Injection for Improving LLM-based Program Repair
Drexel University(德雷塞尔大学);Belmont University(贝尔蒙特大学);Florida State University(佛罗里达州立大学)
本文提出分层知识注入框架,通过逐步提供结构化上下文提高LLM在程序修复中的表现,实现79%的修复率,展示不同bug类型对上下文层次的需求差异。
2025-10-03 cs.SE
Adversarial Bug Reports as a Security Risk in Language Model-Based Automated Program Repair
Nicolaus Copernicus University(尼古拉·哥白尼大学);TU Wien(维也纳工业大学)
本文研究对抗性错误报告对基于大语言模型的自动程序修复系统的安全威胁,通过实证分析发现现有防御措施不足,并提出自动化生成对抗性错误报告的原型框架。
2026-01-26 cs.SE
MultiFixer: A Coordinator-Proposer Based Multi-Agent Framework For Fixing Multi-Hunk Bugs
Nanjing University of Science and Technology(南京理工大学);Nanjing University(南京大学);Singapore Management University(新加坡管理大学)
该研究针对现有LLM-based APR方法难以修复多块漏洞的问题,提出MultiFixer多智能体框架,经多基准测试,其在Defects4J等数据集上达到最优修复效果,能有效修复多块漏洞。
2026-07-30 cs.SE
An Analysis of the Automatic Bug Fixing Performance of ChatGPT
为了支持软件开发人员发现和修复软件错误,已经引入了几种自动程序修复技术。给定一个测试套件,标准方法通常要么合成一个修复,要么导航一个软件编辑的搜索空间来找到测试套件通过的变体。最近的程序修复方法基于深度学习方法。ChatGPT是这些新方法中的一种,它主要不是用于自动程序修复,但仍然适用于它。然而,到目前为止,ChatGPT的bug修复性能还不清楚。因此,在本文中,我们评估ChatGPT的标准错误修复基准集,菜错误,并比较性能与其他几种方法的结果在文献中报道。我们发现ChatGPT的错误修复性能与常见的深度学习方法CoCoNut和Codex相比具有竞争力,并且明显优于标准程序修复方法的结果。与以前的方法相比,ChatGPT提供了一个对话系统,通过该系统,可以输入特定输入的预期输出或观察到的错误消息。通过向ChatGPT提供这样的提示,它的成功率可以进一步提高,修复了40个错误中的31个,超过了最先进的水平。
2023-01-20 cs.SE
Challenging Bug Prediction and Repair Models with Synthetic Bugs
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);Stanford University(斯坦福大学)
提出BugFarm,利用LLM在注意力最少位置修改代码,生成难以检测和修复的复杂缺陷,评估显示其优于现有方法。
2025-09-09 cs.LG cs.SE
A Software-Repair Robot based on Continual Learning
软件缺陷是常见的,纠正它们占软件开发和维护过程中成本的很大一部分。这就需要自动技术来处理它们。实现这一目标的一个有希望的方向是从历史错误修复示例中获得修复知识。随着机器学习范式的不断发展和通过持续集成(CI)生成的“大”错误修复数据的激增,从软件开发历史中检索见解特别有吸引力。在本文中,我们提出了R-Hero,一种新的软件修复机器人,适用于持续学习,以获得错误修复策略,从连续流的源代码更改,实现了单一的开发平台Github/Travis CI。我们描述了R-Hero,我们的新系统,用于学习如何在持续培训的基础上修复错误,我们发现了初步的成功以及社区面临的新的研究挑战。
2021-12-06 cs.SE
Self-Supervised Bug Detection and Repair
Microsoft Research(微软研究院)
基于机器学习的程序分析最近显示出集成形式和概率推理以辅助软件开发的前景。然而,在没有大型注释语料库的情况下,训练这些分析是具有挑战性的。为了解决这个问题,我们提出了BugLab,一种用于缺陷检测和修复的自监督学习方法。BugLab联合训练两个模型:(1)学习检测和修复代码中的错误的检测器模型,(2)学习创建错误代码以供检测器用作训练数据的选择器模型。BugLab的Python实现在2374个真实bug的测试数据集上的基线方法上提高了30%,并在开源软件中发现了19个以前未知的bug。
2021-11-16 cs.LG cs.SE
DEAR: A Novel Deep Learning-based Approach for Automated Program Repair
现有的基于深度学习(DL)的自动程序修复(APR)模型在修复一般软件缺陷方面受到限制。我们提出了{ \tool },这是一种基于DL的方法,支持修复一般错误,这些错误需要立即对一个或多个代码块中的一个或多个连续语句进行相关更改。我们首先设计了一种新的故障定位(FL)技术,用于多块、多语句修复,该技术将传统的基于频谱(SB)的FL与深度学习和数据流分析相结合。它接受SBFL模型返回的错误语句,检测出要立即修复的错误块,并扩展块中的错误语句$s$,以包括$s$周围的其他可疑语句。我们设计了一个基于树的两层LSTM模型,该模型结合了循环训练,并使用分治策略来学习适当的代码转换,以便在由周围子树组成的适当固定上下文中固定多个语句。我们在三个数据集上进行了几次实验来评估{ \tool }:Defects 4J(395个错误)、BigFix(+26k个错误)和CPatMiner(+44k个错误)。在Defects 4J数据集上,{ \tool }在仅使用前1个修补程序自动修复的错误数量方面优于基线,从42\%到683\ %。在BigFix数据集上,它比现有的基于DL的APR模型多修复了31- 145个错误。在CPatMiner数据集中,在667个修复的bug中,有169个(25.3%)多块/多语句bug。与最先进的基于DL的APR模型相比,{ \tool }分别多修复了71个和164个错误,其…
2022-05-04 cs.SE
Practical Program Repair via Preference-based Ensemble Strategy
针对集成多种自动程序修复(APR)工具成本过高的问题,提出非学习型集成框架P-EPR,利用修复模式动态排名APR工具,显著提升了修复的灵活性和有效性。
2023-09-15 cs.SE
InferFix: End-to-End Program Repair with LLMs
软件开发的生存周期深受bug的影响:它们的引入、识别和最终的解决方案占软件成本的很大一部分。这促使软件工程研究人员和从业人员提出不同的方法来自动识别和修复软件缺陷。通过Few-Shot演示学习和指令提示,大语言模型已经适应了程序修复任务,将其视为填充任务。然而,这些模型只专注于学习从公共存储库中挖掘的未分类错误的一般错误修复模式。在本文中,我们提出了InferFix:一个基于transformer的程序修复框架与最先进的静态分析器配对,以修复关键的安全和性能错误。InferFix结合了检索器-通过对比学习目标预训练的Transformer编码器模型,其目的是搜索语义等效的错误和相应的修复;和生成器-一个大语言模型(Codex Cushman)对监督错误修复数据进行微调,并通过错误类型注释和从外部非参数存储器检索的语义相似的修复来增强提示。为了训练和评估我们的方法,我们策划了InferredBugs,这是一个新颖的、元数据丰富的bug数据集,通过对数千个Java和C#存储库的更改历史执行Infer静态分析器来提取。我们的评估表明,InferFix优于强大的LLM基线,在C#中生成修复的前1准确率为65.6%,在Java中为76.8%。我们将讨论InferFix与Infer在微软的部署,Infer提供了一个端到端的解决方案,用于检测,分类和定位错误,以及修复和验证候选补丁,集成在持续集…
2023-03-13 cs.SE
An End-to-End Approach for Fixing Concurrency Bugs via SHB-Based Context Extractor
本文提出ConFixAgent,一种基于LLM的端到端并发bug修复工具,通过静态发生前图识别相关代码段,提升修复准确性。
2026-04-07 cs.SE
XRFix: Exploring Performance Bug Repair of Extended Reality Applications with Large Language Models
Hong Kong Baptist University(香港浸会大学);Sun Yat-sen University(中山大学);The Hong Kong Polytechnic University(香港理工大学)
该研究针对XR应用性能缺陷修复的技术挑战,提出基于大语言模型的XRFix框架,构建缺陷数据集与定制检测工具,经实验验证其修复性能优于SOTA APR方法。
2026-08-25 cs.SE
Mining Software Repair Models for Reasoning on the Search Space of Automated Program Fixing
本文通过分析软件仓库中数以千计的错误修复事务来理解错误修复的本质。然后,它将这些学习到的知识放在自动程序修复的上下文中。我们给出了大量的经验结果,在大规模和细粒度的抽象语法树差异的性质,人类的错误修复。我们建立了数学推理的搜索空间的自动修复和时间,通过应用我们的方法对14个存储库的Java软件和89,993版本事务,我们表明,并非所有的概率修复模型是等价的。
2013-11-14 cs.SE
Katana: Dual Slicing-Based Context for Learning Bug Fixes
上下文信息在软件开发人员理解和修复错误时起着至关重要的作用。因此,基于深度学习的程序修复技术利用上下文进行错误修复。然而,现有的技术以任意的方式处理上下文,通过在封闭文件、类或方法内提取与错误语句非常接近的代码,而不进行任何分析以找到与错误的实际关系。为了减少噪音,它们对用作上下文的令牌数量使用预定义的最大限制。我们提出了一个程序切片为基础的方法,而不是任意包括作为上下文的代码,我们分析的语句有一个控制或数据依赖的错误语句。我们提出了一个新的概念,称为双切片,它利用的上下文中的错误和固定版本的代码来捕获相关的修复成分。我们提出了我们的技术和工具,称为武士刀,第一个应用基于切片的上下文程序修复任务。结果表明,Katana有效地保留了足够的信息,供模型选择上下文信息,同时降低噪声。我们比较了最近四个国家的最先进的上下文感知程序修复技术。我们的研究结果表明,Katana修复的错误是现有技术的1.5到3.7倍。
2022-12-05 cs.SE
Towards an automated approach for bug fix pattern detection
缺陷数据集的特征是必不可少的,以支持自动程序修复工具的评估。在以前的工作中,我们手动研究了Defects4J数据集中近400个人类编写的补丁(bug修复),并使用属性(如修复模式)对其进行注释。然而,在不同的数据集中手动查找这些模式是繁琐和耗时的。为了解决这个问题,我们设计并实现了PPD,补丁中的修复模式检测器,它在抽象语法树级别执行源代码更改分析。在本文中,我们报告了PPD及其对Defects4J的评估,其中我们将自动检测的结果与以前的手动分析结果进行了比较。我们发现,PPD的总体精确度为91%,总体召回率为92%,我们得出结论,PPD有可能检测到尽可能多的修复模式,人类手动分析。
2018-07-30 cs.SE
On The Effectiveness of Dynamic Reduction Techniques in Automated Program Repair
针对自动化程序修复处理大规模工业级缺陷程序耗时耗资源的问题,提出集成ORBS观测切片的修复框架,通过程序约简优化修复全流程,在Defects4J数据集上实现性能提升且不降低修复质量。
2024-06-23 cs.SE
Review4Repair: Code Review Aided Automatic Program Repairing
内容:基于学习的自动程序修复技术有望为软件源代码中检测到的错误提供质量修复建议。这些工具主要利用错误和修复代码更改的历史数据,并且在应用于新代码时严重依赖错误定位器。随着代码审查的日益普及,对bug定位器的依赖可以减少。此外,基于代码评审的错误定位更值得信赖,因为评审员的专业知识和经验反映在这些建议中。目的:评审评论中的自然语言说明是关于bug的性质和预期解决方案的大量信息来源。然而,据我们所知,没有一个基于学习的工具利用评审注释来修复编程错误。在这项研究中,我们调查的性能改善修复技术使用代码审查意见。方法:我们对55,060个代码评审和相关的代码变更进行了序列到序列模型的训练。我们还介绍了新的标记化和预处理方法,这些方法有助于实现对最先进的基于学习的修复技术的显着改进。结果:我们将前1名的准确率提高了20.33%,前10名的准确率提高了34.82%。我们可以为现有技术未解决的文体和非代码错误提供建议。结论:我们相信,通过我们的方法生成的自动修复建议以及代码审查将帮助开发人员快速正确地处理审查评论,从而节省他们的时间和精力。
2020-10-06 cs.SE
The Fact Selection Problem in LLM-Based Program Repair
针对LLM程序修复中事实数量非单调有效的问题,本文定义事实选择问题并提出统计模型Maniple,针对特定bug选择事实,在157个bug测试集上修复88个,较最佳配置提升17%。
2024-08-27 cs.SE
iFixR: Bug Report driven Program Repair
问题跟踪系统通常用于现代软件开发中,用于收集来自用户和开发人员的反馈。软件维护的最终自动化目标是系统化的补丁生成用户报告的错误。虽然这一雄心与自动程序修复的势头一致,但到目前为止,文献大多集中在生成和验证设置上,其中故障定位和补丁生成由定义良好的测试套件驱动。然而,一方面,对于大多数开发环境,存在相关测试用例的常见(但很强)假设在实践中并不成立:许多错误报告没有可用的测试套件能够揭示它们。另一方面,对于许多项目,bug报告的数量通常超过了可用于分类它们的资源。为了增加从业者采用补丁生成工具,我们调查了一个新的修复管道,iFixR,驱动的错误报告:(1)错误报告被馈送到一个基于IR的故障定位器;(2)补丁生成的修复模式,并通过回归测试验证;(3)优先级列表生成的补丁,建议开发人员。我们在我们丰富的Defects 4J数据集上评估iFixR(即,故障被链接到错误报告)并仔细地重新组织(即,测试用例的时间轴自然地被分割)。iFixR使用其基于IR的故障定位器为21/44 Defects 4J故障生成真实/合理的补丁。iFixR准确地将真实/合理的补丁置于其对这些故障中的8/13的前5个建议中(在生成和验证中不使用未来的测试用例)。
2019-07-12 cs.SE
Leveraging Static Analysis for Bug Repair
本文结合 sequence-to-sequence 模型与静态分析工具 Infer,在 IR 与源代码空间协同修复资源泄漏缺陷,并通过解码策略与结果过滤实现约 97% 精确率和 66% 召回率。
2023-04-21 cs.SE
Bugfix: a standard language, database schema and repository for research on bugs and automatic program repair
针对自动程序修复领域缺乏统一参照框架的问题,提出Bugfix框架,包括标准语言、数据库和仓库,以支持APR社区试验和比较结果。
2025-02-27 cs.SE
Rethinking Automated Program Repair: The Impact of Bug Complexity, Fault Localization, and LLM Cost-efficiency
Colorado State University(科罗拉多州立大学)
本研究通过实证分析,发现中等复杂度缺陷可超50%由低成本LLM修复,不精确缺陷定位会扩大APR技术差距,高成本LLM与强推理设置并非总能提升成本效率,DeepSeek-V3.2成本效率最优。
2026-08-18 cs.AI cs.SE
A Controlled Experiment of Different Code Representations for Learning-Based Bug Repair
最近,在源代码上训练深度学习模型获得了巨大的吸引力。由于这种模型是关于数字向量的推理,因此在向量化之前,需要将源代码转换为代码表示。已经提出了许多方法来表示源代码,从令牌序列到抽象语法树。然而,目前还没有系统的研究来了解代码表征对学习成绩的影响。通过一个对照实验,我们研究了在基于深度学习的程序修复中,各种代码表示对模型准确性和有用性的影响。我们训练了21种不同的生成模型,这些模型建议修复基于名称的错误,包括14种不同的同构代码表示,4种用于错误和修复代码的混合表示,以及3种不同的嵌入。我们评估模型在各种代码表示中产生的修复建议是否可自动修补,这意味着它们可以转换为有效的代码,可以应用于错误代码以修复它。我们还进行了开发人员研究,以定性评估不同代码表示中推断修复的有用性。我们的研究结果突出了代码表示的重要性及其对学习和有用性的影响。我们的发现表明:(1)虽然代码抽象有助于学习过程,但从开发人员的角度来看,它们可能会对推断修复的有用性产生不利影响;这强调了需要从从业者的角度来看待生成的补丁,这在文献中经常被忽视,(2)混合表示可以优于同构代码表示,(3)错误类型可以影响不同代码表示的有效性;尽管当前技术针对所有错误类型使用单个代码表示,但是不存在适用于所有错误类型的单个最佳代码表示。
2022-07-15 cs.SE
How Do LLMs Read Bug Reports? An Empirical Study of Attention in LLMs for Automated Program Repair
Drexel University(德雷塞尔大学);IBM Research(IBM研究院)
研究基于大语言模型的自动程序修复中模型注意力模式,通过分析319个真实错误,探究其在错误报告各部分的分布、成功与失败修复的注意力差异及与开发者重视信息的比较,发现注意力分配错误是失败关键因素,为改进系统提供见解。
2026-07-29 cs.AI cs.SE
Writing Bug Reports for Software Repair Agents: What Information Matters Most?
USI Università della Svizzera italiana(瑞士意大利语大学);University of Sannio(萨尼奥大学)
研究软件开发中为软件修复代理编写错误报告的问题,通过对错误报告分类标注,用三个LLM主干运行mini-swe-agent,拟合回归模型,发现定位线索和建议修复等信息对代理成功更重要,传统对人类有用的信息作用较小。
2026-07-13 cs.SE
ThinkRepair: Self-Directed Automated Program Repair
本文提出自导向自动程序修复方法ThinkRepair,通过收集阶段自动收集思维链,修复阶段结合少样本学习与LLM交互修复bug,在Defects4J和QuixBugs上显著优于12个SOTA方法。
2024-07-30 cs.SE
SelfHeal: Empirical Fix Pattern Analysis and Bug Repair in LLM Agents
Oakland University(奥克兰大学)
本文研究LLM代理中的故障修复模式,提出首个基准数据集AgentDefect,并设计SelfHeal多智能体系统,利用ReAct代理结合内部和外部知识实现高效故障修复。
2026-04-20 cs.SE
Checker Bug Detection and Repair in Deep Learning Libraries
该研究首次针对TensorFlow和PyTorch中的DL checker bug开展综合研究,分析其根因、症状与修复模式,并提出基于RAG和LLM的工具TensorGuard,实现高召回率的bug检测与更优的补丁生成效果,还在JAX库中发现了新bug。
2024-10-09 cs.SE
Less is More: Adaptive Program Repair with Bug Localization and Preference Learning
Zhejiang University(浙江大学);Hohai University(河海大学);Guizhou University(贵州大学)
本文提出自适应程序修复任务 AdaPR 及两阶段方法 AdaPatcher,通过缺陷定位与偏好学习在保持代码一致性的同时以最小修改生成补丁,实验表明其效果显著优于基线方法。
2025-03-09 cs.CL cs.SE
Beyond Crash-to-Patch: Patch Evolution for Linux Kernel Repair
University of Illinois Chicago(伊利诺伊大学芝加哥分校);Indiana University(印第安纳大学)
本文研究Linux内核修复的补丁演变过程,提出PatchAdvisor框架,通过整合检索与诊断顾问,提升修复质量与审查一致性。
2026-04-04 cs.OS cs.SE
How Often Do Single-Statement Bugs Occur? The ManySStuBs4J Dataset
程序修复是软件工程中的一个重要而又困难的问题。实现可接受性能的一种方法是关注简单bug的类,例如具有单个语句修复的bug,或者匹配一小组bug模板的bug。然而,很难估计简单错误的修复技术的召回率,因为没有关于相关错误在代码中发生频率的数据集。为了填补这一空白,我们提供了一个数据集,其中包含从1,000个流行的开源Java项目中挖掘出来的153,652个单语句错误修复更改,并通过它们是否匹配16个错误模板中的任何一个进行了注释,这些模板的灵感来自最先进的程序修复技术。在最初的分析中,我们发现大约33%的简单错误修复与模板匹配,这表明相当数量的单语句错误可以用相对较小的模板集修复。此外,我们发现模板拟合错误的出现频率约为每1,600 - 2,500行代码中出现一个错误(以项目最新版本的大小衡量)。我们希望该数据集将证明为未来的工作在程序修复和经验软件工程的研究资源。
2020-04-10 cs.PL cs.SE
Bug Report Specification Refinement with Trajectory Guidance for Automated Program Repair
Concordia University(康考迪亚大学);DePaul University(德保罗大学);University of Manitoba(曼尼托巴大学)
研究针对自动程序修复中错误报告规范不完善的问题,提出TrajSpec方法,通过轨迹引导收集证据并组织成三级表示,经审查生成细化报告,实验表明该方法能有效提高修复性能。
2026-07-10 cs.SE
Human-In-The-Loop Automatic Program Repair
Monash University(莫纳什大学)
我们介绍Learn 2fix,这是第一个人在回路中的半自动修复技术,当没有错误预言时-除了报告错误的用户-可用。我们的方法与用户协商的条件下,该错误被观察到。只有当用户的查询预算耗尽时,它才会尝试修复错误。一个查询可以被认为是下面的问题:“当执行这个替代的测试输入时,程序产生下面的输出;是否观察到了bug”?通过系统化的查询,Learn 2fix训练了一个自动的错误预言,在预测用户的响应方面变得越来越准确。我们的主要挑战是在给定的小查询预算的情况下,最大限度地提高预言机在预测哪些测试是bug暴露方面的准确性。从用户标记的替代测试中,测试驱动的自动修复生成补丁。我们的实验表明,Learn 2fix学习一个足够准确的自动甲骨文与一个合理的低标签的努力(lt.20查询)。给定Learn 2fix的测试套件,GenProg测试驱动的修复工具生成更高质量的补丁(即,通过更大比例的验证测试)而不是使用与修复基准一起提供的手动测试套件。
2019-12-16 cs.AI cs.SE
Detect-Localize-Repair: A Unified Framework for Learning to Debug with CodeT5
Salesforce Research Asia(赛富时亚洲研究院)
自动化软件调试是提高软件开发人员生产力的一项重要任务。许多基于神经的技术已经被证明对调试相关的任务有效,例如错误定位和程序修复(或错误修复)。然而,这些技术往往只关注其中之一,或者以阶段性的方式接近它们,忽略了它们之间的相互利益。在这项工作中,我们提出了一种新的统一的\emph{Detect-Localize-Repair}框架的基础上,预先训练的程序设计语言模型CodeT 5无缝地解决这些任务,命名为CodeT 5-DLR。具体来说,我们提出了三个目标,以适应通用CodeT 5调试:一个错误检测目标,以确定是否一个给定的代码片段是错误或没有,一个错误的本地化目标,以确定错误行,和程序修复目标,以翻译错误的代码,其固定的版本。我们在每个任务上评估它,并在Java和Python中的两个新收集的行级调试数据集上进行组合设置。广泛的结果表明,我们的模型显着优于现有的基线从自然语言处理和软件工程域。
2022-12-22 cs.CL cs.SE
Gradient-Based Program Repair: Fixing Bugs in Continuous Program Spaces
KTH Royal Institute of Technology(皇家理工学院)
本文提出基于梯度的程序修复方法,通过在可微数值程序空间中进行连续优化,有效修复符号程序中的错误,首次将程序修复视为数值空间中的连续优化问题。
2026-03-25 cs.LG cs.PL cs.SE
Automatic Build Repair for Test Cases using Incompatible Java Versions
本文提出一种在源代码层面进行依赖最小化的方法,通过移除测试用例执行所不需要的类和方法来修复因 Java 版本不兼容导致的构建失败,并在 Defects4J 上验证了其有效性和低开销。
2024-05-03 cs.SE
Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
精心设计和公开可用的错误数据集是推进故障定位和程序修复等研究领域的宝贵资产,因为它们可以直接和公平地比较竞争技术和实验复制。这些数据集需要研究人员深入理解:诸如“我的技术可以处理哪些bug?”"和"我的技术对哪些bug有效?"取决于对bug及其补丁相关属性的理解。然而,这些属性通常不包括在数据集中,并且仍然没有广泛采用的方法来表征错误和补丁。在这项工作中,我们深入研究了Defects4J数据集的395个补丁。定量属性(补丁大小和蔓延)自动提取,而定性的(修复行动和模式)手动提取使用专题分析为基础的方法。我们发现:1)Defects4J补丁的中值大小为4行,几乎30%的补丁仅包含添加行; 2)92%的补丁仅更改一个文件,38%的补丁根本没有扩展; 3)最常用的前3个修复操作是添加方法调用,条件和赋值,发生在77%的补丁中; 95%的斑块有9种修复模式,其中条件块修复模式最多,占斑块总数的43%。这些结果有助于研究人员基于Defects4J对其技术结果进行高级分析。此外,我们的属性集可用于表征和比较不同的bug数据集。
2018-02-05 cs.SE
HIPPODROME: Data Race Repair using Static Analysis Summaries
实现无错误的并发程序是现代软件开发中的一项具有挑战性的任务。最先进的静态分析在生产代码中发现了数百个并发错误,可以扩展到大型代码库。然而,在不断变化的代码库中修复这些错误对程序员来说是一项艰巨的工作,特别是因为并发代码中的修复可能会以微妙的方式引入其他错误。在这项工作中,我们将展示如何利用组合静态分析的并发错误检测,使一个新的自动程序修复(APR)技术的数据竞赛在大型并发Java代码库。我们的工作的关键创新是一个算法,翻译的分析工具推断的程序摘要的错误报告的目的,到小的本地补丁,修复并发错误(不引入新的)。这种协同作用使得将组合静态并发分析的优点扩展到APR成为可能,使我们的方法有效(它可以检测和修复比现有工具更多的错误),可扩展(它需要几秒钟来分析和建议修复相当大的代码库),并且可用(通常,它不需要用户的注释,并且可以执行连续的自动修复)。我们对流行的开源项目进行的研究证实,我们的工具自动生成类似于开发人员过去提出的并发修复。
2021-08-06 cs.PL cs.SE
Detecting Speech Act Types in Developer Question/Answer Conversations During Bug Repair
University of Notre Dame(圣母大学);Clemson University(克莱姆森大学);Google(谷歌)
本文主要研究了语音修复会话中的言语行为检测问题。我们与30名专业程序员进行了一项“绿野仙踪”实验,程序员在两个小时内修复错误,并使用模拟的虚拟助手进行帮助。然后,我们使用一个开放的编码人工标注过程来识别会话中的言语行为类型。最后,我们训练并评估一个监督学习演算法来自动侦测对话中的言语行为类型。在30个两小时的对话中,我们做了2459个注释,发现了26种言语行为类型。我们的自动检测达到了69%的准确率和50%的召回率。这项工作的关键应用是推进虚拟助理在软件工程的艺术状态。虚拟助手技术发展迅速,但在软件工程中的应用却落后于其他领域,这主要是由于缺乏相关数据和实验。本文针对这个问题,在该地区的开发人员Q/A对话的错误修复。
2018-07-03 cs.CL cs.SE
Fixing 7,400 Bugs for 1$: Cheap Crash-Site Program Repair
本文提出崩溃点修复和模板引导补丁生成方法,实现低成本自动程序修复,结合CodeRover-S将令牌成本降低45.9%,修复率提升至73.5%,并支持本地模型运行。
2025-05-24 cs.CR cs.SE
CrossFix: Collaborative bug fixing by recommending similar bugs
已经提出了许多自动程序修复技术来修复错误。这些技术中的一些使用了给定的错误程序和测试套件之外的信息来提高生成的补丁的质量。然而,存在阻碍这些技术的广泛采用的几个限制,包括(1)它们依赖于用于补丁生成或参考实现的固定的修复模板集合,(2)搜索合适的参考实现是具有挑战性的,(3)生成的补丁是不可解释的。与此同时,最近的一种方法表明,不同的项目中存在类似的bug,人们可以使用不同项目的GitHub问题来查找相关项目的新bug。我们提出了合作修复错误,一个novelapproach,建议错误报告,描述了一个类似的错误。我们的研究重新定义了类似的错误,这些错误共享(1)相同的库,(2)相同的功能,(3)相同的复制步骤,(4)相同的配置,(5)相同的结果,或(6)相同的错误。此外,我们的研究揭示了类似错误在帮助开发人员找到更多关于错误和修复的上下文方面的有用性。基于我们的研究,我们设计了CrossFix,这是一个基于开放的GitHub问题自动建议相关GitHub问题的工具。我们对来自Java和Android项目的249个开放问题的评估表明,CrossFix可以建议类似的错误,以帮助开发人员调试和修复。
2021-03-24 cs.SE
VisualRepair: Dynamic Tool Calling and Region Focusing for Visual Software Issue Repair
The Chinese University of Hong Kong(香港中文大学);Harbin Institute of Technology(哈尔滨工业大学);Singapore Management University(新加坡管理大学)
针对现代软件视觉信息利用难题,提出VisualRepair框架,通过图像类型感知工具调用和动态测试时区域聚焦两模块,在SWE-bench基准测试中性能超现有方法,有效提升自动视觉软件问题修复能力。
2026-07-16 cs.SE
Learning to Generate Corrective Patches using Neural Machine Translation
Bug修复通常是一项手工密集型任务。然而,最近的工作提出了自动程序修复的想法,其目的是修复(至少是一个子集)的错误,以不同的方式,如代码突变等以下在同一行的工作自动修复错误,在本文中,我们的目标是利用过去的修复,提出修复当前/未来的错误。具体来说,我们提出了棘轮,一个纠正补丁生成系统,使用神经机器翻译。通过使用神经序列到序列模型学习过去修复中相应的预校正和后校正代码,Ratchet能够为给定的容易出错的代码查询生成修复代码。我们进行了实证研究与五个开源项目,即Ambari,骆驼,Hadoop,Jetty和Wicket,评估棘轮的有效性。我们的研究结果表明,棘轮可以生成语法有效的语句98.7%的时间,并实现F1的措施之间的0.29 - 0.83的实际修复采用的代码库。此外,我们使用20名参与者进行定性验证,看看生成的语句是否有助于纠正错误。我们的调查显示,Ratchet的输出被认为在许多情况下有助于修复错误,即使修复不是100%正确。
2019-07-04 cs.SE
GALA: Multimodal Graph Alignment for Bug Localization in Automated Program Repair
Sichuan University(四川大学);Peking University(北京大学)
GALA通过多模态图对齐方法,解决GUI截图场景下自动化程序修复的缺陷定位问题,通过结构化推理提升视觉与代码的映射精度。
2026-04-09 cs.SE
Bogus Bugs, Duplicates, and Revealing Comments: Data Quality Issues in NPR
本文指出自动程序修复研究中存在虚假缺陷、重复项等数据质量问题,分析其对修复性能的影响并提出补救措施,倡导以数据为中心的方法来提升APR系统的性能与鲁棒性。
2025-03-11 cs.SE
T5APR: Empowering Automated Program Repair across Languages through Checkpoint Ensemble
本文提出基于 CodeT5 和检查点集成的多语言自动程序修复方法 T5APR,在四种语言的六个基准上修复 1,985 个缺陷,其中 1,442 个为其他方法未能修复,验证了多语言 APR 的实用价值。
2024-04-30 cs.SE