Are There Functionally Similar Code Clones in Practice?
在软件系统中有类似的代码片段,也称为克隆,可能会导致不必要的理解,审查和更改工作。在实践中经常会遇到语法相似的克隆。对于仅功能相似的克隆(FSC),同样不清楚。我们在开发人员中进行了一项探索性调查,以调查他们在实践中是否遇到功能相似的克隆,以及他们是否倾向于将它们删除为语法相似的克隆。在回答调查的34名开发人员中,31名在其专业工作中经历过FSC,24名经历过FSC造成的问题。我们发现,在删除FSC和语法相似的克隆的倾向和推理没有差异。FSC实际上是存在的,应该进行研究,使克隆检测器达到与语法相似的克隆相同的质量,因为能够检测它们允许开发人员管理并可能删除它们。
2018-03-28 cs.SE
Clone-Seeker: Effective Code Clone Search Using Annotations
源代码搜索在软件开发中起着重要的作用,例如探索性开发或从代码库中重新使用现有代码。通常,需要探索具有相同功能的不同实现,以完成自动化软件移植、软件多样化和软件修复等任务。代码克隆是语法或语义相似的代码片段,是此类任务的理想候选者。搜索代码克隆涉及给定的搜索查询以检索相关的代码片段。我们提出了一种新的方法,称为克隆搜索器,专注于利用克隆类功能检索代码克隆。为此,我们以自然语言文档的形式为每个代码克隆生成元数据。元数据包括来自代码克隆的标识符的预处理列表,该标识符的预处理列表用指示代码克隆的语义的关键字的列表来扩充。这个关键字列表可以从克隆类的手动注释的一般描述中提取,也可以从整个克隆类的源代码中自动生成。此方法可帮助开发人员基于编写为源代码术语或自然语言的搜索查询来执行代码克隆搜索。在我们的定量评估中,我们表明(1)克隆搜索者在搜索语义代码克隆时具有更高的召回率(即,Type-4);(2)Clone-Seeker可以通过应用自然语言查询来准确地搜索相关的代码克隆。
2021-06-06 cs.IR cs.SE
Using a Nearest-Neighbour, BERT-Based Approach for Scalable Clone Detection
本文提出SSCD,一种基于BERT嵌入和最近邻搜索的克隆检测方法,避免两两比较瓶颈,在3.2亿行BigCloneBench上三小时内高效检测Type 3和Type 4克隆,优于SAGA和SourcererCC。
2023-09-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
Mining Domain Models in Ethereum DApps using Code Cloning
这项研究探讨了使用近距离克隆检测来支持智能合约的领域模型的表征,这些智能合约正在迅速被采用。在本文中,我们利用代码克隆检测技术来检测部署在以太坊区块链网络上的智能合约功能的相似性。我们分析了代码克隆的集群和集群中代码片段的语义,试图对它们进行分类,并发现代码克隆中模式的结构模型。
2022-03-01 cs.SE
A Machine Learning Based Framework for Code Clone Validation
代码克隆是一对代码片段,在相似的软件系统内或之间。由于代码克隆经常对软件系统的可维护性产生负面影响,在过去的十年中,已经提出并研究了几种代码克隆检测技术和工具。为了检测所有可能的类似源代码模式,克隆检测工具通常在语法级别上工作,而缺乏用户特定的首选项。这通常意味着在分析之前必须手动检查克隆,以便将这些假阳性排除在外。这种手动克隆验证工作非常耗时,并且经常容易出错,特别是对于大规模克隆检测。在本文中,我们提出了一个机器学习的方法来自动化的验证过程。我们基于机器学习的方法用于自动验证克隆,无需人工检查。因此,所提出的方法可以用于从检测结果中去除假阳性克隆,自动评估任何给定数据集的任何克隆检测器的精度,评估现有的克隆基准数据集,甚至可以用于以最小的努力构建新的克隆基准和数据集。在几个不同的软件系统中的几个克隆检测器检测克隆的实验中,我们发现我们的方法与多个专家判断的手动验证相比,准确率高达87.4%。该方法还显示了更好的结果,在几个比较研究与现有的相关方法进行克隆分类。
2020-05-03 cs.SE
An Extended Stable Marriage Problem Algorithm for Clone Detection
代码克隆对工业软件产生负面影响,并威胁到知识产权。提出了一种利用双射匹配技术检测克隆软件的新方法。所提出的方法侧重于增加的范围内的相似性措施,从而提高检测的精度。这是通过扩展一个著名的稳定婚姻问题(SMP),并演示如何可以表示不同文件的代码片段之间的匹配。所提出的方法的原型提供了一个适当的情况下,这表明克隆检测的几个功能,如可扩展性和准确性的显着改善。
2014-08-13 cs.SE
Learning Spectral Representations of Code through Latent Graph Learning for Generalizable Cross-Language Code Clone Detection
Sharif University of Technology(谢里夫理工大学)
该研究提出SPECTRA-Siam模型,通过潜在图学习生成跨语言可比的代码谱表示,在多个基准测试中显著提升了代码克隆检测性能,且泛化能力优于基线方法。
2026-08-25 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
Integrated Reasoning Engine for Pointer-related Code Clone Detection
检测相似的代码片段(通常称为代码克隆)是一项重要的任务。特别是,代码克隆检测可以在漏洞发现、重构和剽窃检测的上下文中具有重要用途。但是,误报是不可避免的,并且始终需要手动审查。在本文中,我们提出了Twin-Twin+,一种新的闭环方法,用于指针相关的代码克隆检测,集成了机器学习和符号执行技术,以实现精度。Twin-Tools+引入了一种形式化验证机制,以自动执行此类手动评审过程。我们的实验结果表明,Twin-Twin+可以消除平均91.69%的假阳性。我们进一步使用真实世界的应用程序,链接版本2.14和libreOffice-6.0.0.1进行内存安全性分析。Twin-Build+在Links 2.14版本中发现了6个未报告的bug,在libreOffice-6.0.0.1中发现了一个公开修补的bug。
2021-02-24 cs.SE
Towards Understanding the Capability of Large Language Models on Code Clone Detection: A Survey
本文首次系统评估了大语言模型在代码克隆检测中的能力,发现其在复杂语义克隆检测上优于现有方法,思维链提示和文本编码器嵌入可进一步提升性能,且能力因编程语言而异。
2023-08-06 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
Detecting Code Clones with Graph Neural Networkand Flow-Augmented Abstract Syntax Tree
Peking University(北京大学);Monash University(莫纳什大学)
代码克隆是语义相似的代码片段对,它们在语法上相似或不同。检测代码克隆可以帮助降低软件维护成本并防止错误。已有的代码克隆检测方法很多,但大多数都是针对语法克隆的检测,而对于具有不同语法特征的语义克隆检测效果不佳。为了检测语义克隆,研究人员尝试采用深度学习进行代码克隆检测,以自动从数据中学习潜在的语义特征。特别是,为了利用语法信息,一些方法使用抽象语法树(AST)作为输入,并在各种程序设计语言的代码克隆基准测试中取得了重大进展。然而,这些基于AST的方法仍然不能充分利用代码片段的结构信息,特别是语义信息,如控制流和数据流。为了充分利用控制和数据流信息,在本文中,我们建立了一个图形表示的程序流增强抽象语法树(FA-AST)。我们构造FA-AST通过增加原始AST与显式控制和数据流边缘。然后,我们将两种不同类型的图神经网络(GNN)应用于FA-AST上来度量代码对的相似性。就我们所知,我们是第一个将图神经网络应用于代码克隆检测领域的。我们将FA-AST和图神经网络应用于两个Java数据集:Google Code Jam和BigCloneBench。我们的方法在Google Code Jam和BigCloneBench任务上的表现优于最先进的方法。
2020-02-20 cs.AI cs.SE
Detecting Essence Code Clones via Information Theoretic Analysis
本文提出ECScan工具,利用信息论评估代码行语义重要性,以检测传统方法难以发现的本质克隆,平均F1分数达85%,优于现有工具。
2025-02-26 cs.SE
Clones in Deep Learning Code: What, Where, and Why?
深度学习应用正变得越来越流行。深度学习系统的开发人员努力编写更高效的代码。深度学习系统在不断发展,开发时间表越来越紧,复杂性越来越高,这可能导致糟糕的设计决策。复制粘贴方法在深度学习开发人员中广泛使用,因为他们依赖于通用框架并重复类似的任务。在维护活动中,开发人员经常无法正确地将更改传播到所有克隆片段。据我们所知,还没有研究考察过深度学习开发中的代码克隆实践。鉴于克隆对传统系统的研究中报告的软件质量的负面影响,了解代码克隆对深度学习系统的特性和潜在影响非常重要。为此,我们使用NiCad工具检测了59个Python、14个C#和6个基于Java的深度学习系统以及相同数量的传统软件系统的克隆。然后,我们分析了代码克隆在深度学习和传统系统中的频率和分布。我们使用基于位置的分类法进一步分析代码克隆的分布。我们还研究了错误和代码克隆之间的相关性,以评估克隆对所研究系统质量的影响。最后,我们介绍了一个与深度学习程序相关的代码克隆分类法,并确定了克隆具有最高错误风险的深度学习系统开发阶段。我们的研究结果表明,代码克隆在深度学习系统中是一种常见的做法,而且深度学习开发人员经常从系统中远程存储库中的文件中克隆代码。此外,我们发现代码克隆在DL模型构建过程中发生得更频繁。超参数设置是克隆风险最大的阶段,因为它经常导致故障。
2021-07-28 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
Unveiling Code Clones in Quantum Programming: An Empirical Study with Qiskit
本文实证研究 Qiskit 量子程序中的代码克隆,发现 Type-2 与 Type-3 克隆密度高,并指出需开发面向量子领域的检测与重构工具。
2025-01-11 cs.SE quant-ph
Gitor: Scalable Code Clone Detection by Building Global Sample Graph
提出Gitor方法,通过构建全局样本图并应用节点嵌入技术提取代码向量,结合代码特征进行相似性比较,有效提升了代码克隆检测的准确率和效率。
2023-11-18 cs.SE
Challenges of the Dynamic Detection of Functionally Similar Code Fragments
经典的克隆检测方法几乎不能够发现已经独立开发的冗余码,即,不是复制和粘贴的结果。为了自动检测这种独立起源的功能相似的代码,我们尝试了一种动态检测方法,该方法将随机测试应用于选定的代码块,类似于Jiang&Su的方法。我们发现,这种方法在应用于不同的Java系统时面临着一些限制。本文详细介绍了我们的见解,这些挑战的动态检测功能相似的代码片段。我们的研究结果支持了一个充实的讨论检测方法,并作为未来研究的起点。
2018-01-18 cs.SE
Unveiling the potential of large language models in generating semantic and cross-language clones
University of Saskatchewan(萨斯喀彻温大学)
本研究基于SemanticCloneBench评估了GPT-3生成语义和跨语言代码克隆变体的能力,发现其通过少样本提示工程在语义克隆上达到62.14%准确率,在跨语言克隆上达到91.25%准确率,揭示了大型语言模型在软件开发中的应用潜力与挑战。
2023-09-12 cs.AI cs.LG 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
VulCoCo: A Simple Yet Effective Method for Detecting Vulnerable Code Clones
本文提出 VulCoCo,一种结合嵌入检索与 LLM 验证的轻量级漏洞代码克隆检测方法,在合成基准上超越现有方法,并在真实开源项目中通过提交 400 个 PR 验证其有效性。
2025-07-22 cs.SE
Toxic Code Snippets on Stack Overflow
在线代码克隆是从软件项目或在线源复制到Stack Overflow的代码片段。由于在将代码复制到Stack Overflow后缺乏检查机制,它们可能成为有毒代码片段,例如,它们遭受过时或违反原始软件许可证的问题。我们提出了一个在线代码克隆的研究堆栈溢出和它们的毒性,结合两个开发人员的调查和大规模的代码克隆检测。一项针对201名高知名度Stack Overflow回答者(33%的回复率)的调查显示,131名参与者(65%)曾经被告知过时的代码,其中26名(20%)很少或从未修复过代码。138名受访者(69%)从不检查他们复制的代码片段与Stack Overflow的CC BY-SA 3.0之间的许可冲突。对87位Stack Overflow访问者的调查显示,他们在Stack Overflow的回答中遇到了几个问题:不匹配的解决方案,过时的解决方案,不正确的解决方案和错误的代码。85%的人不知道Stack Overflow强制执行的CC BY-SA 3.0许可证,66%的人在重用代码片段时从不检查许可证冲突。我们的克隆检测发现了Stack Overflow上的72,365个Java代码片段和Qualitas语料库中的111个开源项目之间的在线克隆对。我们分析了2,289个非平凡的在线克隆候选人。我们的调查显示,有强有力的证据表明,153个克隆已经从Qualitas项目复制到Stack …
2019-04-01 cs.SE
Unraveling Code Clone Dynamics in Deep Learning Frameworks
University of Toronto(多伦多大学)
实证分析了九个主流深度学习框架中的代码克隆,揭示了四种长期演化趋势及短期克隆模式的影响,并发现了跨框架的文件级代码克隆,为促进稳健的克隆实践和协作维护提供了见解。
2024-04-25 cs.AI cs.SE
Type-IV Code Clone Detection via Layer-Wise Non-Contrastive Representation Learning
Université de Montréal(蒙特利尔大学)
针对Type-IV代码克隆检测,提出基于VICReg框架的非对比分层表示学习方法LWVIC4Code,通过跨层一致性正则化与深度加权生成鲁棒表示,在多个数据集上取得优于或媲美对比学习及大模型的性能。
2026-09-16 cs.LG cs.SE
MergeSE: Post-Hoc Model Merging for Software Engineering Tasks Without Retraining
University of Saskatchewan(萨斯喀彻温大学)
MergeSE是一款开源工具,可对HuggingFace编码器检查点进行无训练合并,支持软件工程多类分类任务,能解决代码模型分布偏移导致的性能下降问题,合并效率高且性能优异。
2026-08-06 cs.SE
On the Use of Deep Learning Models for Semantic Clone Detection
University of Saskatchewan(萨斯喀彻温大学)
本文提出一种多步评估方法,利用现有基准数据集和变异算子,对五种最先进的单语言与跨语言代码克隆检测模型进行鲁棒性与性能比较,发现跨语言模型C4在语义克隆检测上表现更优且更稳定。
2024-12-19 cs.LG cs.SE
A Unified Model for Cross-Domain Clone Detection via Model Merging
University of Saskatchewan(萨斯喀彻温大学)
本文提出通过模型合并技术构建跨域代码克隆检测器,经实验验证TIES合并方法泛化性更优,合并后检测器性能优于零样本代码大模型且泛化性更强。
2026-08-06 cs.AI cs.SE
The Struggles of LLMs in Cross-lingual Code Clone Detection
University of Luxembourg(卢森堡大学)
本文评估了五种大语言模型和八种提示在跨语言代码克隆检测中的表现,发现其在复杂程序上效果有限,而基于嵌入模型训练的基础分类器在 XLCoST 和 CodeNet 数据集上分别比所有大语言模型高出约 1 个和 20 个百分点,表明嵌入表示更适合该任务。
2025-05-06 cs.AI cs.LG cs.SE
FeClustRE: Hierarchical Clustering and Semantic Tagging of App Features from User Reviews
本文提出 FeClustRE 框架,融合句法解析与 LLM 增强,对应用评论中的功能进行自动调优层次聚类和语义标签生成,提升提取质量、可解释性与跨应用可比性。
2025-10-21 cs.SE
Scalable Source Code Similarity Detection in Large Code Repositories
源代码相似性越来越多地用于应用程序开发中,以识别克隆,隔离错误和发现版权侵犯。由于原始代码中的错误必须在每个副本中修复,因此类似的代码片段可能非常有问题。其他维护更改(如扩展或修补程序)必须多次应用。此外,编码风格的多样性和现代语言的灵活性使得手动检查大型代码库变得困难且成本低。因此,检测只能通过自动技术进行。本文提出了一种基于源代码控制流图指纹识别的相似代码片段识别方法。处理源代码以生成控制流图,然后对控制流图进行散列以创建捕获语义以及语法相似性的代码的唯一指纹。然后可以有效地存储和检索指纹以执行代码片段之间的相似性搜索。我们的原型实现的实验结果支持我们的方法的有效性,并显示其有效性和效率与其他解决方案相比。
2019-07-26 cs.IR cs.PL cs.SE
Improving Source Code Similarity Detection Through GraphCodeBERT and Integration of Additional Features
Software Competence Center Hagenberg GmbH(软件能力中心哈根贝格有限公司)
本文提出通过GraphCodeBERT结合额外行为特征提升源代码相似性检测的性能。
2026-02-10 cs.SE
A Study of Potential Code Borrowing and License Violations in Java Projects on GitHub
随着开源软件数量的不断增加,像GitHub这样促进代码重用的服务的普及,以及对开源软件许可的常见误解,代码中的许可违规问题越来越突出。在这项研究中,我们从GitHub上编译了一个广泛的流行Java项目语料库,搜索它的代码克隆,并在代码片段层面上对可能的代码借用和许可证违规行为进行了原始分析。我们选择Java作为语言是因为它在工业界很受欢迎,因为可能的法律诉讼,剽窃问题特别相关。我们分析和讨论了文件和项目中94个不同的发现和手动评估的许可证的分布,文件许可证的差异,许可证之间潜在的代码借用的分布,各种类型的可能的许可证违规,最违反的许可证等。研究特定代码块中可能的许可证违规,我们发现,其中29.6%可能涉及潜在的代码借用,其中9.4%可能违反原始许可证。
2020-07-06 cs.SE
A Retrieval-Augmented Generation Approach to Extracting Algorithmic Logic from Neural Networks
Computer Vision Lab, CAIDAS, University of Würzburg, Germany(计算机视觉实验室,CAIDAS,乌尔姆大学,德国)
本文提出NN-RAG方法,通过检索增强生成技术从神经网络代码库中提取并验证模块,实现了跨仓库的架构迁移与重复检测,提升了神经网络架构的可复现性和多样性。
2026-05-16 cs.CV cs.SE