AgenticSZZ: Temporal Knowledge Graph-Guided Agentic Bug-Inducing Commit Identification
AgenticSZZ 是一种新颖的方法,它利用时序知识图谱和大语言模型智能体,通过将引发缺陷的提交识别重构为图搜索问题,从而克服传统基于 git blame 方法的局限性,并借助扩展的历史上下文与因果推理显著提升检测准确率。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
侦探的新地图:AgenticSZZ 如何发现软件缺陷
想象你是一名侦探,正在破解一个谜团:是谁破坏了代码? 在软件世界中,“缺陷”(bug)是指导致程序崩溃或行为异常的错误。要修复它,你需要找到开发者无意中引入该错误的历史确切时刻。这一时刻被称为缺陷诱导提交(Bug-Inducing Commit, BIC)。
数十年来,侦探们一直使用一种名为SZZ(以其创建者命名)的标准工具。将 SZZ 想象成一把放大镜,它审视“犯罪现场”(代码修复),并问道:“谁最后修改了这行特定代码?”它使用名为 git blame 的命令,将手指指向最近修改该行代码的人。
问题所在:
本文作者发现这种旧方法存在重大缺陷。他们检查了 2000 多个真实世界的缺陷修复案例,发现40% 的情况下,这把放大镜指向了错误的人。
为什么?
- 红鲱鱼(干扰项): 有时,最后修改该行代码的人只是更改了字体颜色或添加了一个空格(一种“表面修改”)。真正的缺陷是几个月前由其他人引入的,但旧的 SZZ 工具无法越过最后那个人看到真相。
- 缺失的线索: 有时,修复根本没有触及任何旧代码行;它只是添加了新行。在这种情况下,放大镜无物可看,工具完全放弃。
解决方案:AgenticSZZ
来自女王大学(Queen's University)的 Yu Shi 及其团队构建了一个名为AgenticSZZ的新系统。他们不再仅仅查看一行代码,而是构建了一张时空地图(时序知识图谱),并聘请了一位超级侦探 AI(LLM Agent)来导航它。
以下是其工作原理,使用简单的类比:
1. 构建地图(时序知识图谱)
想象软件项目的历史不是一条直线文本,而是一张巨大的三维蜘蛛网。
- 节点: 每当开发者保存工作(一次“提交”)时,它就是网上的一个点。
- 丝线: 这张网通过两种方式连接这些点:
- 时间: 谁在谁之前?
- 结构: 谁修改了相同的文件或函数?
- 扩展: 与旧方法仅查看直接邻近区域不同,AgenticSZZ 扩展了地图。它从修复点向后追溯,同时也从“最后修改该行代码的人”处向后追溯。这确保了地图包含了旧工具忽略的“红鲱鱼”和“缺失的线索”。
2. 超级侦探(LLM Agent)
既然有了地图,就需要有人足够聪明来解读它。他们没有只是让计算机扫描列表,而是聘请了一位配备特殊工具的AI Agent。
将这个 Agent 想象成一位拥有工具包的侦探:
- 列表制作者: “给我展示主要嫌疑人。”
- 时间旅行者: “让我沿着网向后走,看看还有谁修改过这个文件。”
- 事实核查员: “阅读提交信息和代码变更,看看这个人是否真的破坏了逻辑。”
- 逻辑大脑: “这个变更作为缺陷的起因是否合理?”
Agent 不只是猜测。它探索地图,检查证据,并通过推理历史来找到真正的罪魁祸首,即使那个人远在时间线深处,或者位于项目的不同分支上。
结果:更出色的侦探
团队在三个庞大的数据集(Linux 内核、Apache 项目和 GitHub 仓库)上测试了这个新系统。以下是他们的发现:
- 成功率: 与现有最佳方法相比,AgenticSZZ 找到正确的缺陷诱导提交的频率高出 16% 到 34%。
- 解决无解之案: 它成功解决了以前无法解决的案例,例如当修复添加了新代码(“无责”案例)时,或者当缺陷是由一次提交引入的,而该提交发生在“最后修改该行代码的人”之后,但在修复之前。
- AI 的“甜蜜点”: 作者测试了不同的 AI 模型来担任侦探。他们发现,AI 必须“足够聪明”才能胜任工作。更小、更便宜的 AI 模型往往过早放弃或跳过重要步骤,导致未能找到缺陷。只有更大、更强大的模型才能成功导航复杂的历史网络。
核心启示
本文认为,发现软件缺陷不仅仅是给嫌疑人名单排序(旧方法);而是搜索复杂的历史网络(新方法)。
通过结合时空地图(扩展搜索空间)与推理 AI Agent(智能筛选嫌疑人),AgenticSZZ 解决了一个困扰软件侦探 20 年的问题。它证明,要找到缺陷的根本原因,有时你必须远远超越最后修改代码的那个人去审视。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。