ContraFix: Skill-Enhanced Contrastive Runtime Analysis for Vulnerability Repair
Beihang University(北京航空航天大学);The University of Hong Kong(香港大学)
本文提出ContraFix框架,通过差分运行时证据和可重用的修复技能,解决大型语言模型代理在自动漏洞修复中的语义误解问题,实现了在SEC-Bench和PatchEval上的高准确率。
2026-07-03 cs.AI cs.CL cs.CR
Repeton: Structured Bug Repair with ReAct-Guided Patch-and-Test Cycles
Uppsala University Sweden;Hanoi University of Science \& Technology Vietnam;Knovel Engineering Lab Singapore;The University of Alabama at Birmingham USA;Uppsala University;Hanoi University of Science \& Technology;Knovel Engineering Lab;The University of Alabama at Birmingham;Institute for Clarity in Documentation Dublin Ohio USA;Inria Paris-Rocquencourt Rocquencourt France;Rajiv Gandhi University Doimukh Arunachal Pradesh India;Tsinghua University Haidian Qu Beijing Shi China;Palmer Research Laboratories San Antonio Texas USA;Institute for Clarity in Documentation;Inria Paris-Rocquencourt;Rajiv Gandhi University;Tsinghua University;Palmer Research Laboratories
本文提出开源框架 Repeton,用 ReAct 引导的结构化补丁与测试循环替代整体修复生成,在 SWE-bench Lite 上提升补丁有效性与可解释性。
2025-06-09 cs.AI cs.SE
The Art of Repair: Optimizing Iterative Program Repair with Instruction-Tuned Models
Simula Research Laboratory(Simula研究实验室)
本文研究在每缺陷最多10个补丁的限制下,结合多输出生成与多轮迭代的程序修复策略,通过对三种指令微调LLM进行不同规模和技术的微调,在HumanEval-Java和Defects4J上验证了少量数据微调可显著提升修复效果,并揭示了迭代策略在复杂基准上的优势。
2025-05-05 cs.AI cs.CL cs.LG
SPREG: Structured Plan Repair with Entropy-Guided Test-Time Intervention for Large Language Model Reasoning
Meituan(美团)
SPREG通过熵引导的测试时干预,解决大语言模型在长链推理中的逻辑幻觉和随机漂移问题,通过动态修复机制提升推理准确性。
2026-04-20 cs.AI
Why LLMs Fail: A Failure Analysis and Partial Success Measurement for Automated Security Patch Generation
University of Passau(帕绍大学)
本研究分析了LLM在生成安全补丁时的失败原因,指出其在安全性和功能上的不足,并提出安全修复评分以量化这一差距。
2026-03-10 cs.AI cs.CR
One Readout, Many Repairs: Diffusion-Guided Hierarchical Search for Tool-Agent Repair
University of Science and Technology of China(中国科学技术大学)
针对工具智能体修复中重复操作选择导致的高计算成本问题,提出ReCommit框架,利用掩码扩散语言模型的单次并行读出评分引导分层搜索,在Agent-Diff基准上显著提升恢复率并降低修复时间。
2026-09-30 cs.AI cs.CL
Repairing Regex Vulnerabilities via Localization-Guided Instructions
Department of Computer Science, Yonsei University(延世大学计算机科学系)
针对正则表达式拒绝服务漏洞修复中规则方法泛化性差与LLM方法可靠性低的问题,提出混合框架LRR,通过符号模块定位漏洞子模式并调用LLM生成等价修复,将修复率提升15.4个百分点。
2025-10-10 cs.AI cs.PL
SocraticRepair: Planning-Guided Socratic Tutoring for Program Debugging and Misconception Repair
University of Warwick(华威大学);Warwick Manufacturing Group(华威制造集团)
本研究提出SocraticRepair框架,通过微调Qwen2.5-Coder-7B-Instruct构建面向Python编程的规划引导式苏格拉底辅导系统,可提升教学质量并减少过早透露解决方案的问题。
2026-10-14 cs.AI cs.LG
Human-competitive Patches in Automatic Program Repair with Repairnator
修理工是个机器人。它不断监控在持续集成开源软件过程中发现的软件错误,并尝试自动修复这些错误。如果它成功合成了一个有效的补丁,Repairnator会向人类开发人员推荐这个补丁,伪装成一个假的人类身份。到目前为止,Repairnator已经能够生成5个补丁,这些补丁被人类开发人员接受并永久合并到代码库中。这是软件工程中程序自动修复研究中人类竞争力的一个里程碑。
2018-10-13 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
Repairnator patches programs automatically
修理工是个机器人。它不断监控在持续集成开源软件过程中发现的软件错误,并尝试自动修复这些错误。如果它成功地合成了一个有效的补丁,Repairnator会向人类开发人员推荐这个补丁,并伪装成一个假的人类身份。到目前为止,Repairnator已经能够生成被人类开发人员接受并永久合并到代码库中的补丁。这是软件工程中程序自动修复研究中人类竞争力的一个里程碑。
2022-05-04 cs.SE
Ultra-Large Repair Search Space with Automatically Mined Templates: the Cardumen Mode of Astor
Astor是一个程序修复库,它有不同的模式。在本文中,我们提出了Astor的Cardumen模式,一种基于挖掘模板的修复方法,具有超大的搜索空间。我们评估了Cardumen在Defects4J的356个真实错误中发现测试套件足够补丁(又名合理补丁)的能力。Cardumen在Defects4J的77个bug中找到了8935个补丁。这是有史以来报道的自动合成补丁数量最多的一次,所有补丁都可以在开放科学库中获得。此外,Cardumen确定了8个独特的补丁,这些补丁是在整个程序修复历史中从未修复过的Defects4J错误的补丁。
2018-07-09 cs.SE
Automated Patch Assessment for Program Repair at Scale
在本文中,我们做的程序修复系统生成的补丁的自动正确性评估。我们将人类书写的补丁视为地面真实预言,并基于它随机生成测试,这是Shamshiri等人提出的一种技术,随机地面真值测试(RGT)。我们建立了一个由14个最先进的修复系统生成的638个Defects 4J补丁的策展数据集,我们在这个数据集上评估了自动补丁评估。本研究的结果是新颖的和有意义的:第一,我们提高了最先进的性能与RGT的自动补丁评估的190%,通过改进的预言;第二,我们表明,RGT是足够可靠的,以帮助科学家做过拟合分析,当他们评估程序修复系统;第三,我们提高了程序修复知识的外部效度与最大的研究。
2021-05-07 cs.SE
Patch Quality and Diversity of Invariant-Guided Search-Based Program Repair
大多数自动程序修复技术依赖于测试用例来指定正确的程序行为。然而,由于测试用例经常不完全覆盖期望的行为,补丁经常过拟合,并且不能推广到更广泛的需求。此外,在没有完全正确的输出的情况下,确保更高的补丁质量的方法,例如将几个补丁合并在一起或人类评估补丁推荐,受益于访问不同的补丁集合,使补丁多样性成为潜在有用的特征。我们评估的正确性和多样性的补丁生成的GenProg和不变量为基础的多样性增强扩展在我们以前的工作。我们没有发现任何证据表明,促进多样性改变补丁的正确性在积极或消极的方向。使用不变和测试用例生成驱动的度量来测量语义多样性,我们发现大多数错误的补丁之间没有观察到的语义差异,无论使用的修复技术。
2020-03-25 cs.SE
A Critical Review of "Automatic Patch Generation Learned from Human-Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair
在ICSE'2013上,有史以来第一次专门用于自动程序修复的会议。在这次会议上,Kim等人介绍了PAR,这是一种用于修复Java bug的基于模板的新方法。我们强烈反对这篇文章的主要观点。我们的评论有两个目标。首先,我们的目的是解释为什么我们不同意金和同事,为什么这种分歧背后的原因是重要的自动软件修复的研究一般。其次,我们的目标是通过澄清自动软件修复背后的基本思想来为该领域做出贡献。特别讨论了软件自动修复的主要评价标准:可理解性、正确性和完整性。我们表明,根据如何设置修复方案,评估目标可能是矛盾的。最后,我们讨论了修复的可接受性的性质和它的关系,软件正确性的概念。
2014-08-09 cs.SE
Partitioning Patches into Test-equivalence Classes for Scaling Program Repair
自动程序修复是一个寻找给定错误程序的转换(称为补丁)以消除可观察到的故障的问题。它具有重要的应用,例如提供调试辅助,自动分级作业和修补安全漏洞。所有现有修复技术面临的共同挑战是可扩展性大补丁空间,因为有许多候选补丁,这些技术显式或隐式考虑。程序修复的正确性标准通常是作为一套测试给出的,因为可能无法获得预期程序行为的正式规范。由于底层搜索算法执行的大量测试执行,当前的修复技术不能扩展。我们解决这个问题,通过引入一种方法,补丁生成的基础上的测试等价关系(如果两个程序是“测试等价”的一个给定的测试,他们在这个测试上产生难以区分的结果)。我们提出了两个测试等价关系的运行时值和依赖关系的基础上,分别提出了一个算法,执行上的飞行分区的补丁到测试等价类。我们对真实世界的程序的实验表明,所提出的方法大大减少了测试执行的数量,因此提供了一个数量级的效率提高现有的修复技术,而不牺牲补丁的质量。
2017-07-15 cs.SE
A Comprehensive Study of Code-removal Patches in Automated Program Repair
自动程序修复(APR)技术有望帮助降低调试成本。许多相关的APR技术遵循生成和验证的方法,即错误的程序迭代地修改不同的更改操作符,然后验证测试套件,直到一个合理的补丁生成。特别是,Kali是一种生成和验证技术,用于研究仅通过删除代码生成合理补丁的可能性。以前的研究表明,卡利确实成功地解决了几个错误。本文讨论了在自动程序修复中代码删除补丁的情况,调查的原因和场景,使他们的创建成为可能,以及与补丁的关系,由开发人员实现。我们的研究表明,代码删除补丁往往不足以修复错误,并提出了一个全面的分类代码删除补丁,提供的问题,可能会影响测试套件的证据,打开新的机会,研究人员在自动程序修复领域。
2021-12-15 cs.SE
From Historical Patches to Repair Plans: Outcome-Conditioned Reasoning for Repository-Level Program Repair
Concordia University(康科迪亚大学)
提出条件推理蒸馏(ConRAD),通过从已验证补丁反向重构修复推理并蒸馏出结果一致的阶段性修复计划,在推理时引导故障定位和补丁生成,无需微调或搜索,在SWE-Bench Lite上显著提升Pass@1。
2026-05-27 cs.SE
Identifying Patch Correctness in Test-Based Program Repair
基于测试的程序自动修复近年来引起了广泛的关注。然而,在实践中的测试套件往往是太弱,以保证正确性和现有的方法往往会产生大量的不正确的补丁。为了减少生成的不正确的补丁的数量,我们提出了一种新的方法,该方法可以精确地确定生成的补丁的正确性。其核心思想是利用测试用例执行的行为相似性。对原始程序和修补程序的通过测试可能表现相似,而对原始程序和修补程序的失败测试可能表现不同。此外,如果两个测试表现出类似的运行时行为,则这两个测试可能具有相同的测试结果。基于这些观察,我们生成新的测试输入,以增强测试套件,并使用它们的行为相似性,以确定补丁的正确性。我们的方法进行评估的数据集上生成的139补丁从现有的程序修复系统,包括jGenProg,Nopol,jKali,ACS和HDRepair。我们的方法成功地防止了56.3%的不正确的补丁生成,没有阻止任何正确的补丁。
2018-07-27 cs.SE
Well Begun is Half Done: Location-Aware and Trace-Guided Iterative Automated Vulnerability Repair
Yangzhou University(扬州大学);Nanjing University of Posts and Telecommunications(南京邮电大学)
\sysname通过位置感知和跟踪引导的迭代方法,改进了漏洞修复的补丁生成质量与准确性。
2025-12-23 cs.SE
Exploring the Potential of Conversational Test Suite Based Program Repair on SWE-bench
本研究针对会话式补丁生成在SWE-Bench上的潜力未被专门评估的问题,开展实验验证基于LLaMA 3.1 70B的简单会话流水线的修复效果,达到47%的有效补丁生成率,可媲美当前最优水平。
2024-10-06 cs.AI cs.MA cs.SE
FlexiRepair: Transparent Program Repair with Generic Patches
基于模板的程序修复研究需要一个共同的基础,以标准和可重用的方式表示修复模式。我们建议建立在通用补丁(也称为语义补丁)的概念上,这在Linux社区中被广泛用于自动化代码进化。我们主张通用补丁可以同时提供一个统一的表示和修复模式的规范。通用补丁确实是正式定义的,并且存在一个健壮的、适应行业的、可扩展的引擎,该引擎处理通用补丁以执行控制流代码匹配,并基于指定的更改操作自动生成具体补丁。在本文中,我们提出了一个修复框架,FLEXIREPAIR,探讨通用补丁的核心概念的设计和实现。特别是,我们展示了如何具体的通用补丁可以推断和应用在管道中的自动程序修复(APR)。通过FLEXIREPAIR,我们解决了基于模板的APR社区面临的一个紧迫挑战,即通过提供一个开放、透明和灵活的修复管道,将实施细节与实际的科学贡献分开,在此基础上,可以严格衡量和评估效率、有效性和可用性方面的所有进步。此外,由于基础工具和概念已经被广泛的从业者社区所接受,我们希望FLEXIREPAIR能够被行业所采用。在IntroClass和CodeFlaws基准测试上使用原型FLEXIREPAIR进行的初步实验表明,它已经构成了一个坚实的基线,其性能与某些最先进的性能相当。
2020-11-26 cs.SE
Dynamic Cogeneration of Bug Reproduction Test in Agentic Program Repair
Google, USA(谷歌(美国))
本文研究了在程序修复中动态共生生成测试的方法,通过在同一补丁中生成修复和测试用例,提高修复的可信度并减少维护成本。
2026-08-25 cs.AI cs.SE
MCRepair: Multi-Chunk Program Repair via Patch Optimization with Buggy Block
针对多块程序修复中依赖关系处理难、补丁空间大、候选补丁组合方法不足等问题,提出结合缺陷块、补丁优化和微调CodeBERT的MCRepair方法,在Defects4J上修复65个缺陷,性能较基线提升40%-250%。
2023-10-21 cs.SE
A Case Study of LLM for Automated Vulnerability Repair: Assessing Impact of Reasoning and Patch Validation Feedback
本研究提出VRpilot,一种基于推理和补丁验证反馈的LLM漏洞修复技术,在C和Java上分别比基线多生成14%和7.6%的正确补丁,并通过消融实验证实了这两个组件的关键作用。
2024-05-24 cs.SE
A Comprehensive Study of Automatic Program Repair on the QuixBugs Benchmark
自动程序修复论文倾向于重复使用相同的基准。这对程序修复研究团体的研究结果的外部有效性构成了威胁。在本文中,我们进行了一个实证研究的自动修复的基准称为菜的错误,这是很少研究。本文首先分析了菜bug的特点;其次研究了10种程序修复工具对菜bug的修复效果;最后采用三种补丁正确性评估技术对菜bug中过拟合补丁的存在进行了综合研究。我们的主要成果是:1)菜Bugs中有16/40的bug程序可以用至少一个测试集足够的补丁来修复; 2)所考虑的工具在菜Bugs上总共生成了338个合理的补丁,其中53.3%的补丁根据我们的人工评估是过拟合的; 3)RGT_Evosuite、RGT_InputSampling和GT_Invariants三种自动补丁正确性评估技术的准确率达到98.2%,过拟合检测率分别为80.8%和58.3%。据我们所知,这是最大的菜虫自动修复的实证研究,结合了定量和定性的见解。我们所有的实验结果都可以在GitHub上公开获得,以促进未来对自动程序修复的研究。
2020-09-28 cs.SE
KNOD: Domain Knowledge Distilled Tree Decoder for Automated Program Repair
Purdue University(普渡大学);University of Alberta(阿尔伯塔大学);Fudan University(复旦大学);University of Waterloo(滑铁卢大学)
KNOD 通过三阶段树解码器和领域规则蒸馏,将语法语义知识直接注入补丁生成过程,在多个 APR 基准上修复缺陷数量超过现有工具。
2023-04-16 cs.AI cs.SE
Patch Space Exploration using Static Analysis Feedback
本研究提出一种利用静态分析(不正确性分离逻辑)反馈指导自动程序修复的方法,通过创建等效补丁类减少验证次数,在无测试用例下高效修复内存安全问题。
2023-08-01 cs.SE
Self-Boosted Automated Program Repair
程序修复是每个软件系统生命周期中不可或缺的一部分,但可能极具挑战性。到目前为止,研究人员已经提出了各种自动程序修复(APR)技术,以减少手工调试的努力。然而,给定一个真实世界的bug程序,一个典型的APR技术通常会产生大量的补丁,其中每个补丁都需要对原始测试套件进行验证,这会产生极高的计算成本。尽管现有的APR技术已经利用各种静态和/或动态信息来更快地找到期望的补丁,但是它们仍然相当昂贵。在最近的工作中,研究人员提出了统一调试,以利用APR期间的补丁执行信息来帮助提升故障定位;这样,APR技术的应用范围可以扩展到所有可能的错误,例如,APR期间的补丁执行信息可以帮助手动修复不能自动修复的错误。受统一调试的启发,这项工作提出了SeAPR(自增强自动程序修复),第一个技术,利用早期的补丁执行信息在APR期间,以帮助提高自动修复本身的飞行。我们的基本直觉是,补丁类似于早期的高质量/低质量的补丁应该被提升/降级,以加快检测所需的补丁。这项对12个最先进的APR系统的实验研究表明,总的来说,SeAPR可以大大减少补丁执行的数量,而开销可以忽略不计。我们的研究还调查了各种配置对SeAPR的影响。最后,我们的研究表明,SeAPR甚至可以利用来自同一错误程序的其他APR工具的补丁执行信息来进一步提高APR。
2021-04-09 cs.SE
ITER: Iterative Neural Repair for Multi-Location Patches
Carnegie Mellon University(卡内基梅隆大学);KTH Royal Institute of Technology(KTH皇家理工学院)
针对现有自动化程序修复工具多局限于单位置补丁、忽视部分补丁潜力的问题,提出迭代式神经修复范式ITER,通过迭代优化部分补丁生成多位置修复方案,在Defects4J 2.0基准上实现15.5%的修复率并修复9个独有多位置缺陷。
2024-04-23 cs.LG cs.SE
Interactive Patch Filtering as Debugging Aid
广泛认识到程序修复工具需要具有高精度才能有用,即,所生成的补片需要具有高的正确概率。然而,从根本上难以确保补丁的正确性,并且许多工具在修复性能的其他方面(例如召回率)妥协以获得可接受的精度。在本文中,我们提出了一个问题:一个低精度的修复工具仍然有用吗?为了探讨这个问题,我们提出了一个互动的过滤方法来补丁审查,过滤出不正确的补丁,问问题的开发人员。我们的直觉是,不正确的补丁仍然可以帮助理解错误。有了适当的工具支持,即使有许多不正确的补丁,好处也超过了成本。我们实现的方法作为一个Eclipse插件工具,InPaFer,并与30名开发人员的模拟实验和用户研究进行评估。结果表明,我们的方法提高了修复性能的开发人员,62.5%以上的成功修复错误和25.3%的平均调试时间减少。特别地,即使生成的补丁都是不正确的,开发人员的性能也不会显著降低,并且当一些补丁提供用于修复的有用信息(诸如故障位置和部分修复)时,可以提高开发人员的性能。
2020-04-27 cs.SE
Abstain and Validate: A Dual-LLM Policy for Reducing Noise in Agentic Program Repair
Google, USA(谷歌公司);Meta, USA(Meta公司)
本文提出双LLM策略,通过bug回避和补丁验证减少代理程序修复中的噪声,提升修复成功率和可靠性。
2026-01-29 cs.AI cs.SE
Multi-Perspective Agentic Program Repair via Code Property Graphs and Temporal Execution Graphs
研究针对大语言模型在自动程序修复中的局限,提出CT-Repair框架,通过代码属性图和时间执行图表示证据,利用三阶段过滤管道及多视角智能体分析错误并生成修复策略,实验证明该方法能有效提高修复有效性。
2026-07-15 cs.AI cs.SE
Hybrid Automated Program Repair by Combining Large Language Models and Program Analysis
本文提出GIANTREPAIR方法,通过结合LLM生成补丁骨架与程序分析技术进行上下文感知的补丁实例化,有效提升了自动化程序修复在真实场景下的缺陷修复数量与性能。
2024-06-04 cs.SE
ORCA: Observability-Grounded Program Repair for Microservice Incidents
Hong Kong University of Science and Technology(香港科技大学);University of Toronto(多伦多大学)
ORCA是基于可观测性的微服务故障修复流水线,通过遥测数据提炼故障特征定位候选位置,经多智能体生成补丁并通过遥测验证器评估,在575案例基准中成本效益优于所有基线。
2026-08-19 cs.SE
Test Case Generation for Program Repair: A Study of Feasibility and Effectiveness
在许多不同种类的程序修复技术中,一个被广泛研究的技术家族被称为基于测试集的修复。测试套件本质上是输入输出规范,因此通常不足以完全指定修复中程序的预期行为。因此,基于测试套件的程序修复技术生成的补丁通过测试套件,但可能是不正确的。过于特定于所使用的测试套件而不能推广到其他测试用例的补丁被称为过拟合补丁。在本文中,我们研究的可行性和有效性的测试用例生成在缓解过拟合问题。我们提出了两种方法,使用测试用例生成,以提高测试套件为基础的修复,并进行了广泛的评估所提出的方法的有效性,使更好的测试套件为基础的修复缺陷4J存储库的224个错误。结果表明,测试用例生成可以改变产生的补丁,但不是有效地把不正确的补丁到正确的。我们确定的无效性相关的问题,并预计我们的研究结果和发现将导致未来的研究,以建立测试用例生成技术,量身定制的自动修复系统。
2017-03-01 cs.SE
On the acceptance by code reviewers of candidate security patches suggested by Automated Program Repair tools
工作背景:对自动程序修复(APR)工具提供的补丁的语义正确性进行测试和验证已受到广泛关注。然而,人类补丁评审员最终接受或拒绝现实世界项目的建议补丁受到了有限的关注。目的:为了解决这个问题,我们计划调查APR工具建议的(可能不正确的)安全补丁是否被人类审查者识别。我们还想调查是否知道一个补丁是由一个所谓的专门工具产生的,并改变了人类评审员的决定。方法:在第一阶段,使用平衡设计,我们向人类评审员提出APR工具针对不同漏洞提出的补丁组合,并要求评审员采用或拒绝提出的补丁。在第二阶段,我们告诉参与者,一些建议的补丁是由安全专用工具生成的(即使该工具实际上是一个“正常”的APR工具),并衡量人类审查者是否会改变他们的决定,采用或拒绝补丁。局限性:该实验将在学术环境中进行,为了保持力量,它将集中在流行的APR工具和流行的漏洞类型的有限样本上。
2022-09-16 cs.SE
Boosting Redundancy-based Automated Program Repair by Fine-grained Pattern Mining
针对基于冗余的自动化程序修复方法修复错误少、补丁错误多的问题,提出含两级模式挖掘的Repatt技术,在Defects4J基准上实验显示其能提升正确补丁数量、精度,结合排序策略后修复效果更优。
2025-08-26 cs.SE
Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities
本文提出DeepRepair,利用深度学习代码相似性对修复成分排序与转换,在374个缺陷程序上实验,虽补丁数量无显著提升,但能发现现有冗余修复技术无法找到的补丁。
2018-12-31 cs.SE
On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
基于测试的自动程序修复是近十年来软件工程领域的一个研究热点。确实已经提出了许多方法,这些方法利用测试套件作为对程序规范的弱但可负担的近似。尽管文献经常在可以修复的基准测试错误的数量上创造新的记录,但一些研究越来越多地提出了对最先进方法的局限性和偏见的担忧。例如,生成的补丁的正确性已在一些研究中受到质疑,而其他研究人员指出,评估方案可能会误导故障定位结果的处理。然而,有很少的工作解决补丁生成的效率,关于程序修复的实用性。在本文中,我们填补了这一空白,在文献中,通过提供一个广泛的审查测试套件的程序修复的效率。我们的目标是评估生成的补丁候选者的数量,因为这些信息与(1)有效地遍历搜索空间以选择有意义的修复尝试的策略相关,(2)最小化识别合理补丁的测试工作的策略,(3)以及优先生成正确补丁的策略。为此,我们进行了大规模的实证研究的效率,在数量上产生的补丁候选人的16个开源修复工具的Java程序。在相同的故障定位配置下仔细地进行实验以限制偏差。
2020-08-03 cs.SE
Alleviating Patch Overfitting with Automatic Test Generation: A Study of Feasibility and Effectiveness for the Nopol Repair System
在许多不同种类的程序修复技术中,一个被广泛研究的技术家族被称为基于测试集的修复。然而,测试套件本质上是输入输出规范,因此通常不足以完全指定修复下的程序的预期行为。因此,基于测试集的修复技术生成的补丁只能过拟合到使用过的测试集,而不能推广到其他测试。对程序修复中的过拟合问题进行了深入的分析,并对过拟合问题进行了分类。这种分类将有助于社区更好地理解和设计技术来解决过拟合问题。我们进一步提出并评估了一种称为UnsatGuided的方法,该方法旨在通过自动生成测试用例来缓解基于合成的修复技术的过拟合问题。该方法使用额外的自动生成的测试,以加强修复约束所使用的合成为基础的修复技术。我们分析了Unsat Guided的有效性:1)分析性地缓解了两种不同类型的过拟合问题; 2)基于对Defects 4J存储库的224个错误的实验进行经验性分析。主要结果是,自动测试生成是有效的,在缓解一种过拟合问题-回归介绍,但由于预言机的问题,对缓解另一种过拟合问题-不完全固定的积极影响很小。
2018-10-24 cs.SE
SiblingRepair: Sibling-Based Multi-Hunk Repair with Large Language Models
School of Computer Science, Wuhan University(武汉大学计算机学院)
SiblingRepair利用大型语言模型进行基于兄弟的多补丁修复,通过语义相关性搜索和两种修复策略提升修复效率和准确性,优于现有技术。
2026-05-07 cs.SE
Enhancing Automated Program Repair via Faulty Token Localization and Quality-Aware Patch Refinement
Singapore Management University(新加坡管理大学)
TokenRepair通过内部反思定位潜在故障令牌并结合质量感知的外部反馈,提升自动程序修复的效率和准确性。
2025-11-22 cs.SE
CI-Repair-Bench: A Repository-Aware Benchmark for Automated Patch Validation via CI Workflows
Software Performance, Analysis, and Reliability (SPEAR) Lab, Concordia University(康科迪亚大学软件性能、分析与可靠性实验室)
CI-Repair-Bench通过真实GitHub Actions执行构建,提供仓库级程序修复基准,包含567个CI失败实例,细粒度评估12种CI错误类型,揭示自动化修复在局部和工具强制失败上效果最佳,但环境依赖等问题仍具挑战。
2026-04-29 cs.SE
Neural Program Repair with Execution-based Backpropagation
神经机器翻译(NMT)架构在自动程序修复方面取得了可喜的成果。然而,它们具有生成低质量补丁的限制(例如,不可编译的补丁)。这是因为现有的工作仅优化基于字符和标记的纯语法损失函数,而没有在神经网络权重优化期间并入程序特定的信息。在本文中,我们提出了一种新的程序修复模型称为奖励修复。RewardRepair的核心新颖性是通过基于程序编译和测试执行信息的损失函数来改进基于NMT的程序修复,奖励网络生成可编译且不会过拟合的补丁。我们进行了几个实验来评估RewardRepair,表明使用编译和测试执行结果来优化底层神经修复模型是可行和有效的。RewardRepair在四个基准测试中正确修复了207个错误。我们报告修复成功的121个错误是固定的第一次在文献中。此外,RewardRepair生成高达45.3%的可编译补丁,比最先进的39%有所提高。
2022-04-10 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
Program Repair by Fuzzing over Patch and Input Space
提出将基于搜索的程序修复视为补丁级模糊测试,通过适配 AFL 在补丁空间探索并结合输入级模糊测试排除候选,采用免编译验证方法实现高吞吐量,共同探索输入与补丁空间以找到更高质量的补丁。
2023-08-01 cs.SE
Evaluating Representation Learning of Code Changes for Predicting Patch Correctness in Program Repair
自动程序修复的大量文献开发了生成补丁以针对oracle进行验证的方法(例如,测试套件)。因为这样的预言机可能是不完美的,所以生成的补丁尽管经过了预言机的验证,但实际上可能是不正确的。虽然最先进的探索研究方向,需要动态信息或依赖于手工制作的算法,我们研究学习代码表示的好处,学习深度功能,可能编码的补丁正确性的属性。我们的工作主要是研究不同的表示学习方法的代码变化,以获得嵌入,是服从相似性计算。我们报告基于预训练和重新训练的神经网络产生的嵌入的结果。实验结果表明,嵌入的潜力,使学习算法在推理补丁的正确性:机器学习预测器与BERT变换为基础的嵌入与逻辑回归产生的AUC值约为0.8预测补丁的正确性去重复数据集的1000标记的补丁。我们的研究表明,与依赖于动态信息的最先进的PATCH-SIM相比,学习表示可以带来合理的性能。这些表示可以进一步补充文献中仔细(手动)设计的特征。
2020-08-07 cs.SE
Automated Classification of Overfitting Patches with Statically Extracted Code Features
自动程序修复(APR)旨在降低手动修复软件缺陷的成本。然而,APR会产生大量的过拟合补丁,这些补丁除了使测试通过之外,不能正确修复缺陷。本文提出了一种新的过拟合补丁检测系统称为ODS来评估APR补丁的正确性。ODS首先静态比较修补程序和有缺陷的程序,以便在抽象语法树(AST)级别提取代码特征。然后,ODS使用具有捕获的代码特征和补丁正确性标签的监督学习来自动学习概率模型。然后,学习的ODS模型可以最终应用于对新的和看不见的程序修复补丁进行分类。我们进行了一个大规模的实验,以评估ODS的补丁正确性分类的基础上,从缺陷4J,Bugs.jar和熊基准的10,302补丁的有效性。实验结果表明,ODS对26个项目中71.9%的程序修复补丁进行了正确分类,提高了程序修复补丁的分类水平,具有一定的实用性,可以作为一种后处理方法对不同APR系统生成的补丁进行分类。
2021-08-06 cs.SE
Patch Validation in Automated Vulnerability Repair
Northwestern University(西北大学);University of Waterloo(滑铁卢大学);University of New Hampshire(新罕布什尔大学)
本文提出PVBench基准测试,揭示现有自动漏洞修复系统在补丁验证中存在显著误差,指出需提升根因分析、规范遵循和开发者意图捕捉能力。
2026-03-20 cs.SE
Trust Enhancement Issues in Program Repair
自动程序修复是一种新兴的技术,它试图使用学习、搜索和语义分析来自动纠正错误和漏洞。信任自动生成的补丁是实现程序修复的更大采用所必需的。为了实现这一目标,我们调查了100多名软件从业者,以了解增强对自动生成的补丁的信任所需的工件和设置。基于对开发人员偏好的调查反馈,我们定量评估现有的基于测试套件的程序修复工具。我们发现,他们不能产生高质量的补丁在前10名的排名和可接受的时间段为1小时。我们的定性研究中的开发人员反馈以及我们对现有修复工具的定量检查中的观察结果指出了推动程序修复研究的可操作见解。具体来说,我们注意到,在可接受的时间范围内产生修复非常依赖于利用足够丰富的搜索空间的抽象搜索空间表示。此外,虽然额外的开发人员输入对于生成或排名补丁是有价值的,但开发人员似乎对重要的人在环交互不感兴趣。
2022-02-11 cs.SE
PatchRecall: Patch-Driven Retrieval for Automated Program Repair
PatchRecall通过结合代码库检索与历史检索策略,在提升召回率的同时保持简洁,实验表明其在SWE-Bench上实现了更高的召回率且不显著增加检索文件数量,从而提升自动化程序修复效果。
2026-04-12 cs.CL cs.SE
Characterizing Multi-Hunk Patches: Divergence, Proximity, and LLM Repair Challenges
University of British Columbia(不列颠哥伦比亚大学)
针对现有自动化修复研究多聚焦单代码块场景的不足,本研究构建多代码块补丁数据集HUNK4J,提出代码块差异性指标与空间邻近性分类,通过实证实验揭示大语言模型在高分散多代码块缺陷修复上的能力缺口。
2025-11-17 cs.SE
PSearch: Search-based Patch Generation in the Era of LLM-based Automated Program Repair
Nanjing University of Science and Technology(南京理工大学);Nanjing University(南京大学);Singapore Management University(新加坡管理大学)
针对现有基于大语言模型的自动程序修复方法靠试错生成补丁、难以有效评估搜索方向潜力和分配预算的问题,提出Psearch框架,以迭代补丁评估和优化为核心,能集成不同搜索算法,实验证明其有效性。
2026-07-07 cs.SE