论文
BBCFixer:以执行差异引导依赖行为破坏修复
Who Broke Me? Execution-Guided Repair of Behavioral Dependency Breaks
摘要
依赖项升级可以在不更改库接口的情况下破坏下游项目。开发人员很难修复此类行为破坏性更改,因为失败的测试并不总是指向根 API(导致破坏的上游 API)。现有的基于 LLM 的修复方法从编译器反馈或库文档中获取修复证据。然而,行为中断不会产生编译器反馈,并且通常没有记录。未收到升级证据的Agent通常也不会自行检索上游证据,并且大多数失败的修复都无法识别根 API。库 diff 提供了有用的上游证据,但必须首先识别根 API 以选择 diff 的相关部分。我们提出了 BBCFixer,这是一种修复方法,可以在新旧库版本下运行失败的测试,对返回值不同的调用进行排名以识别候选根 API,并过滤与该候选库的差异。为了评估行为中断的修复,我们进一步引入了 BBCBench,这是 Python 和 JavaScript 中 100 个行为依赖中断的基准。我们将 BBCBench 上的 BBCFixer 与两个基线进行比较:(1) Pure Agent,一种不接收升级证据的Agent,以及 (2) BDUpdater,一种挖掘库文档的方法。相对于 Pure Agent,BBCFixer 的平均通过率提高了 17%,并且每次成功修复所需的Agent步骤减少了 27%。因此,BBCFixer 提供了一种选择行为破坏背后的上游证据的方法,以便 LLM Agent可以更有效和高效地修复行为破坏变化。