An LLM-based Technique for Detection of Code Clones Across Open Source Microservice Repository Forks
本研究表明,利用 Codestral-22B 大语言模型进行少样本连续提示(few-shot continuous prompting)的 RAG 流程,能够有效地识别开源微服务分支中的语义代码克隆和重用模式,尽管目前在召回率方面存在局限性,但其表现优于传统的基于语法的工具。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在广阔且协作的软件开发世界中,程序员经常通过获取现有代码并将其改编用于不同目的来构建新的应用程序。这种被称为“分叉”(forking)的做法是开源创新的引擎,它允许团队站在巨人的肩膀上,而不是从零开始。然而,随着这些项目的增长和分支化,一个隐藏的复杂性随之而来:其中的代码可能会变成一张纠缠不清的重复代码网。有些副本是逐行完全相同的复制品,而另一些则是经过巧妙重写、虽然表面看起来完全不同但功能相同的版本。这些被称为“代码克隆”。对于大型软件系统(尤其是那些由许多小型、独立服务组成的系统)的维护者来说,寻找这些重复项是一项艰巨的任务。传统的工具擅长识别精确的副本,但往往无法识别出两段代码在经过重构后以完全不同的方式执行相同功能的现象。理解这些重复项存在于何处以及如何存在至关重要,因为这揭示了软件是如何演进的,哪里存在不一致性的风险,以及维持系统平稳运行究竟需要多少努力。
最近,一组研究人员通过测试一种新型数字工具,试图解决这一问题:大语言模型。这些是能够写故事或回答问题的强大人工智能系统,但在本研究中,它们被训练用来理解计算机代码的逻辑。研究人员希望看看这些模型是否可以充当一种精密的显微镜,不仅能发现完全相同的代码,还能发现传统工具会遗漏的语义相似代码。他们将调查重点放在开源微服务项目上,这类项目是构建在许多小型、可互换部件之上的现代软件系统。为了开始这项工作,他们需要教会这些模型如何识别不同类型的代码克隆。他们收集了一个包含一万对 C++ 代码片段的大规模数据集,其中一半是已知功能相同但语法不同的,另一半则是互不相关的。他们测试了三种不同的 AI 模型,范围涵盖了通用型系统以及两个专门为编程任务设计的专业化模型。他们还尝试了不同的提问方式,从简单的指令到提供示例并要求给出置信度评分的复杂提示词,进行了全方位的实验。
初步测试的结果非常具有启发性。研究人员发现,专门的编程模型明显优于通用模型。在这些模型中,一个名为 Codestral 的模型脱颖而出,它实现了 65.5% 的最高整体准确率,表现优于另外两个专业化模型和通用系统。然而,研究也揭示了一个显著的局限性:即使是最优秀的模型也会犯错。它经常会漏掉那些它本应发现的重复项,漏检率约为百分之四十。它在识别确定不同的代码方面表现良好,但在识别微妙相似性时却过于谨慎。这种高漏检率意味着,就目前而言,这些强大的工具尚不足以可靠到可以作为专业自动化管理代码的唯一手段。它们是优秀的助手,但尚不能取代人类的判断或既有的检测方法。
利用表现最好的模型和最有效的提示方式,研究人员随后将注意力转向了现实世界。他们选择了二十二对开源微服务仓库,其中一个是原始项目,另一个是由不同开发团队修改后的分叉项目。他们将这些代码库输入系统,以绘制出原始项目与分叉项目之间存在的各类重复项的图谱。研究结果清晰地描绘了这些项目的演进过程。他们发现最常见的重复类型是完全相同的副本,即代码保持不变。第二常见的类型是 Type-3 克隆,即代码经过了增删改动,但保留了原始功能。令人惊讶的是,在这些特定项目中,完全重写但功能相同代码的比例比其他类型要低。这表明,当开发者分叉一个微服务时,他们倾向于保持核心结构完整,而不是完全重新发明轮子。
为了确保自动化的发现结果值得信赖,研究人员将模型的输出与人类专家对其中三个项目进行的专家人工评审进行了对比。人类评审员确认,模型在识别最常见的重复类型方面总体是正确的,尽管具体数值会根据模型读取代码所使用的底层技术不同而有所差异。研究结论指出,虽然人工智能为理解代码之间深层的语义关系提供了一种极具前景的新途径,但它还不是一个完美的解决方案。这项技术足以观察到人类和旧工具可能忽略的模式,但在面对“完全漏掉一个重复项”这种高风险情况时仍显得力不从心。目前,这些模型最适合作为引导开发者理解复杂代码历史的指南,而非最终权威。未来的发展方向在于完善这些工具以减少错误,并将它们的语义理解能力与传统方法相结合,从而构建出软件演进更完整的图景。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。