Clone-based code method usage pattern mining
当程序员检索代码方法并希望重用它时,他们需要了解检索到的方法的使用模式。然而,很难获得检索到的方法的用法信息,因为该方法可能只有简短的注释和很少的可用用法示例。在本文中,我们提出了一种方法,称为LUPIN(基于克隆的使用模式muscle Ng),挖掘这些方法的使用模式,这并没有广泛出现在代码库。LUPIN的核心思想是,目标方法的克隆代码可能具有相似的使用模式,我们可以从克隆代码的使用示例中收集目标方法的更多使用信息。从放大的使用实例中,通过程序切片和代码规范化后的频繁子序列挖掘,挖掘出目标方法的使用模式。我们的评估表明,LUPIN可以挖掘四类使用模式的平均精度为0.65。
2022-06-28 cs.SE
Clone Removal in Java Programs as a Process of Stepwise Unification
克隆代码是软件一致性维护和演化的重要障碍之一。虽然今天的克隆检测工具发现了各种各样的克隆,但它们没有提供任何如何删除这些克隆的建议。我们解释了在寻找一个序列的克隆删除的变化所涉及的问题,并建议把这个问题看作是一个逐步统一的克隆实例的过程。因此,这个问题可以通过回溯可能的统一步骤来解决。
2013-01-11 cs.SE
Studying Duplicate Logging Statements and Their Relationships with Code Clones
在本文中,我们专注于研究重复日志语句,这是日志语句具有相同的静态文本消息。我们手动研究了五个大型开源系统中超过4K的重复日志语句及其周围的代码。我们发现了五种重复的日志代码气味模式。对于重复日志代码气味的每个实例,我们进一步手动识别潜在的问题和合理的情况。然后,我们联系开发人员来验证我们的手动研究结果。我们将我们的手动研究结果和开发人员的反馈集成到我们的自动化静态分析工具DLQs中,该工具可以自动检测有问题的重复日志代码气味。我们在五个手动研究的系统和三个额外的系统上评估了DLPERT。总的来说,结合DLQs的结果和我们的手动分析,我们向开发人员报告了91个有问题的重复日志记录代码气味实例,并且所有这些都已得到修复。我们进一步研究了重复日志记录语句之间的关系,包括重复日志记录代码气味和代码克隆的问题实例。我们发现,83%的重复日志记录代码气味实例驻留在克隆代码中,但其中17%驻留在微克隆中,使用自动克隆检测工具难以检测到。我们还发现,超过一半的重复日志语句驻留在克隆的代码片段,其中很大一部分驻留在很短的代码块,可能无法有效地检测到现有的代码克隆检测工具。我们的研究表明,除了实现业务逻辑的一般源代码外,代码克隆也可能导致不良的日志记录实践,从而增加维护难度。
2021-06-01 cs.SE
Custom-Tailored Clone Detection for IEC 61131-3 Programming Languages
自动化生产系统(aPS)是由硬件和软件组成的高度定制的系统。这种aPS由可编程逻辑控制器(PLC)控制,通常根据IEC 61131-3标准,该标准将系统实现划分为所谓的程序组织单元(POU)作为最小软件单元,并且由可以任意嵌套的多种文本和图形程序设计语言组成。在开发此类系统的过程中,一个常见的做法是通过复制、粘贴然后修改代码来重用实现工件。这种方法被称为代码克隆。它用于细粒度级别,其中POU在系统变体中克隆。它还应用于粗粒度系统级别,其中整个系统被克隆和调整以创建系统变体,例如为另一个客户。这种开发变体的特殊做法通常被称为克隆并拥有。它允许快速开发变体,以满足不同的客户要求或更改的法规指南。然而,克隆并拥有是一种不可持续的方法,并且不能随着变体数量的增加而扩展。它对软件系统的整体质量有不利的影响,例如将bug传播到其他变体,这会损害维护。为了支持这些系统的有效开发和维护,需要进行详细的代码克隆分析。一方面,分析变体内的代码克隆(即,经典意义上的克隆检测)支持专家将相应的代码重构为库组件。另一方面,分析克隆变体之间的共性和差异(即,可变性分析)支持维护和进一步的重用,并促进将变体迁移到软件产品线(SPL)中。
2021-08-22 cs.PL cs.SE
An Extended Stable Marriage Problem Algorithm for Clone Detection
代码克隆对工业软件产生负面影响,并威胁到知识产权。提出了一种利用双射匹配技术检测克隆软件的新方法。所提出的方法侧重于增加的范围内的相似性措施,从而提高检测的精度。这是通过扩展一个著名的稳定婚姻问题(SMP),并演示如何可以表示不同文件的代码片段之间的匹配。所提出的方法的原型提供了一个适当的情况下,这表明克隆检测的几个功能,如可扩展性和准确性的显着改善。
2014-08-13 cs.SE
Do Code Clones Matter?
代码克隆不仅被认为会增加维护成本,而且还被认为容易出现缺陷,因为对代码副本的不一致更改可能导致意外行为。因此,重复代码的识别,克隆检测,近年来一直是一个非常活跃的研究领域。然而,到目前为止,还没有对代码克隆对程序正确性的后果进行实质性的调查。为了弥补这一缺陷,本文提出了一个大规模的案例研究,以找出不一致的变化克隆代码可以表明故障的结果。对于所分析的商业和开源系统,我们不仅发现克隆的不一致更改非常频繁,而且还确定了由此类更改引起的大量错误。在案例研究中使用的克隆检测工具实现了一种新的算法,用于检测不一致的克隆。它是开源的,使其他研究人员能够使用它作为进一步调查的基础。
2017-01-19 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
Detecting Code Clones: A review
代码克隆检测涉及检测代码库中重复的代码片段。检测这些克隆对于需要编辑克隆的维护操作非常有用。预计开发的工具将足够强大,即使在克隆被修改时也能识别克隆,同时保持合理的召回率和准确率。还期望这些工具能够容易地适应不同的程序设计语言。解决这个问题的主要方法包括使用直接的字符串匹配,标记比较或使用抽象语法树进行比较。由于缺乏标准化的衡量框架,很难对检测工具进行比较。应该做更多的工作,使现有的工具对其他实际/工业用途有用。
2016-05-04 cs.SE
SourcererCC and SourcererCC-I: Tools to Detect Clones in Batch mode and During Software Development
由于有大量的源代码存储库可用,因此已经有大量的应用程序用于大规模克隆检测。不幸的是,尽管经过了十年的积极研究,但仍明显缺乏可扩展到大型软件系统或大型存储库的克隆检测器,特别是用于检测在克隆代码中可能发生重大编辑活动的近距离(3型)克隆。本文论证了:(i)SourcerCC是一个基于标记的克隆检测器,以前三种克隆类型为目标,并利用索引实现使用标准工作站的大型项目间储存库的可扩展性。它使用优化的反向索引来快速查询给定代码块的潜在克隆。基于令牌排序的过滤算法用于显著减少索引的大小、检测克隆所需的代码块比较的数量以及判断潜在克隆所需的令牌比较的数量,以及(ii)SourcerCC-I,Eclipse插件,它使用SourcerCC的核心引擎在软件开发过程中实时识别和导航克隆(项目间和项目内)。在我们的实验中,将SourcerCC与最先进的工具进行比较,我们发现它是唯一一个在具有12 GB RAM的标准工作站上成功扩展到250 Mbit的克隆检测工具,并有效检测前三种类型的克隆(精确度86%,召回率86-100%)。演示链接:https://youtu.be/l7F_9Qp-ks4
2016-03-05 cs.SE
An Empirical Analysis of Git Commit Logs for Potential Inconsistency in Code Clones
本研究针对代码克隆对提交日志分析不足的问题,通过git-log分析Apache基金会45个仓库的克隆提交情况,发现克隆变更频率低、共同变更占比约一半且存在大量潜在不一致克隆对,凸显了克隆全周期一致性管理的必要性。
2024-09-13 cs.SE
Detecting Essence Code Clones via Information Theoretic Analysis
本文提出ECScan工具,利用信息论评估代码行语义重要性,以检测传统方法难以发现的本质克隆,平均F1分数达85%,优于现有工具。
2025-02-26 cs.SE
Multi-threshold token-based code clone detection
克隆检测在软件工程中占有重要地位。在单个项目中查找克隆引入了可能的重构机会,并且在不同的项目之间,它可以用于检测代码重用或可能的许可违规。在本文中,我们提出了一个修改袋令牌的克隆检测,允许检测更多的克隆对更大的多样性,而不会失去精度,通过实施多阈值搜索,即进行多次搜索,针对不同的克隆组。为了对抗这种方法带来的操作时间的增加,我们提出了一种优化,允许显着减少搜索之间检测到的克隆的重叠。我们评估了两种不同的流行的克隆检测工具的方法在两个不同大小的数据集。该技术的实施允许增加40.5-56.6%的不同数据集的检测到的克隆的数量。BigCloneBench评估还显示,检测强3型克隆的召回率从37.5%提高到59.6%。
2021-01-06 cs.SE
Are Classical Clone Detectors Good Enough For the AI Era?
本文利用GPTCloneBench等基准系统评估九种经典代码克隆检测工具,发现经有效归一化增强的工具对AI生成克隆仍具较强检测能力,并揭示其性能差异与选型依据。
2025-09-30 cs.SE
Detecting Semantic Clones of Unseen Functionality
本文提出使用对比学习改进模型检测未见功能的克隆性能,实验显示任务特定模型和LLMs的F1值分别提升26%和5%。
2025-10-05 cs.SE
A Slicing-Based Approach for Detecting and Patching Vulnerable Code Clones
本文提出srcVul方法,结合程序切片与局部敏感哈希检测易受攻击的代码克隆并推荐补丁,在漏洞数据库上取得91%精确率和75%召回率。
2025-05-05 cs.CR cs.SE
AdaCCD: Adaptive Semantic Contrasts Discovery Based Cross Lingual Adaptation for Code Clone Detection
Zhejiang University(浙江大学);Stony Brook University(石溪大学)
针对跨语言代码克隆检测标注数据不足的问题,提出AdaCCD方法,通过自适应精炼对比学习框架迁移预训练模型的语言无关表示,在5语言基准上优于基线且性能接近有监督微调。
2024-03-06 cs.CL cs.SE
On the Effectiveness of Clone Detection for Detecting IoT-related Vulnerable Clones
由于物联网系统通过互联网提供服务,因此即使恶意用户攻击它们,它们也必须继续安全运行。由于连接到IoT的边缘设备的计算资源有限,因此通常使用轻量级平台和网络协议。轻量级平台和网络协议对攻击的抵抗力较低,增加了开发人员嵌入漏洞的风险。代码克隆研究社区一直在开发修复错误的方法(例如,克隆人同时然而,关于物联网相关的脆弱克隆的研究很少。目前还不清楚现有的代码克隆检测技术是否可以同时修复易受攻击的克隆。在这项研究中,我们首先创建了两个与物联网相关的易受攻击代码的数据集。然后,我们进行了初步调查,以显示现有的代码克隆检测工具(例如,NiCaD,CCFinderSW)能够通过将其应用于创建的数据集来检测与物联网相关的脆弱克隆。初步结果表明,现有的工具可以部分检测到它们。
2021-10-20 cs.CR 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
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
VulCoCo: A Simple Yet Effective Method for Detecting Vulnerable Code Clones
本文提出 VulCoCo,一种结合嵌入检索与 LLM 验证的轻量级漏洞代码克隆检测方法,在合成基准上超越现有方法,并在真实开源项目中通过提交 400 个 PR 验证其有效性。
2025-07-22 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
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
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
Towards Semantic Clone Detection via Probabilistic Software Modeling
语义克隆是具有相似行为但不同文本表示的程序组件。语义相似度检测是一个难点,语义克隆检测也是一个有待解决的问题。我们提出了语义克隆检测通过概率软件建模(PSM)作为一个强大的方法检测语义等价的方法。PSM检查程序的结构和运行时行为,并合成概率模型(PM)网络。网络中的每个PM代表程序中的一个方法,并且能够生成和评估运行时事件。我们利用这些功能来准确地找到语义克隆。实验结果表明,该方法可以在完全不存在句法相似性的情况下检测出语义克隆,具有较高的准确率和较低的出错率。
2020-01-21 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
SimClone: Detecting Tabular Data Clones using Value Similarity
University of Manitoba(曼尼托巴大学);Centre for Software Excellence, Huawei Canada(华为加拿大软件卓越中心);York University(约克大学)
提出SimClone方法,利用值相似性检测表格数据克隆,无需结构信息,性能优于现有方法至少20%,并具备可视化定位功能。
2024-06-24 cs.AI cs.DB cs.LG
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
Oreo: Detection of Clones in the Twilight Zone
源代码克隆被分为四种类型,从纯文本(类型1)到纯语义(类型4),检测难度不断增加。文献中报道的大多数克隆检测器都能很好地工作到Type-3,这说明了语法上的差异。然而,在Type-3和Type-4之间,存在着一系列的克隆体,尽管它们仍然表现出一些语法上的相似性,但极难被发现--阴阳魔界。文献中报道的大多数克隆探测器在该区域不能工作。我们提出了奥利奥,一种新的方法来源代码克隆检测,不仅检测类型-1到类型-3克隆准确,但也能够检测到更难检测克隆在阴阳魔界。奥利奥是使用机器学习、信息检索和软件度量的组合构建的。我们在BigCloneBench上评估奥利奥的召回率,并执行手动评估精度。奥利奥有很高的查全率和查准率。更重要的是,它以可扩展的方式推动了具有中等到弱句法相似性的克隆检测的边界。
2018-06-15 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
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
Evaluating Small-Scale Code Models for Code Clone Detection
本研究针对代码克隆检测中结构相似≠功能等价的难题,系统评估6款小型代码模型在5个数据集上的克隆分类性能,发现多数模型指标表现良好,但外观相似功能不同的克隆仍难检测。
2025-04-10 cs.SE
Towards Understanding the Capability of Large Language Models on Code Clone Detection: A Survey
本文首次系统评估了大语言模型在代码克隆检测中的能力,发现其在复杂语义克隆检测上优于现有方法,思维链提示和文本编码器嵌入可进一步提升性能,且能力因编程语言而异。
2023-08-06 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
RepliComment: Identifying Clones in Code Comments
代码注释是记录实现和促进程序理解的主要手段。因此,它们的质量应该是改进程序维护的主要关注点。虽然很多工作都致力于检测不良气味,如代码中的克隆,但很少有工作集中在注释上。在本文中,我们提出了我们的解决方案来检测开发人员应该修复的评论中的克隆。<$Comment可以自动分析Java项目并报告注释中的复制粘贴错误实例,并可以向开发人员指出应该修复哪些注释。此外,当克隆是写得不好的评论的迹象时,它可以报告。开发人员也应该修复这些实例,以提高代码文档的质量。我们对10个著名的开源Java项目进行了评估,发现了超过11000个注释克隆实例,其中超过1,300个是潜在的关键。我们改进了我们自己以前的工作,在同一个数据集中只能找到36个问题。我们对<$Comment报告的412个问题进行了手动检查,结果显示它在报告关键评论克隆方面的准确率为79%。手动检查200个额外的评论克隆,<$Comment过滤出合法的,不能证明任何假阴性。
2021-08-25 cs.SE
HyClone: Bridging LLM Understanding and Dynamic Execution for Semantic Code Clone Detection
针对传统方法和直接用大语言模型检测语义代码克隆效果不佳的问题,提出两阶段框架HyClone,结合LLM语义筛选与执行验证检测Python语义克隆,在精确率、召回率和F1值上均有显著提升。
2025-08-02 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
Cross-Language Source Code Clone Detection Using Deep Learning with InferCode
软件克隆有利于检测一种程序设计语言或多种语言中的安全漏洞和软件维护。现有的源克隆检测工作表现良好,但在一个单一的程序设计语言。然而,如果用不同的程序设计语言编写具有相同功能的代码段,则检测它是困难的,因为不同的程序设计语言具有不同的词法结构。此外,大多数现有的工作依赖于手动特征工程。在本文中,我们提出了一种基于源代码AST嵌入的深度神经网络模型,以端到端的方式检测源代码的跨语言克隆,而不需要手动过程来确定不同程序设计语言之间的相似特征。为了克服数据不足和减少过拟合,采用了连体结构。我们的模型的设计方法是双重的-(a)它接受AST嵌入作为两种不同程序设计语言的输入,(b)它使用深度神经网络从这些嵌入中学习抽象特征,以提高跨语言克隆检测的准确性。模型的早期评估观察到的平均准确率,召回率和F-测量分数分别为$0.99$,$0.59$和$0.80$,这表明我们的模型优于所有现有的跨语言克隆检测模型。
2022-05-10 cs.SE
Source Code Comments: Overlooked in the Realm of Code Clone Detection
重用代码可能会在代码存储库中产生重复或近似重复的代码克隆。目前的代码克隆检测技术,如程序依赖图,依赖于代码结构和它们的依赖关系来检测克隆。这些技术是昂贵的,使用大量的处理能力、时间和存储器。在实践中,程序员经常利用代码注释来理解和重用代码,因为注释携带重要的领域知识。但目前的代码检测技术忽略了代码注释,这主要是由于英语语言的歧义性。信息检索技术的最新进展可能具有利用代码注释进行克隆检测的潜力。我们通过在JHotDraw包上实证比较检测克隆的准确性来研究这一点,JHotDraw包包含315个类和27K行代码。为了在文件级别检测克隆,我们使用了一种主题建模技术,潜在狄利克雷分配,来分析代码注释,并使用GRAPLE(利用程序依赖关系图)来分析代码。我们的结果显示94.86召回率和84.21精度与潜在的Dirichlet分配和28.7召回率和55.39精度使用GRAPLE。我们发现潜在狄利克雷分配产生误报的情况下,程序缺乏质量的意见。但是,这种限制可以通过使用混合方法来解决:在文件级别使用代码注释来减少克隆集,然后在方法级别使用基于程序依赖图的技术来检测精确的克隆。我们进一步分析了Java和Python包,Java Swing和PyGUI,发现召回率为74.86%,准确率为84.21%。我们的研究结果要求重新审查的假设,在当前的克隆检测技术中使用的代码注释。
2020-06-25 cs.SE
Semantic Clone Detection via Probabilistic Software Modeling
Johannes Kepler University Linz(林茨约翰·开普勒大学);Technical University of Braunschweig(布伦瑞克工业大学)
语义克隆检测是寻找具有相似或相同运行时行为的程序元素的过程。例如,检测阶乘计算的递归和迭代实现之间的语义相等。语义克隆检测是克隆检测器事实上的技术边界。近年来,这一界限已被测试使用有趣的新方法。本文提供了一个语义克隆检测方法,检测克隆有0%的语法相似性。我们提出了语义克隆检测通过概率软件建模(SCD-PSM)作为一个稳定和精确的解决方案,语义克隆检测。PSM构建程序的概率模型,该模型能够评估和生成运行时数据。SCD-PSM利用此模型及其模型元素来查找行为上相等的模型元素。这种行为的平等,然后推广到语义平等的原始程序元素。它使用模型元素之间的可能性作为距离度量。然后,它采用似然比显著性检验来决定这个距离是否是显着的,给定一个预先指定的和可控的假阳性率。SCD-PSM的输出是程序元素对(即,方法)、它们的距离以及它们是否是克隆的决定。SCD-PSM可产生出色的结果,马修斯相关系数大于0.9。这些结果是在经典的语义克隆检测问题上得到的,例如检测算法的递归和迭代版本,但也可以在编码比赛中使用的复杂问题上得到。
2022-05-21 cs.AI cs.SE
On the Use of Deep Learning Models for Semantic Clone Detection
University of Saskatchewan(萨斯喀彻温大学)
本文提出一种多步评估方法,利用现有基准数据集和变异算子,对五种最先进的单语言与跨语言代码克隆检测模型进行鲁棒性与性能比较,发现跨语言模型C4在语义克隆检测上表现更优且更稳定。
2024-12-19 cs.LG cs.SE
Twin-Finder: Integrated Reasoning Engine for Pointer-related Code Clone Detection
The George Washington University(乔治·华盛顿大学)
检测代码克隆在各种软件工程任务中至关重要。特别地,代码克隆检测在分析和修复大规模应用程序中的错误的上下文中可以具有重要用途。然而,先前的工作,例如基于机器学习的克隆检测,可能导致相当数量的误报。在本文中,我们提出了双循环,一种新的,闭环的指针相关的代码克隆检测方法,集成了机器学习和符号执行技术,以达到精度。Twin-Twin引入了克隆验证机制来形式化验证两个克隆样本是否确实是克隆,并引入了反馈循环来自动生成形式化规则,以调整机器学习算法并进一步减少误报。我们的实验结果表明,双胞胎可以快速识别高达9倍以上的代码克隆相比,基于树的克隆检测器,Deckard和消除平均91.69%的误报。
2020-09-21 cs.LG cs.PL 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
Trained Without My Consent: Detecting Code Inclusion In Language Models Trained on Code
Polytechnique Montreal(蒙特利尔理工学院)
针对大语言模型训练数据集不公开导致代码版权侵权难判定的问题,提出基于成员推理的模型无关可解释方法TraWiC,检测准确率达83.87%,远超传统工具且资源开销更低。
2024-10-30 cs.LG cs.SE