← 最新论文
💻 computer science

Beyond Fail-to-Pass: Iterative Hardening of Co-Generated Bug Reproduction Tests and Fixes

本文介绍了 CoHarden,一种迭代式协同生成框架,通过针对松懈且错误的补丁来强化缺陷复现测试与修复程序,从而克服了标准“失败转通过”(fail-to-pass)标准的局限性,进而显著提升了在 SWE-bench Verified 等基准测试上的自动化程序修复成功率。

原作者: Yuhao Tan, Zhibang Yang, Fangkai Yang, Yuan Yao, Yu Kang, Lu Wang, Pu Zhao, Xin Zhang, Xiaoxing Ma, Qingwei Lin, Saravan Rajmohan, Dongmei Zhang

发布于 2026-07-23
📖 1 分钟阅读☕ 轻松阅读

原作者: Yuhao Tan, Zhibang Yang, Fangkai Yang, Yuan Yao, Yu Kang, Lu Wang, Pu Zhao, Xin Zhang, Xiaoxing Ma, Qingwei Lin, Saravan Rajmohan, Dongmei Zhang

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你是一名正在试图破案的侦探,但你唯一的线索是一份模糊且不完整的目击者陈述。在计算机科学的世界里,这就是自动化程序修复(Automated Program Repair, APR)每天面临的挣扎。多年来,我们一直试图教导超级聪明的 AI 侦探(称为大语言模型)仅通过阅读这些含糊不清的“错误报告”来修复损坏的软件。问题在于,这些报告往往缺乏细节,而且 AI 可能会给出一个在纸面上看起来完美无缺、但实际上会让罪行变得更严重或让真凶逍遥法外的解决方案。为了解决这个问题,研究人员意识到 AI 需要一个“犯罪现场测试”——一个特定的、可执行的脚本,用以证明漏洞确实存在,并确认漏洞何时被真正消除。这被称为缺陷重现测试(Bug Reproduction Test, BRT)。但转折在于,仅仅因为一个测试能捕捉到漏洞,并不意味着它是一个“好”测试。有些测试就像是一个保安,只检查门是否锁上了,却不在乎小偷是否还躲在衣柜里。它们会让错误的修复方案蒙混过关。

这篇题为《超越“失败转通过”(Beyond Fail-to-Pass)》的论文,深入探讨了教导 AI 同时编写这些测试和修复漏洞时所面临的混乱现实。研究人员发现,衡量这些测试的标准方法——即检查它们是否在损坏的代码上失败、而在修复后的代码上通过(这种指标被称为**“失败转通过”,即 F→P**)——实际上太简单了。这就像只根据学生是否得到了最终答案来给数学成绩打分,而不检查他们是否使用了正确的公式。他们发现许多 AI 生成的测试是“松懈”的:它们虽然抓住了漏洞,但也意外地接受了那些看起来不错但并未真正解决问题的“伪修复”。更糟的是,当 AI 同时编写测试和修复方案时,两者往往会产生“耦合”,这意味着如果 AI 误解了漏洞,它就会写出一个错误的测试和一个错误的修复方案,两者完美地契合彼此的错误,从而欺骗系统,让系统误以为问题已得到解决。

为了解决这个问题,该团队构建了一个名为 COHARDEN 的新框架。把它想象成一个针对 AI 侦探的“严厉爱之训练营”吧。COHARDEN 不再让 AI 同时编写修复方案和测试,而是强制要求 AI 先编写测试,确保测试是基于真实的犯罪现场而非凭空猜测。随后,它进入一个“硬化”循环。在这个循环中,AI 的修复方案会被置于一群“变异”代码的对抗之中——这些变异代码是经过刻意破坏的版本,旨在伪装成解决方案,但实则并非如此。如果测试让一个变异体溜了过去,系统就知道该测试过于“松懈”,并强制 AI 重写测试,直到它足够“严谨”,能够捕捉到每一个伪造的修复。结果令人印象深刻:在衡量真实世界软件漏洞的一个主要基准测试中,COHARDEN 解决了 69.4% 的问题,以显著优势击败了以往最先进的方法。它证明了通过让测试变得更严格,并打破 AI 同时编写测试与修复的坏习惯,我们可以更接近实现真正的自动化软件修复。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →