论文

AnyPoC:通用概念验证测试生成,用于可扩展的基于 LLM 的错误检测

AnyPoC: Universal Proof-of-Concept Test Generation for Scalable LLM-Based Bug Detection

摘要

虽然最近基于 LLM 的代理可以识别源代码中的许多候选错误,但它们的报告仍然是需要手动验证的静态假设,限制了自动错误检测的实用性。我们将这一挑战视为测试生成任务:给定候选报告,综合可执行的概念验证 (PoC)(例如脚本、命令序列或精心设计的输入)以触发可疑缺陷。自动 PoC 生成可以充当可扩展的验证预言机,通过提供具体的执行证据来实现端到端的自主错误检测。然而,天真的 LLM 代理是不可靠的验证者:他们偏向于“成功”,并且可能通过产生看似合理但无功能的 PoC 甚至幻觉痕迹来奖励作弊。为了解决这个问题,我们提出了 ANYPoC,一个通用的多代理框架,它 (1) 分析和事实检查候选错误报告,(2) 在收集执行跟踪的同时迭代地综合和执行 PoC,以及 (3) 独立地重新执行和审查 PoC 以减轻幻觉和 奖励作弊。此外,ANYPoC还不断提取和演化PoC知识库来处理异构任务。 ANYPoC 对候选错误报告进行操作,无论其来源如何,并且可以与不同的错误报告器配对。为了证明实用性和通用性,我们将 ANYPoC 与简单的代理错误报告器一起应用于 12 个大型关键软件系统,包括 Firefox、Chromium、LLVM、OpenSSL、SQLite、FFmpeg 和 Redis。与最先进的 编码智能体(例如 Claude Code 和 Codex)相比,ANYPoC 为真阳性错误报告生成的有效 PoC 多出 37%,并拒绝多出 9.7 倍的假阳性错误报告。 ANYPoC 还能够从 2000 多个嘈杂的错误报告中发现 121 个新错误,其中 108 个已得到开发人员确认,92 个已修复。 46 个 PoC 也被采用作为官方回归测试。