论文

DepRepair:基于 LLM 的源代码修复,用于破坏依赖项的更改

DepRepair: LLM-Based Source-Code Repair for Dependency Breaking Changes

摘要

现代软件项目依赖于众多的第三方库,它们的更新通常会带来重大变化。使消费者代码适应这些变化仍然是劳动密集型的并且容易出错。现有工作要么在不生成经过验证的消费者端补丁的情况下描述依赖关系破坏性更改,要么仅在故障和修复上下文包含在目标存储库中的设置中研究自动修复。然而,依赖关系破坏性的更改违反了这一假设:决定性的修复证据位于发行说明和 API 差异的上游,并且没有失败的测试可以定位消费者破坏的位置,从而导致修复信息不足。为了研究真实数据上的跨存储库问题,我们引入了 DepBench,这是跨四个生态系统的 95 个真实世界依赖项更新实例的基准测试,每个实例都与运行消费者自己的测试的基于 Docker 的可执行预言机配对。为了应对这些挑战,我们提出了 DepRepair,这是一种单次调用 LLM 方法,通过三个组件在结构化上游证据中进行修复:提取相关上游更改的证据过滤器、识别受影响的消费者站点的使用定位器以及针对重大更改类型定制修复的子类别感知指南。在 DepBench 上进行评估,DepRepair 在每个主干上获得了最高的可执行通过率,GPT-5.5 达到 89.5%,Claude Opus 4.6 达到 82.1%。我们进一步发现,原始上游证据将 LLM 和代理通过率降低了 7--23 个百分点,而结构化证据持续改善了它们。