Are Classical Clone Detectors Good Enough For the AI Era?
本文利用GPTCloneBench等基准系统评估九种经典代码克隆检测工具,发现经有效归一化增强的工具对AI生成克隆仍具较强检测能力,并揭示其性能差异与选型依据。
2025-09-30 cs.SE
Exploring Code Clones in Programmable Logic Controller Software
通过复制和粘贴来重用代码片段在软件开发中被广泛实践,并导致代码克隆。克隆被认为是一种反模式,因为它会对程序正确性产生负面影响,并增加维护工作量。可编程逻辑控制器(PLC)软件在代码克隆讨论中也不例外,因为开发和维护中的重用经常通过复制、粘贴和修改来实现。尽管代码克隆的存在本身可能不是问题,但随着软件系统的发展,检测、跟踪和管理克隆是很重要的。不幸的是,用于克隆检测和管理的工具支持通常不适用于PLC软件系统,或者仅限于具有精简功能集的通用工具。在本文中,我们研究了代码克隆在现实世界的PLC软件系统的基础上IEC 61131-3结构化文本和C/C++。我们扩展了一个广泛使用的克隆检测工具,并提供了规范化支持。此外,我们评估了不同类型和性质的代码克隆在所研究的系统和重构的相关性。结果揭示了克隆检测在工业自动化系统的背景下的适用性和有用性,它证明了适应IEC 611313-3语言的检测和管理工具的好处。
2017-06-13 cs.SE
Pathways to Leverage Transcompiler based Data Augmentation for Cross-Language Clone Detection
当开发人员重用代码片段以在相同或不同的软件系统中实现类似的功能时,通常会引入软件克隆。如今,许多高性能的克隆检测工具都是基于深度学习技术,并且大多用于检测用同一种程序设计语言编写的克隆,而用于检测跨语言克隆的克隆检测工具也在迅速兴起。基于深度学习的克隆检测工具的流行为研究如何进一步利用提高深度学习模型性能的已知策略来改进克隆检测工具创造了机会。在本文中,我们研究这样一种策略,数据增强,这还没有被探索的跨语言克隆检测,而不是单语言克隆检测。我们展示了如何将现有的关于transcompilers(源代码到源代码翻译器)的知识用于数据增强,以提高跨语言克隆检测模型的性能,以及适应单语言克隆检测模型来创建跨语言克隆检测管道。为了证明通过数据增强对跨语言克隆检测的性能提升,我们利用了Transcoder,这是一个预先训练的源到源翻译器。为了展示如何扩展跨语言克隆检测的单语言模型,我们扩展了一个流行的单语言模型,图匹配网络(GMN)与编译器的组合。我们在流行的基准数据集上评估了我们的模型。我们的实验结果表明,先进的跨语言克隆检测模型的F1分数有所提高(有时高达3%)。即使在扩展GMN进行跨语言克隆检测时,利用数据增强构建的模型也优于基线,精确度,召回率和F1得分分别为0.90,0.92和0.91。
2023-03-02 cs.SE
LVMapper: A Large-variance Clone Detector Using Sequencing Alignment Approach
在大规模代码库中检测大差异代码克隆(即具有相对更多差异的克隆)是困难的,因为大多数当前工具只能检测几乎相同或非常相似的克隆。它将对一些软件应用如bug检测、代码补全、软件分析等进行推广和改变。最近,CCAligner尝试检测修改相对集中的克隆,称为大缺口克隆。我们的贡献是开发一种新的和有效的检测方法的大方差克隆更一般的情况下,不仅集中的代码修改,但也分散的代码修改。借鉴和改变了生物信息学中的序列比对方法,提出了一种检测器LVMapper,它可以发现两个相似但差异较大的序列。在自合成数据集和真实案例上测试了LVMapper的能力,结果表明,与包括CCAligner在内的其他最先进的工具相比,LVMapper在检测大方差克隆方面有了实质性的改进。此外,我们的新工具还在广泛使用的基准数据集BigCloneBench上为一般Type-1,Type-2和Type-3克隆提供了良好的召回率和精度。
2019-09-10 cs.SE
MSCCD: Grammar Pluggable Clone Detection Based on ANTLR Parser Generation
由于各种原因,程序设计语言继续繁殖和发展。有必要拥有一个多语言的克隆检测工具,可以很容易地扩展支持的程序设计语言和检测各种代码克隆是必要的。然而,多语言代码克隆检测的研究还没有得到足够的重视。在这项研究中,我们提出了MSCCD(多语言语法代码克隆检测器),语法插入代码克隆检测工具,使用解析器生成器生成一个代码块提取器的目标语言。然后,提取器从解析树中提取语义代码块。MSCCD可以检测不同粒度的3型克隆。我们评估MSCCD的语言扩展性MSCCD应用到20种现代语言。16种语言得到了完美的支持,其余4种语言也提供了相同的检测功能,但牺牲了执行时间。我们使用BigCloneEval评估了MSCCD的召回率,并进行了手动实验来评估精度。MSCCD实现了与最先进工具相当的检测性能。
2022-04-06 cs.SE
Towards Informative Tagging of Code Fragments to Support the Investigation of Code Clones
调查代码克隆检测工具检测到的代码克隆的代码片段是一项耗时的任务,尤其是在有大量引用源文件可用时。本文提出了一种基于主题相似度的聚类方法,该方法将代码片段看作是单词序列,利用句法相似度对代码克隆检测工具检测到的克隆类进行聚类;提出了一种为聚类结果的聚类分配短标签的方法。我们还报告了一个实验,将所提出的方法应用到一个开源操作系统的软件包。
2021-10-03 cs.SE
SLACC: Simion-based Language Agnostic Code Clones
成功的跨语言克隆检测可以使研究人员和开发人员创建强大的语言迁移工具,一旦掌握了一种程序设计语言,就可以方便地学习其他语言,并促进代码片段在更广泛的代码库中的重用。然而,识别跨语言克隆提出了特殊的挑战,克隆检测问题。任意语言之间缺乏公共的底层表示意味着检测克隆需要以下解决方案之一:1)跨每个目标语言复制的静态分析框架,其注释匹配所有语言的语言特征,或者2)基于运行时行为检测克隆的动态分析框架。在这项工作中,我们证明了后者的解决方案,一个动态分析方法称为SLACC跨语言克隆检测的可行性。与之前的克隆检测技术一样,我们使用输入/输出行为来匹配克隆,尽管我们通过放大输入的数量和覆盖更多的数据类型来克服之前工作的局限性;因此,实现了比之前尝试更好的聚类。由于聚类是基于输入/输出行为生成的,因此SLACC支持跨语言克隆检测。作为一个额外的挑战,我们的目标是静态类型语言Java和动态类型语言Python。与最近的Java克隆检测工具HitoshiIO相比,SLACC检索的集群数量是HitoshiIO的6倍,并且精度更高(86.7% vs. 30.7%)。这是第一个对动态类型语言执行克隆检测的工作(精度= 87.3%),也是第一个对缺乏公共底层表示的语言执行克隆检测的工作(精度= 94.1%)。它为实现可伸缩语言迁移工具的更大目标迈出了第一步。
2020-02-07 cs.SE
SmartEmbed: A Tool for Clone and Bug Detection in Smart Contracts through Structural Code Embedding
以太坊已经成为一个广泛使用的平台,可以实现安全的、基于区块链的金融和商业交易。然而,以太坊的一个主要问题是其智能合约的安全性。智能合约中发现的许多错误和漏洞不仅给区块链的维护带来了挑战,而且还导致了严重的财务损失。有一个显着的需要,以更好地帮助开发人员检查智能合约,并确保其可靠性。在本文中,我们提出了一个Web服务工具,名为SmartEmbed,它可以帮助Solidity开发人员找到重复的合同代码和克隆相关的智能合约中的错误。我们的工具是基于代码嵌入和相似性检查技术。通过比较以太坊区块链中现有solidity代码的代码嵌入向量与已知bug之间的相似性,我们能够有效地识别用户给出的任何solidity代码的代码克隆和克隆相关bug,这有助于提高用户对其代码可靠性的信心。除了个人开发者的使用外,SmartEmbed还可以应用于大规模的智能合约研究。当应用于从以太坊区块链收集的超过22K个solidity合约时,我们发现solidity代码的克隆率接近90%,远高于传统软件,并且基于我们的小bug数据库可以高效准确地识别出194个克隆相关的bug,精度为96%。SmartEmbed可通过\url{http://www.smartembed.net}访问。SmartEmbed的演示视频位于\url{https://youtu.be/o9ylyOpYFq8}
2019-08-22 cs.SE
A Machine Learning Based Framework for Code Clone Validation
代码克隆是一对代码片段,在相似的软件系统内或之间。由于代码克隆经常对软件系统的可维护性产生负面影响,在过去的十年中,已经提出并研究了几种代码克隆检测技术和工具。为了检测所有可能的类似源代码模式,克隆检测工具通常在语法级别上工作,而缺乏用户特定的首选项。这通常意味着在分析之前必须手动检查克隆,以便将这些假阳性排除在外。这种手动克隆验证工作非常耗时,并且经常容易出错,特别是对于大规模克隆检测。在本文中,我们提出了一个机器学习的方法来自动化的验证过程。我们基于机器学习的方法用于自动验证克隆,无需人工检查。因此,所提出的方法可以用于从检测结果中去除假阳性克隆,自动评估任何给定数据集的任何克隆检测器的精度,评估现有的克隆基准数据集,甚至可以用于以最小的努力构建新的克隆基准和数据集。在几个不同的软件系统中的几个克隆检测器检测克隆的实验中,我们发现我们的方法与多个专家判断的手动验证相比,准确率高达87.4%。该方法还显示了更好的结果,在几个比较研究与现有的相关方法进行克隆分类。
2020-05-03 cs.SE
CC4M: Code Clone Analysis and Visualization for Microservices
Ritsumeikan University(立命馆大学)
针对微服务跨边界代码克隆的维护问题,提出CC4M工具,该工具可检测并丰富克隆信息,通过交互式散点图可视化并支持筛选,助力识别代码变更的潜在影响范围。
2026-08-31 cs.SE
Clone Removal in Java Programs as a Process of Stepwise Unification
克隆代码是软件一致性维护和演化的重要障碍之一。虽然今天的克隆检测工具发现了各种各样的克隆,但它们没有提供任何如何删除这些克隆的建议。我们解释了在寻找一个序列的克隆删除的变化所涉及的问题,并建议把这个问题看作是一个逐步统一的克隆实例的过程。因此,这个问题可以通过回溯可能的统一步骤来解决。
2013-01-11 cs.SE
Detecting Essence Code Clones via Information Theoretic Analysis
本文提出ECScan工具,利用信息论评估代码行语义重要性,以检测传统方法难以发现的本质克隆,平均F1分数达85%,优于现有工具。
2025-02-26 cs.SE
Automatic Clone Recommendation for Refactoring Based on the Present and the Past
当在软件程序中检测到许多克隆时,并非所有克隆对开发人员都同样重要。为了帮助开发人员重构代码并提高软件质量,人们构建了各种工具来根据过去和现在的信息(例如单个克隆的内聚度或克隆对等体的协同进化关系)推荐克隆移除重构。这些工具的存在启发我们建立一种方法,考虑尽可能多的因素,以更准确地推荐克隆。本文介绍了CREC,一种基于学习的方法,通过从软件项目的当前状态和过去的历史中提取特征来推荐克隆。给定一组软件存储库,CREC首先自动提取历史重构的克隆组(R克隆)和未重构的克隆组(NR克隆)来构建训练集。CREC提取了34个特征来表征单个克隆的内容和进化行为,以及克隆对等体的空间、句法和共变关系。有了这些功能,CREC训练了一个分类器,推荐克隆进行重构。我们设计了迄今为止最大的克隆推荐功能集,并对六个大型项目进行了评估。结果表明,我们的方法建议在项目内和跨项目设置中进行重构,F分数分别为83%和76%。CREC在我们的数据集上的表现明显优于最先进的类似方法,后者的F分数分别达到70%和50%。我们还比较了不同因素和不同学习算法的有效性。
2018-07-30 cs.SE
The pragmatics of clone detection and elimination
类似代码或“代码克隆”的出现会使程序代码难以阅读、修改和维护。本文描述了使用重构和克隆检测工具进行克隆检测和消除的工业案例研究。我们讨论了如何通知的工具的设计研究,更重要的是,我们使用的研究来说明在实践中执行克隆消除时,必须采取的一系列复杂的决定。案例研究是与爱立信AB的工程师合作进行的,并使用了Erlang的重构工具Wrangler。然而,我们得出的结论在很大程度上是独立于语言的,并规定了在现实世界的项目中的克隆检测和消除的语用学,以及克隆检测决策支持工具的设计原则。
2017-03-31 cs.PL cs.SE
Studying Duplicate Logging Statements and Their Relationships with Code Clones
在本文中,我们专注于研究重复日志语句,这是日志语句具有相同的静态文本消息。我们手动研究了五个大型开源系统中超过4K的重复日志语句及其周围的代码。我们发现了五种重复的日志代码气味模式。对于重复日志代码气味的每个实例,我们进一步手动识别潜在的问题和合理的情况。然后,我们联系开发人员来验证我们的手动研究结果。我们将我们的手动研究结果和开发人员的反馈集成到我们的自动化静态分析工具DLQs中,该工具可以自动检测有问题的重复日志代码气味。我们在五个手动研究的系统和三个额外的系统上评估了DLPERT。总的来说,结合DLQs的结果和我们的手动分析,我们向开发人员报告了91个有问题的重复日志记录代码气味实例,并且所有这些都已得到修复。我们进一步研究了重复日志记录语句之间的关系,包括重复日志记录代码气味和代码克隆的问题实例。我们发现,83%的重复日志记录代码气味实例驻留在克隆代码中,但其中17%驻留在微克隆中,使用自动克隆检测工具难以检测到。我们还发现,超过一半的重复日志语句驻留在克隆的代码片段,其中很大一部分驻留在很短的代码块,可能无法有效地检测到现有的代码克隆检测工具。我们的研究表明,除了实现业务逻辑的一般源代码外,代码克隆也可能导致不良的日志记录实践,从而增加维护难度。
2021-06-01 cs.SE
JC-Finder: Detecting Java Clone-based Third-Party Library by Class-level Tree Analysis
针对Java中基于克隆的第三方库重用检测缺乏专用工具的问题,提出JC-Finder,通过类级树分析实现准确高效的识别,在实验中F1分数达0.818,速度提升9倍,并发现更多未声明TPL。
2025-08-04 cs.SE
Code Clone Matching: A Practical and Effective Approach to Find Code Snippets
在源代码中发现相同或相似的代码片段是软件维护的基本活动之一。基于文本的模式匹配工具(如grep)经常用于此目的,但对预期结果进行适当的查询并不容易。可以使用代码克隆检测器,但它们的功能和结果通常过多。在本文中,我们提出了代码克隆匹配(简称CC匹配),采用基于标记的克隆检测和元标记增强的元模式的组合。用户只需给出一个可能带有一些元标记的查询代码片段,然后获得结果片段,在查询和结果之间形成类型1、2或3的代码克隆对。通过使用带有元标记的代码片段作为查询,用户可以很好地控制结果匹配。CC匹配已经实现为一个实用而高效的工具,名为ccgrep,具有类似grep的用户界面。测试结果表明,ccgrep~是一个非常有效的查找各种代码片段的工具。
2020-03-12 cs.SE
TGMM: Combining Parse Tree with GPU for Scalable Multilingual and Multi-Granularity Code Clone Detection
本文提出基于解析树与 GPU 的 TGMM,支持多语言、多粒度 Type-3 克隆检测,在执行时间和精确率上优于七种现有工具,并验证了其跨语言扩展能力。
2024-12-05 cs.SE
Multi-threshold token-based code clone detection
克隆检测在软件工程中占有重要地位。在单个项目中查找克隆引入了可能的重构机会,并且在不同的项目之间,它可以用于检测代码重用或可能的许可违规。在本文中,我们提出了一个修改袋令牌的克隆检测,允许检测更多的克隆对更大的多样性,而不会失去精度,通过实施多阈值搜索,即进行多次搜索,针对不同的克隆组。为了对抗这种方法带来的操作时间的增加,我们提出了一种优化,允许显着减少搜索之间检测到的克隆的重叠。我们评估了两种不同的流行的克隆检测工具的方法在两个不同大小的数据集。该技术的实施允许增加40.5-56.6%的不同数据集的检测到的克隆的数量。BigCloneBench评估还显示,检测强3型克隆的召回率从37.5%提高到59.6%。
2021-01-06 cs.SE
A Literature Review of Code Clone Analysis to Improve Software Maintenance Process
随着系统的增长,软件系统变得越来越复杂,其中维护这样的系统是行业的主要关注点。代码克隆是造成软件维护困难的因素之一。这是一个通过复制粘贴来复制代码块的过程,在软件开发中很常见。在项目的开始阶段,开发人员发现它很容易和耗时,但从长远来看,它有关键的缺点。有两种类型的研究人员,其中一些研究人员认为克隆在维护阶段导致额外的变化,在后期阶段增加了整体维护工作。另一方面,一些研究人员认为克隆的代码比非克隆的代码更稳定。本研究探讨了代码克隆的概念、方法、克隆检测工具、相关研究、案例分析等。
2012-05-25 cs.SE
On the Effectiveness of Clone Detection for Detecting IoT-related Vulnerable Clones
由于物联网系统通过互联网提供服务,因此即使恶意用户攻击它们,它们也必须继续安全运行。由于连接到IoT的边缘设备的计算资源有限,因此通常使用轻量级平台和网络协议。轻量级平台和网络协议对攻击的抵抗力较低,增加了开发人员嵌入漏洞的风险。代码克隆研究社区一直在开发修复错误的方法(例如,克隆人同时然而,关于物联网相关的脆弱克隆的研究很少。目前还不清楚现有的代码克隆检测技术是否可以同时修复易受攻击的克隆。在这项研究中,我们首先创建了两个与物联网相关的易受攻击代码的数据集。然后,我们进行了初步调查,以显示现有的代码克隆检测工具(例如,NiCaD,CCFinderSW)能够通过将其应用于创建的数据集来检测与物联网相关的脆弱克隆。初步结果表明,现有的工具可以部分检测到它们。
2021-10-20 cs.CR cs.SE
Source File Set Search for Clone-and-Own Reuse Analysis
克隆并拥有方法是软件开发人员实现源代码重用的一种自然方法。为了评估克隆组件的已知错误和安全漏洞如何影响应用程序,开发人员和安全分析师需要识别组件的原始版本,并了解克隆组件与原始组件的不同之处。尽管开发人员可以在版本控制系统和/或目录名称中记录原始版本信息,但是这样的信息通常不可用或不完整。在这项研究中,我们提出了一种代码搜索方法,该方法将一组源文件作为输入,并从软件生态系统(即,软件包的现有版本的集合)。我们的方法采用了有效的文件相似性计算使用b位minwise哈希技术。我们使用聚合文件相似性来对组件进行排名。为了评估该工具的有效性,我们分析了Firefox和Android源代码中的75个克隆组件。该工具花了大约两个小时报告Debian GNU/Linux软件包中1000万个文件的原始组件。根据源代码存储库中记录的真实数据,提取列表中前五个组件的召回率为0.907,而使用SHA-1文件散列的基线召回率为0.773。
2017-04-27 cs.SE
Modeling Functional Similarity in Source Code with Graph-Based Siamese Networks
代码克隆是共享(几乎)相似语法或语义的重复代码片段。代码克隆检测在软件维护、代码重构和重用中起着重要的作用。过去已经进行了大量的研究来检测克隆。这些方法中的大多数使用词汇和句法信息来检测克隆。然而,只有少数的目标语义克隆。最近,受到深度学习模型在其他领域(包括自然语言处理和计算机视觉)的成功的激励,研究人员试图采用深度学习技术来检测代码克隆。这些方法使用词汇信息(标记)和(或)语法结构,如抽象语法树(AST)来检测代码克隆。然而,它们没有充分利用可用的结构和语义信息,因此限制了它们的能力。本文利用程序依赖图和几何神经网络,利用结构化的语法和语义信息,解决了语义代码克隆检测问题。我们已经开发了一个原型工具HOLMES,基于我们的新方法,并根据经验评估流行的代码克隆基准。我们的研究结果表明,HOLMES的表现远远优于其他国家的最先进的工具,TBCCD。我们还评估了HOLMES看不见的项目,并进行了跨数据集实验,以评估HOLMES的泛化能力。我们的研究结果证实,HOLMES优于TBCCD,因为HOLMES检测到的大多数对要么未检测到,要么TBCCD报告的次优。
2020-11-25 cs.SE
SourcererCC: Scaling Code Clone Detection to Big Code
尽管经过了十年的积极研究,但仍明显缺乏可扩展到非常大的源代码存储库的克隆检测器,特别是用于检测可能在克隆代码中发生重大编辑活动的近距离克隆。我们提出SourcererCC,一个基于令牌的克隆检测器,针对三种克隆类型,并利用索引来实现可扩展性,以大型项目间的存储库使用标准的工作站。SourcerCC使用优化的反向索引来快速查询给定代码块的潜在克隆。使用基于令牌排序的过滤算法来显著减少索引的大小、检测克隆所需的代码块比较的数量以及判断潜在克隆所需的令牌比较的数量。我们评估的可扩展性,执行时间,召回和精度的SourcererCC,并将其与四个公开可用的和国家的最先进的工具。为了测量召回率,我们使用了两个最新的基准测试,(1)一个大型的真实克隆基准测试BigCloneBench,以及(2)一个基于Mutation/Injection的框架,由数千个细粒度的人工克隆组成。我们发现SourcererCC具有高召回率和精确度,并且能够使用标准工作站扩展到大型项目间存储库(250 Mbit)。
2015-12-20 cs.SE
How the Misuse of a Dataset Harmed Semantic Clone Detection
University College London(伦敦大学学院);Mahidol University(玛希隆大学)
本文揭示 BigCloneBench 数据集中 93% 的 Weak Type-3/Type-4 克隆对被错误标注,导致大量语义克隆检测研究结果有效性受损,并强调该数据集应仅限用于其预期的语法或文本克隆检测评估。
2026-11-05 cs.SE
Code Clone Detection via an AlphaFold-Inspired Framework
School of Computer Science, Peking University(北京大学计算机学院);Zhongguancun Laboratory(中关村实验室)
AlphaCC通过受AlphaFold启发的框架,利用序列到结构建模能力实现代码克隆检测,展现出强大的语义理解和工具独立性。
2026-02-05 cs.SE
Gitor: Scalable Code Clone Detection by Building Global Sample Graph
提出Gitor方法,通过构建全局样本图并应用节点嵌入技术提取代码向量,结合代码特征进行相似性比较,有效提升了代码克隆检测的准确率和效率。
2023-11-18 cs.SE
Quantifying and Characterizing Clones of Self-Admitted Technical Debt in Build Systems
对50,608条构建系统SATD注释开展大规模研究,发现构建系统中SATD克隆普遍率(62%-95%)远高于源代码(41%-65%),76%克隆语句相似度>0.8,1/4由原作者引入入,外部因素为主要位置、工具库限制为原因,为设计自动偿还SATD推荐系统奠定基础。
2024-02-14 cs.SE
Do Code Clones Matter?
代码克隆不仅被认为会增加维护成本,而且还被认为容易出现缺陷,因为对代码副本的不一致更改可能导致意外行为。因此,重复代码的识别,克隆检测,近年来一直是一个非常活跃的研究领域。然而,到目前为止,还没有对代码克隆对程序正确性的后果进行实质性的调查。为了弥补这一缺陷,本文提出了一个大规模的案例研究,以找出不一致的变化克隆代码可以表明故障的结果。对于所分析的商业和开源系统,我们不仅发现克隆的不一致更改非常频繁,而且还确定了由此类更改引起的大量错误。在案例研究中使用的克隆检测工具实现了一种新的算法,用于检测不一致的克隆。它是开源的,使其他研究人员能够使用它作为进一步调查的基础。
2017-01-19 cs.SE
Who Made This Copy? An Empirical Analysis of Code Clone Authorship
本研究实证分析153个Apache项目的代码克隆作者身份,发现克隆行平均占18.5%,且主要作者贡献了三分之一的克隆集,为克隆管理工具设计提供依据。
2023-09-03 cs.SE
Unveiling Code Clones in the Eclipse IIoT Software Ecosystem
Central China Normal University(华中师范大学);Wuhan University(武汉大学);Huazhong University of Science and Technology(华中科技大学)
研究揭示Eclipse IIoT开源项目中代码克隆的普遍存在性、演化趋势及共修改情况,发现克隆比例较高,且跨项目克隆现象显著,对软件维护产生负面影响。
2026-03-28 cs.SE
Latent Reuse in Agent Skills: Multi-modal Clone Detection at Ecosystem Scale
Nanyang Technological University(南洋理工大学)
本文提出SkillClone,首个多模态智能体技能克隆检测方法,通过融合TF-IDF与通道分解实现高精度检测,揭示技能生态系统中大量克隆关系及传播问题。
2026-08-18 cs.SE
GPTCloneBench: A comprehensive benchmark of semantic clones and cross-language clones using GPT-3 model and SemanticCloneBench
针对现有代码克隆基准的不足,利用GPT-3和SemanticCloneBench构建了包含37,149个真实语义克隆对和20,770个跨语言克隆的大规模综合基准GPTCloneBench,显著提升了规模、功能示例和语言覆盖。
2023-09-01 cs.SE
Clones in Deep Learning Code: What, Where, and Why?
深度学习应用正变得越来越流行。深度学习系统的开发人员努力编写更高效的代码。深度学习系统在不断发展,开发时间表越来越紧,复杂性越来越高,这可能导致糟糕的设计决策。复制粘贴方法在深度学习开发人员中广泛使用,因为他们依赖于通用框架并重复类似的任务。在维护活动中,开发人员经常无法正确地将更改传播到所有克隆片段。据我们所知,还没有研究考察过深度学习开发中的代码克隆实践。鉴于克隆对传统系统的研究中报告的软件质量的负面影响,了解代码克隆对深度学习系统的特性和潜在影响非常重要。为此,我们使用NiCad工具检测了59个Python、14个C#和6个基于Java的深度学习系统以及相同数量的传统软件系统的克隆。然后,我们分析了代码克隆在深度学习和传统系统中的频率和分布。我们使用基于位置的分类法进一步分析代码克隆的分布。我们还研究了错误和代码克隆之间的相关性,以评估克隆对所研究系统质量的影响。最后,我们介绍了一个与深度学习程序相关的代码克隆分类法,并确定了克隆具有最高错误风险的深度学习系统开发阶段。我们的研究结果表明,代码克隆在深度学习系统中是一种常见的做法,而且深度学习开发人员经常从系统中远程存储库中的文件中克隆代码。此外,我们发现代码克隆在DL模型构建过程中发生得更频繁。超参数设置是克隆风险最大的阶段,因为它经常导致故障。
2021-07-28 cs.SE
CC2Vec: Combining Typed Tokens with Contrastive Learning for Effective Code Clone Detection
本文提出CC2Vec代码编码方法,通过类型化Token和对比学习增强语义代码克隆检测能力,在保持简单克隆检测有效性的同时显著提升检测效率。
2024-05-01 cs.SE
StoneDetector: Conventional and versatile code clone detection for Java
Cooperative University Gera-Eisenach(格拉-艾森纳赫合作大学);Friedrich Schiller University Jena(耶拿弗里德里希·席勒大学)
StoneDetector通过支配树派生路径的文本比较,实现传统且多功能的Java代码克隆检测,具备高性能和可扩展性。
2026-01-31 cs.PL cs.SE
Development and Benchmarking of Multilingual Code Clone Detector
针对现有代码克隆检测器语言可扩展性不足的问题,提出基于ANTLR的多语言代码块提取方法并实现MSCCD检测器,构建首个多语言克隆评估基准,验证其在性能与语言扩展性上的均衡性。
2024-09-17 cs.SE
MergeSE: Post-Hoc Model Merging for Software Engineering Tasks Without Retraining
University of Saskatchewan(萨斯喀彻温大学)
MergeSE是一款开源工具,可对HuggingFace编码器检查点进行无训练合并,支持软件工程多类分类任务,能解决代码模型分布偏移导致的性能下降问题,合并效率高且性能优异。
2026-08-06 cs.SE
Checking Smart Contracts with Structural Code Embedding
智能合约越来越多地与区块链一起使用,以自动化金融和商业交易。然而,在许多合同中发现了许多错误和漏洞,这引起了人们对智能合同安全性的严重担忧,更不用说构建智能合同的区块链系统可能存在错误。因此,需要更好地维护智能合约代码并确保其高可靠性。在本文中,我们提出了一种自动化的方法来学习Solidity中智能合约的特征,这对于智能合约的克隆检测,错误检测和合约验证非常有用。我们的新方法是基于词嵌入和向量空间比较。我们将智能合约代码解析为具有代码结构信息的字流,转换代码元素(例如,语句、函数)转换为数字向量,这些数字向量应该对代码语法和语义进行编码,并比较编码代码的向量与已知错误之间的相似性,以识别潜在的问题。我们已经实现了一个原型,名为SmartEmbed的方法。实验结果表明,该工具可以有效地识别出Solidity代码中的大量重复实例,其中克隆率约为90%.代码克隆,如类型III甚至类型IV语义克隆也可以被准确地检测到。我们的工具可以识别超过1000个克隆相关的错误的基础上,我们的错误数据库有效和准确。我们的工具还可以帮助有效地验证任何给定的智能合约是否存在已知的错误,这有助于提高用户对合约可靠性的信心。匿名复制软件包可从以下网址访问:https://drive.google.com/file/d/1kauLT3y2IiHPkUlVx4FSTda-dVAyL4za/view? usp=sha…
2020-01-20 cs.SE
Zero-shot Evaluation of Deep Learning for Java Code Clone Detection
Cooperative University Gera-Eisenach(格拉-艾森纳赫合作大学)
本文评估了深度学习在Java代码克隆检测中的泛化能力,测试了五种先进模型在零样本场景下的性能,发现传统方法在该场景下表现更优。
2026-04-15 cs.PL cs.SE
Unveiling Code Clones in Quantum Programming: An Empirical Study with Qiskit
本文实证研究 Qiskit 量子程序中的代码克隆,发现 Type-2 与 Type-3 克隆密度高,并指出需开发面向量子领域的检测与重构工具。
2025-01-11 cs.SE quant-ph
Evaluation of Contrastive Learning with Various Code Representations for Code Clone Detection
Swiss Federal Institute of Technology (EPFL)(瑞士联邦理工学院(EPFL));JetBrains Research(JetBrains研究院)
代码克隆是实现类似功能的代码段对。克隆检测是源代码自动理解的一个基本分支,在重构推荐、剽窃检测和代码摘要等方面有着广泛的应用。克隆检测的一个特别有趣的情况是语义克隆的检测,即,具有相同功能但在实现上显著不同的代码片段。检测语义克隆的一种有前途的方法是对比学习(CL),这是计算机视觉中流行的机器学习范例,但尚未普遍用于代码处理。我们的工作旨在评估最流行的CL算法结合三个源代码表示两个任务。第一个任务是代码克隆检测,我们在包含104个算法实现的POJ-104数据集上进行评估。第二个任务是剽窃检测。为了评估这个任务的模型,我们引入了CodeTransformator,一个转换源代码的工具。我们使用它来创建一个数据集,该数据集模仿基于竞争性编程解决方案的剽窃代码。我们为这两项任务训练了九个模型,并将它们与六种现有方法进行了比较,包括传统工具和现代预训练神经模型。我们的评估结果表明,提出的模型在每个任务中执行diligence,但基于图的模型的性能通常高于其他模型。在CL算法中,Simplified和SwAV导致更好的结果,而Moco是最鲁棒的方法。我们的代码和训练模型可以在https://doi.org/10.5281/zenodo.6360627,https://doi.org/10.5281/zenodo.5596345上找到。
2022-06-17 cs.LG cs.SE
On the Relationship of Inconsistent Software Clones and Faults: An Empirical Study
背景:代码克隆-复制和重用源代码片段-是软件开发实践中的常见现象。关于克隆的影响已经有了一些实证研究,但关于克隆与缺陷的联系,有相互矛盾的结果。目的:我们的目的是澄清代码克隆和错误之间的关系。特别是,我们专注于不一致(或类型3)的克隆在这项工作中。方法:我们与TWT GmbH进行了一个案例研究,在其中我们检测了三个Java系统中的代码克隆,将它们与来自问题跟踪和版本控制的信息相关联,并采访了三位关键开发人员。结果:在3型克隆中,17%的克隆存在缺陷.开发人员同时修改了大多数3型克隆,从而一致地修复了3型克隆中的一半故障。具有故障的2型克隆都进化为固定的3型克隆。克隆长度与不完美性仅弱相关。结论:有迹象表明,两个案例中的开发人员已经意识到克隆。这可能是第三类无性系与断层关系不密切的原因之一。因此,让开发人员了解克隆似乎很重要,可能有新的工具支持。未来的研究需要调查的故障率在类型3克隆证明使用它们作为线索,在缺陷检测。
2016-11-23 cs.PL cs.SE
Towards Human-interpretable Explanation in Code Clone Detection using LLM-based Post Hoc Explainer
本文提出利用 ChatGPT-4 的上下文学习能力,为 GraphCodeBERT 的代码克隆检测预测生成黑盒事后解释,实验显示正确解释率最高达 98%。
2025-09-26 cs.SE
Pluvio: Assembly Clone Search for Out-of-domain Architectures and Libraries through Transfer Learning and Conditional Variational Information Bottleneck
McGill University(麦吉尔大学);Defence Research and Development Canada (DRDC)(加拿大国防研究与发展部)
本文提出 Pluvio,利用预训练自然语言模型迁移学习、强化学习 token 裁剪和变分信息瓶颈,解决汇编克隆搜索对未知架构及编译工具链泛化不足的问题。
2026-10-19 cs.AI cs.SE
VulCoCo: A Simple Yet Effective Method for Detecting Vulnerable Code Clones
本文提出 VulCoCo,一种结合嵌入检索与 LLM 验证的轻量级漏洞代码克隆检测方法,在合成基准上超越现有方法,并在真实开源项目中通过提交 400 个 PR 验证其有效性。
2025-07-22 cs.SE
Assessing the Code Clone Detection Capability of Large Language Models
School of Computer Science, University of Galway(戈尔韦大学计算机科学学院);CRT-AI, the Science Foundation Ireland Centre for Research Training in Artificial Intelligence(爱尔兰科学基金会人工智能研究培训中心(CRT-AI));Lero, the Science Foundation Ireland Research Centre for Software(爱尔兰科学基金会软件研究中心(Lero))
本文在BigCloneBench与GPTCloneBench上评估GPT-3.5和GPT-4的代码克隆检测能力,发现GPT-4更优但Type-4检测薄弱,且模型偏向识别LLM生成克隆。
2024-07-02 cs.AI cs.SE
Governing the Commons: Code Ownership and Code-Clones in Large-Scale Software Development
本研究旨在理解弱/集体所有权下不同团队引入代码克隆技术债务的差异,通过构建多层广义线性模型分析工业软件数据,生成了团队行为的可视化反馈工具,有效补充了传统所有权统计。
2024-11-15 cs.SE
Jupyter Notebooks on GitHub: Characteristics and Code Clones
Cyberter Notebooks已经成为数据科学编程的标准工具。Xueyter笔记本中的程序与典型的程序不同,因为它们是由一组与文本和可视化交织的代码片段构成的。这允许交互式探索,并且片段可以以不同的顺序执行,这可能由于片段之间的副作用而导致不同的结果。以前的研究已经表明,在传统程序的源代码中存在大量的代码重复--代码克隆--在所谓的系统程序设计语言和所谓的脚本语言中。在本文中,我们提出了第一个大规模的研究,在笔记本电脑的代码克隆。我们分析了GitHJub上托管的270万字节笔记本的语料库,代表了3700万个片段和2.27亿行代码。我们在单个片段的水平上研究克隆,并研究片段在多个笔记本中重复出现的程度。我们研究了相同的克隆和近似克隆,并对最常见的克隆进行了小规模的目视检查。我们发现,代码克隆是常见的,所有代码片段的70%以上是其他片段的精确副本(在空白处可能有差异),大约50%的所有笔记本没有任何独特的片段,但仅由其他地方也发现的片段组成。在用Python编写的笔记本中,至少80%的代码片段是近似克隆,并且Python中代码克隆的流行程度高于其他语言。我们进一步发现,不同存储库之间的克隆比同一存储库中的克隆更常见。但是,最常见的单个存储库是其自身所在的存储库,其中,一个XNUYTER笔记本包含来自该存储库的克隆。
2021-02-26 cs.PL cs.SE
Software Cloning in Extreme Programming Environment
随着时间的推移,软件系统通过添加新功能和修改现有功能而不断发展。随着软件的演化,软件的结构变得越来越复杂,软件系统的可理解性和可维护性也日益恶化。这些不仅重要,而且是软件开发中最昂贵的活动之一。重构经常被应用到软件中来改进它们。重构的目标之一是限制代码克隆,因为它阻碍了软件维护并影响其质量。为了应对不断的变化,重构被视为极限编程的重要组成部分。敏捷方法将重构作为重要的关键实践,是开发无克隆代码的首选。本文总结了我对软件克隆分析的概述。首先讨论了代码克隆的概念、类型、产生原因、后果和分析。重点介绍了极限编程环境下的代码克隆,并指出克隆检测是重构的有效工具。
2014-08-21 cs.SE
Seamless Variability Management With the Virtual Platform
定制是软件工程的一个普遍趋势,要求系统支持可变的涉众需求。通常使用两种相反的策略来创建变体:软件克隆和拥有以及集成平台的软件配置。组织通常从前者开始,前者便宜,敏捷,支持快速创新,但不能扩展。后者通过建立一个在不同变体之间共享软件资产的集成平台来扩展,但需要高额的前期投资或风险较高的迁移过程。那么,我们是否可以有一种方法,允许一个简单的过渡,甚至结合两种策略的好处?我们提出了一种方法和工具,支持一个真正的增量开发的变种丰富的系统,利用两个对立的战略之间的频谱。我们设计,形式化,和原型的可变性管理框架虚拟平台。它连接了克隆和自有以及面向平台的开发。依赖于编程语言独立的概念结构,代表软件资产,它提供了运营商的工程和发展的系统,包括:传统的,面向资产的运营商和新颖的,面向功能的运营商逐步采用的概念,集成平台。操作员记录由其他操作员利用以支持转换的元数据。除其他外,它们消除了昂贵的功能定位工作或跟踪克隆的需要。我们的评估模拟了现实世界中基于克隆的系统的演变,衡量其成本和效益。
2021-03-02 cs.SE
On the Security Blind Spots of Software Composition Analysis
针对软件成分分析中因代码克隆、遮蔽产生的隐藏依赖漏洞检测难题,提出轻量级Maven仓库漏洞克隆检测方法,检出数百个现有SCA工具遗漏的漏洞,推动多个CVE条目更新。
2023-10-09 cs.SE
VR-Themis: A Scalable Framework for Virtual Reality Application Clone Detection
Hong Kong Baptist University(香港浸会大学);Hong Kong University of Science and Technology(香港科技大学);Sun Yat-Sen University(中山大学);Lancaster University(兰开夏大学)
针对现有移动平台克隆检测方法无法适配VR应用的问题,提出基于HOB的两阶段框架VR-Themis,从4277个VR应用中无假阳性检测出307个可疑克隆应用,兼具有效性与可扩展性。
2026-08-14 cs.CR cs.SE
A systematic literature review on source code similarity measurement and clone detection: techniques, applications, and challenges
School of Computer Engineering, Iran University of Science and Technology(伊朗科学与技术大学计算机工程学院);University of Saskatchewan(萨斯喀彻温大学)
本文对源代码相似度测量与克隆检测进行系统性文献综述,分析了136篇研究中80个工具在五大应用领域的八种技术,指出缺乏可靠数据集和混合方法等主要挑战。
2023-06-28 cs.AI cs.PL cs.SE