← 最新论文
💻 computer science

Prefactory: Automated Discovery and Application of Library-Adoption Refactorings

本文介绍了 Prefactory,这是一个利用大语言模型(LLM)合成可执行搜索启发式算法的自动化系统,旨在高效检测并应用 Python 代码中的库采用重构,在包含真实世界项目的全新基准测试中,其检测率和验证率均显著高于现有基准。

原作者: Islem Bouzenia, Michael Pradel

发布于 2026-07-21
📖 1 分钟阅读☕ 轻松阅读

原作者: Islem Bouzenia, Michael Pradel

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

想象一下,你是一位图书管理员,负责整理一座规模宏大且混乱的图书馆,那里的每一本书都由不同的作者撰写,并使用各自独特的风格。有些作者在“重新发明轮子”,为一些在图书馆后勤室里已经有了完美现成工具的事物,编写冗长且复杂的说明书。在计算机编程的世界里,这被称为“重构”(refactoring)。它是清理杂乱的手写代码,并将其替换为对现有、经过充分测试的库(library)的简洁、高效调用的艺术。你可以把它想象成意识到你原本可以去商店买一件完美的毛衣,却一直在亲手织一件毛衣。问题在于,寻找这些机会就像在大海捞针,尤其是当这根针看起来一点也不像针的时候。手写的代码甚至可能根本没有提到那个库的名字,它只是以一种笨拙的方式实现了同样的功能。多年来,计算机一直难以发现这些隐藏的升级机会,因为它们过于僵化,而要求一个超级智能的 AI 去阅读项目中的每一个文件又太昂用且太慢。

Prefactory 诞生了,这是一个旨在解决这个谜题的新工具。Prefactory 并不是要求超级智能的 AI 每次都从头开始阅读整个代码库(这就像雇佣一名侦探去把图书馆里的每一本书都读一遍),而是教 AI 先构建一套定制的“金属探测器”。这些探测器就像是专门针对特定形状和声音的埋藏宝藏而调校过的专业金属探测器。一旦 AI 构建了这些探测器,它们就能在眨眼之间扫描整个代码库,找到与库函数模式相匹配的那些杂乱的手写代码。当发现匹配项时,AI 会最后介入一次,执行替换操作,并仔细检查新代码的功能是否与旧代码完全一致。

研究人员在包含 100 个真实世界案例的大规模集合上测试了这个想法,在这些案例中,开发者已经成功地将手写代码替换为了库调用。他们发现 Prefactory 在识别这些机会方面表现得极其出色。它在 100 个案例中的 75 个案例里成功识别出了正确的代码文件,并在 56 个案例中精准定位到了需要修复的函数。相比之下,次优的方法(即依赖标准 AI 代理阅读代码的方法)仅在 35 个案例中找到了正确的文件,在 32 个案例中找到了正确的函数。更棒的是,Prefactory 成功生成了 40 个经过完整验证、通过所有安全性测试的、可运行的重构结果。

这种方法之所以如此特别,是因为它节省了金钱和时间。使用 Prefactory 扫描一个项目平均仅需 1.3 秒,且寻找并修复一个实例的成本不到 0.05 美元。相比之下,标准 AI 代理方法的方法成本大约是其三倍,而且由于每次都必须“思考”整个项目,耗时也更长。论文指出,通过将 AI 的知识转化为可重用的、可执行的探测器,我们可以让代码清理变得快速、廉价且可靠。然而,作者也指出该系统目前并不完美;在面对那些“手写”代码与库的标准模式差异极大的超大型、复杂库时,它有时会感到吃力,并且它无法修复涉及复杂多文件架构变更的代码。但对于绝大多数日常的代码清理任务,这种全新的“构建探测器”的方法似乎是一个游戏规则的改变者。

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

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

试用 Digest →