← 最新论文
💻 computer science

Rover: Context-aware Conflict Resolution with LLM

Rover 是一种新颖的冲突解决系统,它通过集成程序分析与多层代码属性图来生成上下文感知的提示,从而在准确解决复杂代码合并冲突方面优于现有工具。

原作者: Qingyu Zhang, Junzhe Li, Jiayi Lin, Changhua Luo, Chenxiong Qian

发布于 2026-05-19
📖 1 分钟阅读☕ 轻松阅读

原作者: Qingyu Zhang, Junzhe Li, Jiayi Lin, Changhua Luo, Chenxiong Qian

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

想象一下,你和一个朋友正在同时编辑同一本食谱。你决定在汤里加一撮盐,而你的朋友决定加一杯糖。当你尝试合并这两个版本时,食谱会感到困惑:“我们到底加盐?加糖?还是两者都加?或者都不加?”这就是合并冲突

在软件世界中,数百万开发者每天都在做这件事。通常,计算机会尝试自动解决这些冲突,但它们经常出错,因为它们只查看紧邻的文本行,而忽略了整体情况。如果你在某个文件中更改了一个变量名,它可能会破坏另一个完全不同文件中的函数。标准工具无法“看到”这种关联。

现在介绍Rover,这是一款专为解决此类冲突而设计的全新工具,堪称终极“超级编辑器”。以下是它的工作原理,通过简单的类比来说明:

1. 问题所在:“盲目”的编辑器

想象一个机器人试图在一本小说中修正拼写错误。如果机器人只查看包含拼写错误的那个句子,它可能会修正拼写,却意外破坏整个段落的含义,因为它不知道那个角色在前三章本该做什么。

当前的工具就像这个机器人。它们只查看冲突行及其紧邻的几行。它们忽略了“远距离”的关联,例如在文件 A 中定义但在文件 B 中使用的函数。

2. 解决方案:Rover 的“超级地图”(MtCPG)

Rover 不仅仅阅读文本;它构建了一个多层代码属性图(MtCPG)

你可以将其想象成整个软件项目的一张巨大、互动的地铁地图

  • 标准工具只查看事故发生的那条街道。
  • Rover 的地图则展示了每一个站点、每一条轨道,以及不同线路之间的所有连接,即使它们位于不同的城市(文件)中。

这张地图追踪:

  • 谁在与谁对话:如果一个文件中的函数调用了另一个文件中的变量,地图会在它们之间画出一条线。
  • 层级结构:它知道某行代码属于某个特定函数,而该函数又属于某个特定类。
  • “为什么”:它理解,如果你更改了一个定义,所有与之关联的内容都会受到影响,即使它们相距 100 行或位于不同的文件中。

3. 过程:寻找正确的上下文

当冲突发生时,Rover 不会仅仅抓取错误旁边的文本。相反,它利用其地铁地图来追踪关联。

  1. 定位冲突:它找到两个版本产生分歧的确切位置。
  2. 追踪线路:它沿着地图上的“轨道”追踪,找出与冲突相关的每一段代码。也许冲突涉及一个在另一个文件中定义的变量?Rover 会找到那个文件并获取那段代码。
  3. 整合线索:它将所有这些关联的代码片段收集成一个“上下文包”。这就像收集与犯罪现场相关的所有证人和证据,而不仅仅是查看犯罪现场本身。

4. 解决:智能 AI

一旦 Rover 拥有了这个丰富的“上下文包”,它就会将其交给一个大型语言模型(LLM)——一种非常擅长编写代码的智能 AI。

  • 没有 Rover:AI 只能看到一小段代码片段,必须猜测其余部分。由于缺乏上下文,它经常猜错。
  • 有了 Rover:AI 不仅能看到冲突,还能看到相关代码的完整“地铁地图”。它能看到全局。它会理解:“啊,这个变量在这里被使用,而那个函数期望这种类型的数据。”

随后,AI 会编写出完美的解决方案,同时满足两个版本的代码要求,保留两位开发者的意图。

5. 结果:为何这很重要

研究人员将 Rover 与以下工具进行了测试:

  • 标准 AI:仅让 AI 查看附近的文本。
  • 旧机器学习工具:基于特定模式训练的工具。
  • 其他“辅助”工具:试图查找相关代码但经常遗漏深层关联的工具。

结果
Rover 在解决冲突方面表现显著更优。

  • 它生成的解决方案更像人类开发者会写出的代码。
  • 它处理了复杂情况,即一个文件中的代码依赖于另一个文件中的代码,而其他工具无法解决这些问题。
  • 它能够在不同的编程语言(C、Java、Python)中工作,而无需为每种语言重新训练。

总结

可以将Rover想象成一名侦探,它不仅查看犯罪现场(冲突),还会询问每一位证人并核查每一条不在场证明(代码依赖关系),然后再破案。通过向 AI 提供软件关系的完整地图,Rover 确保了最终合并后的代码是正确的、安全的,并且确实能够运行。

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

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

试用 Digest →