← 最新论文
🤖 AI

Beyond Summaries: Structure-Aware Labeling of Code Changes with Large Language Models

本文提出了一种基于大语言模型的两阶段少样本提示流程,用于对代码变更执行结构感知且基于分类体系的标注,在实现高精确率和召回率的同时,为提升代码审查效率提供了一种灵活且与语言无关的替代传统静态分析的方法。

原作者: Bar Weiss, Antonio Abu-Nassar, Adi Sosnovich, Karen Yorav

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

原作者: Bar Weiss, Antonio Abu-Nassar, Adi Sosnovich, Karen Yorav

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

想象一下,你是这份庞大而混乱的报纸的主编。每天,数百名记者提交微小的文本片段(补丁)以供刊登。你的任务是阅读每一个片段,准确判断它属于何种类型的变更,并为其打上标签,以便团队知道如何处理。

  • “这仅仅是一个拼写错误修正吗?”
  • “他们把整段内容移到了新页面吗?”
  • “他们重命名了故事中的某个角色吗?”
  • “这是一个全新的剧情转折吗?”

手动完成这项工作令人精疲力竭。而使用老式的计算机程序则如同试图用一本僵化的、预先写好的规则手册来整理图书馆,这本手册仅适用于英文书籍,一旦尝试整理法文书籍就会崩溃。

本文介绍了一种利用大语言模型(LLMs)——即那种能够撰写故事或与你聊天的同类型人工智能——来完成此项分类工作的新方法。但作者并非要求人工智能仅仅“总结”变更(这好比要求它撰写书评),而是让它扮演一位超级有条理的图书管理员,为每一次变更打上具体且结构化的标签。

以下是他们如何实现这一点的简要拆解:

1. 问题:“总结”陷阱

大多数人使用人工智能进行代码审查是为了获取快速总结,例如“此补丁修复了一个漏洞”。这对人类阅读很有帮助,但对于试图自动化工作流的计算机而言却毫无用处。你无法轻易地筛选或排序一堆自由文本的总结。

作者希望人工智能能完成更精确的任务:结构感知标记。他们希望人工智能在查看代码变更时,能说出“这是一个重命名",接着还能指出“哦,下面三行处的另一个变更也是同一个重命名,只是应用到了不同的文件中”。

2. 解决方案:两阶段流水线

作者构建了一个两步流程,如同工厂流水线,以确保人工智能能准确无误地完成工作,而不会感到困惑。

阶段一:“标记器”(快速扫描器)
想象一个快速扫描器,它查看单个代码片段(“差异块”),并询问:“这是什么?”

  • 它可能会说:“这看起来像是一个样式变更”(仅涉及格式)。
  • 或者:“这看起来像是一个逻辑变更"(代码实际执行了不同的操作)。
  • 它是通过查看该片段以及其前后的一小部分代码来实现的(就像阅读一个单词前后的句子来理解其含义)。

阶段二:“优化器”(侦探)
有时,扫描器会感到困惑,因为它没有看到全貌。也许它看到了变量名的变更,却不知道该变量在其他地方是如何被使用的。
优化器就是那位侦探。它一次性审视整批变更。

  • 它串联线索:“啊,扫描器在这里标记了‘重命名’,在那里也标记了‘重命名’。这两个实际上属于同一个事件!”
  • 它补充缺失的细节:“旧名称是 user_id,新名称是 client_id。”
  • 它将它们关联起来,使计算机知道它们属于同一个“故事”。

3. “魔法”与“规则手册”

本文将这种新的人工智能方法与旧的“静态分析”方法(即僵化的规则手册)进行了比较。

  • 规则手册(静态分析): 它极其准确,但就像一把只能匹配特定钥匙的锁。如果你想检查新编程语言的代码,就必须聘请工程师建造一整把新锁。这既昂贵又更新缓慢。
  • 人工智能(LLM): 它就像一位读过数百万本书的聪明实习生。它不需要为每种语言都配备一把新锁;它只需要被告知“这是该语言的规则”。它灵活、快速,并能同时处理多种不同的语言。代价是什么?它并非 100% 完美(偶尔可能会犯错),但足以变得极其有用。

4. 结果:这位实习生表现如何?

作者在真实世界的代码变更和虚构示例的混合体上测试了该系统。他们使用了四种不同的“聪明实习生”(不同的 AI 模型)。

  • 最佳表现者: 其中一个 AI 模型(Gemini-3)在查找所有变更时(召回率)约有 84% 的正确率,而在声称某项变更属于特定类型时(精确率)达到了 81% 的准确率。
  • “侦探”工作: 该系统在关联相关变更方面表现出色。如果一个函数在一个文件中被重命名,并在另一个文件中使用,该系统能正确识别这两个变更属于同一个“重命名”事件。
  • 成本: 人工智能略显“话痨”,消耗的计算机资源(Token)比旧的基于规则的方法更多,但其灵活性物有所值。

核心结论

本文表明,我们可以利用人工智能不仅仅是为了撰写代码变更的总结,而是为了自动对其进行分类和结构化

这就像从一位仅仅阅读信件并说“这很重要”的人类,升级为一位阅读信件、盖上“紧急”、“账单”和“新地址”印章,然后自动将其归档到正确抽屉的机器人。它并没有取代人类编辑,但它承担了排序和打标签的繁重工作,使整个审查过程更快、更有条理。

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

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

试用 Digest →