期刊文献+
共找到100篇文章
< 1 2 5 >
每页显示 20 50 100
CloneIRD:面向代码溯源的克隆代码继承关系判定方法
1
作者 姜智文 任怡 +3 位作者 杨立明 管剑波 李宝 谭郁松 《郑州大学学报(理学版)》 CAS 北大核心 2024年第2期18-25,共8页
随着开源软件的广泛使用,代码溯源成为管理软件源代码、降低潜在风险的重要技术手段。基于代码克隆检测的大规模代码溯源分析,从其检测结果中鉴别代码克隆对之间的继承关系,对代码来源追踪、组件依赖关系分析、软件脆弱性分析以及代码... 随着开源软件的广泛使用,代码溯源成为管理软件源代码、降低潜在风险的重要技术手段。基于代码克隆检测的大规模代码溯源分析,从其检测结果中鉴别代码克隆对之间的继承关系,对代码来源追踪、组件依赖关系分析、软件脆弱性分析以及代码缺陷修复等具有重要意义。目前,已有方法在原始代码片段存在微小修改的情况下,会产生许多误判,并且检测克隆对的效率也有待提高。针对上述问题,提出了代码溯源中克隆代码继承关系的判定方法CloneIRD,包括一个基于自研快速分布式克隆检测工具FastDCF的代码溯源分析框架,以及该框架的核心算法——基于代码演化信息的克隆代码继承关系判定算法EIHR。为验证框架和算法的有效性,首先设计并实现了CloneIRD方法,并在Linux内核V4.9和V4.12的开源代码上进行了实验。实验结果表明,CloneIRD方法能够有效判定代码溯源结果中克隆对的继承关系,且基于FastDCF的溯源分析框架能够胜任大规模代码的溯源分析任务。 展开更多
关键词 代码溯源 克隆代码 克隆检测 代码继承关系
在线阅读 下载PDF
大模型生成代码的开源许可证违规风险洞察与分析
2
作者 王毅博 王莹 +3 位作者 余跃 许畅 于海 朱志良 《软件学报》 北大核心 2025年第6期2535-2557,共23页
大型语言模型的快速发展极大地影响了软件工程领域.这些模型利用大量开源仓库代码进行预训练,能够高效完成诸如代码生成和代码补全等任务.然而,开源软件仓库中存在大量受开源许可证约束的代码,这给大模型带来了潜在的开源许可证违规风险... 大型语言模型的快速发展极大地影响了软件工程领域.这些模型利用大量开源仓库代码进行预训练,能够高效完成诸如代码生成和代码补全等任务.然而,开源软件仓库中存在大量受开源许可证约束的代码,这给大模型带来了潜在的开源许可证违规风险.聚焦于大模型生成代码与开源仓库的许可证违规风险,基于代码克隆技术开发一个支持大模型生成代码溯源与版权违规问题的检测框架.针对9个主流代码大模型生成的135000个Python代码,利用该框架在开源社区中溯源并检测开源许可证兼容性.通过实践调查3个研究问题来探究大模型代码生成对开源软件生态的影响:(1)大模型生成的代码多大程度克隆于开源软件仓库?(2)大模型生成的代码是否存在开源许可证违规风险?(3)真实开源软件中包含的大模型生成代码是否存在开源许可证违规风险?实验结果发现在使用功能描述和方法签名所生成的43130和65900个大于6行的Python代码中,分别溯源到了68.5%和60.9%的代码存在克隆的开源代码片段.其中CodeParrot和CodeGen系列模型的克隆比例最高,GPT-3.5-Turbo最低.其次,92.7%的通过功能描述生成的代码中没有开源许可证声明.通过与溯源代码许可证进行对比,81.8%的代码存在开源许可证违规风险.此外,在收集到的229个GitHub平台开发者使用大模型生成的代码中,有136个代码溯源了到开源代码片段,其中38个为Type1和Type2克隆类型,有30个存在开源许可证违规风险.以问题报告的形式提交给开发者,到目前为止,得到了8位开发者的反馈. 展开更多
关键词 大语言模型 开源许可证 开源许可证冲突 代码克隆 代码搜索
在线阅读 下载PDF
基于代码特征的代码克隆搜索方法
3
作者 张明睿 陈碧欢 +1 位作者 张跃 赵文耘 《计算机应用与软件》 北大核心 2025年第3期7-14,共8页
当前代码克隆搜索的研究主要集中在了搜索实现方式相同或变化不大的代码克隆上,对于语义代码克隆搜索,当前的方法表现不佳。为了提高语义代码克隆搜索的准确性,提出一个基于代码特征的代码克隆搜索方法,对代码片段建立代码图,并在图中... 当前代码克隆搜索的研究主要集中在了搜索实现方式相同或变化不大的代码克隆上,对于语义代码克隆搜索,当前的方法表现不佳。为了提高语义代码克隆搜索的准确性,提出一个基于代码特征的代码克隆搜索方法,对代码片段建立代码图,并在图中抽取关键节点来构造语义特征表示,使用倒排索引以及基于TF-IDF的评分算法进行搜索。实验结果表明,在语义代码克隆搜索能力上,所提出的方法比现有方法有较大提升。 展开更多
关键词 代码克隆 克隆检测 代码搜索 代码克隆搜索 特征提取
在线阅读 下载PDF
最长公共子序列嵌入支持下的代码相似性检测
4
作者 弓媛君 黄建军 +4 位作者 游伟 石文昌 梁彬 边攀 张健 《软件学报》 北大核心 2025年第11期4975-4989,共15页
最长公共子序列(longest common subsequence,LCS)是一种衡量代码相似度的可行指标.然而,经典LCS算法的时间复杂度较高,难以应对大型数据集,并且,由于代码文本序列中的词(token)本质为一种基于离散表示的编码,直接使用LCS算法无法有效... 最长公共子序列(longest common subsequence,LCS)是一种衡量代码相似度的可行指标.然而,经典LCS算法的时间复杂度较高,难以应对大型数据集,并且,由于代码文本序列中的词(token)本质为一种基于离散表示的编码,直接使用LCS算法无法有效识别文本不同但语义相似的代码片段中的关键语义.针对这两方面的不足,提出一种面向LCS的嵌入方法,将代码间的LCS计算转换为代码低维稠密嵌入向量间的数值运算,并可以利用近似最近邻算法进一步加速其计算.为此,设计了一个可嵌入的基于LCS的距离度量方法,实验证明这种代码度量在提取函数关键语义的表现上优于对比嵌入工具使用的基于文本的距离或基于树的距离.同时,为了在嵌入过程中有重点地保留代码的关键语义,构建了两种损失函数和相应的训练集,识别文本上不同但语义上相似的代码元素,使模型在检测复杂代码克隆时有更好的表现.实验证明了该方法拥有很强的可扩展性,且其对复杂克隆的检测能力也保持在很高水平.将该技术应用于相似缺陷的识别,上报了23个未知缺陷,这些缺陷已被开发人员在实际项目中确认,其中有些复杂缺陷是难以被基于文本的LCS算法检出的. 展开更多
关键词 最长公共子序列(LCS) 代码相似性检测 代码嵌入 缺陷检测 克隆检测
在线阅读 下载PDF
基于代码克隆差异分析的函数模板挖掘和检索方法
5
作者 肖泉彬 陈源 +1 位作者 吴毅坚 彭鑫 《软件学报》 北大核心 2025年第6期2774-2793,共20页
在软件工程领域,代码库承载着丰富的知识资源,可以为开发者提供编程实践的案例参考.源代码中频繁出现的模式化重复片段,若能以代码模板的形式有效提炼,就能显著提升编程效率.当前实践中,开发者常常通过源代码搜索复用现有解决方案,然而... 在软件工程领域,代码库承载着丰富的知识资源,可以为开发者提供编程实践的案例参考.源代码中频繁出现的模式化重复片段,若能以代码模板的形式有效提炼,就能显著提升编程效率.当前实践中,开发者常常通过源代码搜索复用现有解决方案,然而此方法往往产生大量相似且冗余的结果,增加了后续筛选工作的负担.与此同时,以克隆代码为基础的模板挖掘技术往往未能涵盖由分散小克隆片段构成的广泛模式,进而限制了模板的实用性.提出了一种基于代码克隆检测的代码模板提取和检索方法,通过拼接多个片段级克隆以及提取和聚合方法级克隆的共享部分,实现了更高效的函数级代码模板提取,并解决了模板质量问题.基于所挖掘的代码模板,提出了一种代码结构特征的三元组表示法,有效地对纯文本特征进行补充,并实现了高效而简洁的结构表示.此外,提出了一种结构和文本检索相结合的模板特征检索方法,以便通过匹配编程上下文的特征来检索这些模板.基于该方法实现的工具CodeSculptor,在包含45个高质量Java开源项目的代码库测试中展现了其提取高质量代码模板的显著能力.结果表明,该工具挖掘的模板平均可实现减少60.87%的代码量,且有92.09%是通过拼接片段级克隆产生的,这一比例的模板在传统方法中是无法识别出来的,这印证了该方法在识别和构建代码模板方面的卓越性能.在代码模板检索和推荐的实验中,Top-5检索结果精确度达到了96.87%.通过对随机选择的9600个模板进行的初步案例研究,讨论了模板的实用性,并发现大多数抽样代码模板在语义上是完整的,少数无意义的模板表明该模板提取工作未来的潜力.用户研究进一步表明,使用CodeSculptor能够更有效率地完成代码开发任务. 展开更多
关键词 克隆检测 代码检索 特征表示 软件开发 代码复用
在线阅读 下载PDF
基于增强控制流图与孪生网络架构的代码克隆检测方法
6
作者 熊曙初 段金焱 +1 位作者 尹璐 曾智勇 《计算机应用研究》 北大核心 2025年第7期2132-2140,共9页
针对现有代码克隆检测方法存在上下文信息缺失以及语义学习能力弱的问题,提出一种基于增强控制流图与孪生网络架构的代码克隆检测方法。该方法首先设计了代码表示结构ECFG(enhanced control flow graph),在控制流图中嵌入跨节点关联边... 针对现有代码克隆检测方法存在上下文信息缺失以及语义学习能力弱的问题,提出一种基于增强控制流图与孪生网络架构的代码克隆检测方法。该方法首先设计了代码表示结构ECFG(enhanced control flow graph),在控制流图中嵌入跨节点关联边以强化上下文信息的感知;其次构建基于孪生网络架构的代码语义匹配模型CGSMN(code graph semantic matching network)。该模型先融合多头注意力机制,提取节点中的关键信息,随后改进关系图注意力网络,捕获节点间的关联信息以生成图特征向量,再挖掘特征向量间的语义联系,计算语义相似度。在两个代表性数据集上进行实证,结果表明,与ASTNN、FA-AST和DHAST等方法相比,在BigCloneBench数据集上,F_(1)值提升了0.5~15.5百分点,在Google Code Jam数据集上F_(1)值提升了1.5~16.5百分点,证明了该方法针对语义克隆检测的有效性。 展开更多
关键词 控制流图 孪生网络架构 代码表征 语义相似性 克隆检测
在线阅读 下载PDF
TPLADD:高鲁棒性与高精度的C/C++第三方库检测方法
7
作者 贾昀峰 王俊峰 吴鹏 《计算机科学与探索》 北大核心 2025年第7期1969-1980,共12页
第三方库(TPL)作为现代C/C++软件开发的重要组成部分,其精确检测与管理对于保障软件质量与安全性至关重要。然而现有方法主要依赖代码语法特征,对TypeⅡ和TypeⅢ克隆重用场景的适应性不足,易导致检测失效。提出一种基于函数抽象语法树(A... 第三方库(TPL)作为现代C/C++软件开发的重要组成部分,其精确检测与管理对于保障软件质量与安全性至关重要。然而现有方法主要依赖代码语法特征,对TypeⅡ和TypeⅢ克隆重用场景的适应性不足,易导致检测失效。提出一种基于函数抽象语法树(AST)特征的TPL检测方法TPLADD。该方法利用AST节点度数与次序的度量信息快速实现函数语法向量嵌入,并结合向量数据库与近似最近邻检索技术,显著提升了修改重用场景下的检测鲁棒性。基于异常检测的过滤技术可以有效减少干扰函数对检测的影响,提高结果精确性。基于GitHub搜集的29 782个开源软件(OSS)共计726 074个版本,构建了特征向量索引库,并在100个知名项目上验证有效性。实验结果表明,在精度上,TPLADD相较于CENTRIS,精确率和召回率分别提升了3.88和2.76个百分点;在鲁棒性上,TPLADD即使出现较大程度代码修改时,仍能保持74%的F1值;在性能上,TPLADD平均每个TPL检测耗时仅0.42 s,索引库存储占用率仅为总体函数特征的0.41%。这些充分体现了TPLADD高鲁棒性、高精确性的特点,且具备良好的性能表现。 展开更多
关键词 开源软件 软件组件分析 第三方库检测 代码克隆 修改重用 静态分析
在线阅读 下载PDF
代码相似性检测技术综述 被引量:3
8
作者 孙祥杰 魏强 +1 位作者 王奕森 杜江 《计算机应用》 CSCD 北大核心 2024年第4期1248-1258,共11页
代码复用为软件开发带来便利的同时也引入了安全风险,如加速漏洞传播、代码恶意抄袭等,代码相似性检测技术通过分析代码间词法、语法、语义等信息计算代码相似程度,是判断代码复用最有效的技术之一,也是近年发展较快的程序安全分析技术... 代码复用为软件开发带来便利的同时也引入了安全风险,如加速漏洞传播、代码恶意抄袭等,代码相似性检测技术通过分析代码间词法、语法、语义等信息计算代码相似程度,是判断代码复用最有效的技术之一,也是近年发展较快的程序安全分析技术。首先,系统梳理代码相似性检测的近期技术进展,根据目标代码是否开源,将代码相似性检测技术分为源码相似性检测和二进制代码相似性检测,又根据编程语言、指令集的不同进行二次细分;其次,总结每一种技术的思路和研究成果,分析机器学习技术在代码相似性检测领域成功的案例,并讨论现有技术的优势与不足;最后,给出代码相似性检测技术的发展趋势,为相关研究人员提供参考。 展开更多
关键词 二进制代码相似性 源代码相似性 跨语言代码相似性 深度学习 代码克隆
在线阅读 下载PDF
基于对比学习的跨语言代码克隆检测方法 被引量:2
9
作者 吕泉润 谢春丽 +1 位作者 万泽轩 魏家劲 《计算机应用研究》 CSCD 北大核心 2024年第7期2147-2152,共6页
代码克隆检测是提高软件开发效率、软件质量和可靠性的重要手段。基于抽象语法树(abstract syntax tree,AST)的单语言克隆检测已经取得了较为显著的效果,但跨语言代码的AST节点存在同义词、近义词且手工标注数据集成本高等问题,限制了... 代码克隆检测是提高软件开发效率、软件质量和可靠性的重要手段。基于抽象语法树(abstract syntax tree,AST)的单语言克隆检测已经取得了较为显著的效果,但跨语言代码的AST节点存在同义词、近义词且手工标注数据集成本高等问题,限制了现有克隆检测方法的有效性和实用性。针对上述问题,提出一种基于对比学习的树卷积神经网络(contrastive tree convolutional neuraln etwork,CTCNN)的跨语言代码克隆检测方法。该方法首先将不同编程语言的代码解析为AST,并对AST的节点类型和节点值作同义词转换处理,以降低不同编程语言AST之间的差异;同时,采用对比学习扩充负样本并对模型进行训练,使得在小样本数据集下能够最小化克隆对之间的距离,最大化非克隆对之间的距离。最后在公开数据集上进行了评测,精确度达到95.26%、召回率为99.98%、F_(1)为97.56%。结果表明,相较于现有的最好的CLCDSA和C4方法,该模型的检测精度分别提高了432%和3.73%,其F_(1)值分别提升了29.84%和6.29%,证明了所提模型是一种有效的跨语言代码克隆检测方法。 展开更多
关键词 跨语言 代码克隆 对比学习 抽象语法树
在线阅读 下载PDF
基于依赖增强的分层抽象语法树的代码克隆检测 被引量:2
10
作者 万泽轩 谢春丽 +1 位作者 吕泉润 梁瑶 《计算机应用》 CSCD 北大核心 2024年第4期1259-1268,共10页
在软件工程领域,基于语义相似的代码克隆检测方法可以降低软件维护的成本并预防系统漏洞,抽象语法树(AST)作为典型的代码抽象表征形式,已成功应用于多种程序语言的代码克隆检测任务,然而现有工作主要利用原始AST提取代码的语义,没有深... 在软件工程领域,基于语义相似的代码克隆检测方法可以降低软件维护的成本并预防系统漏洞,抽象语法树(AST)作为典型的代码抽象表征形式,已成功应用于多种程序语言的代码克隆检测任务,然而现有工作主要利用原始AST提取代码的语义,没有深入挖掘AST中的深层语义和结构信息。针对上述问题,提出一种基于依赖增强的分层抽象语法树(DEHAST)的代码克隆检测方法。首先,对AST进行分层处理,将AST划分得到不同的语义层次;其次,为AST的不同层次添加相应的依赖增强边构建DEHAST,将简单的AST变成具有更丰富程序语义的异构图;最后,使用图匹配网络(GMN)模型检测异构图的相似性,实现代码克隆检测。在BigCloneBench和Google Code Jam两个数据集上的实验结果显示,DEHAST能够检测100%的Type-1和Type-2代码克隆、99%的Type-3代码克隆和97%的Type-4代码克隆;与基于树的方法ASTNN(AST-based Neural Network)相比,F1分数均提高了4个百分点,验证了DEHAST可以较好地完成代码语义克隆检测。 展开更多
关键词 代码克隆检测 语义克隆 抽象语法树 深度学习 图匹配网络
在线阅读 下载PDF
基于词汇的源代码克隆检测技术综述
11
作者 刘春玲 戚旭衍 +3 位作者 唐永鹤 孙雪凯 李晴浩 张雨 《计算机科学》 CSCD 北大核心 2024年第6期12-22,共11页
代码克隆指在软件开发过程中对源代码复用、修改、重构产生的文本相似或结构相似的代码。代码克隆对提升软件开发效率、节约开发成本有积极作用,但也会引起Bug传播,并对软件的稳定性、可维护性产生负面影响。代码克隆检测在剽窃检测、... 代码克隆指在软件开发过程中对源代码复用、修改、重构产生的文本相似或结构相似的代码。代码克隆对提升软件开发效率、节约开发成本有积极作用,但也会引起Bug传播,并对软件的稳定性、可维护性产生负面影响。代码克隆检测在剽窃检测、漏洞检测、版权侵权等领域具有重要的研究意义和应用价值。基于词汇的克隆检测技术能快速检测1-3型克隆,能扩展到其他编程语言,已被广泛应用于大规模克隆检测任务中。文中对近5年基于词汇的克隆检测技术的研究现状进行了梳理,根据相似性算法中的基本计算粒度将其分为4类,并对10余个技术特征进行了分析和总结,讨论其局限性及面临的挑战,最后结合新技术的发展提出了基于词汇的克隆检测技术未来可能的研究方向。 展开更多
关键词 软件安全 源代码克隆检测 代码表征 深度学习
在线阅读 下载PDF
基于Token编辑距离检测克隆代码 被引量:13
12
作者 张久杰 王春晖 +2 位作者 张丽萍 侯敏 刘东升 《计算机应用》 CSCD 北大核心 2015年第12期3536-3543,共8页
针对当前Type-3克隆代码检测工具较少、效率偏低等问题,提出了一种基于Token的能有效检测Type-3克隆代码的检测方法。该方法同时能有效检测Type-1和Type-2克隆代码。首先将源代码Token化得到特定代码粒度的Token串,其次将所有Token串的... 针对当前Type-3克隆代码检测工具较少、效率偏低等问题,提出了一种基于Token的能有效检测Type-3克隆代码的检测方法。该方法同时能有效检测Type-1和Type-2克隆代码。首先将源代码Token化得到特定代码粒度的Token串,其次将所有Token串的定长子串进行映射,在对映射信息进行查询的基础上,利用编辑距离算法确定克隆对,然后通过并查集算法快速构建克隆群,最终反馈克隆代码信息。实现了原型工具FClones,利用基于代码突变的框架对工具进行了评价,并与领域内较优秀的两款工具Ni Cad及Sim Cad进行了对比。实验结果表明,FClones在检测三类克隆代码时查全率均不低于95%,查准率均不低于98%,能更好地检测Type-3克隆代码。 展开更多
关键词 克隆代码 克隆检测 编辑距离 Type-3 TOKEN
在线阅读 下载PDF
基于软件多版本演化提取克隆谱系 被引量:10
13
作者 涂颖 张丽萍 +2 位作者 王春晖 侯敏 刘东升 《计算机应用》 CSCD 北大核心 2015年第4期1169-1173,1178,共6页
针对单个版本克隆检测结果不足以体现克隆特征这一问题,从软件多版本中自动提取克隆谱系,获得克隆在软件演化过程中表现出的模式和特征。首先基于克隆代码Token表示及其所在文件名称、函数名称等位置属性,准确映射软件历时演化版本间的... 针对单个版本克隆检测结果不足以体现克隆特征这一问题,从软件多版本中自动提取克隆谱系,获得克隆在软件演化过程中表现出的模式和特征。首先基于克隆代码Token表示及其所在文件名称、函数名称等位置属性,准确映射软件历时演化版本间的克隆代码,进而识别克隆演化模式;然后匹配克隆类ID号,合并所有相邻版本间的映射结果及演化模式信息,得到克隆谱系。同时开发了相应的克隆谱系自动提取工具FCG对6款开源软件进行了测试,发现当前版本中克隆代码平均生命周期占所研究版本总数的70%以上,且大部分没有发生变化,说明大部分克隆能被较好地维护,但也存在少量不稳定的克隆可能导致软件缺陷,需要修改或重构。实验结果表明FCG可高效提取克隆谱系,有助于更好地理解克隆及有针对性地管理克隆。 展开更多
关键词 克隆代码 克隆谱系 多版本 克隆演化 软件维护
在线阅读 下载PDF
克隆代码技术研究综述 被引量:13
14
作者 史庆庆 孟繁军 +1 位作者 张丽萍 刘东升 《计算机应用研究》 CSCD 北大核心 2013年第6期1617-1623,共7页
软件系统中克隆代码的检测与管理是软件工程中的基本问题之一,在软件的质量、维护、架构、进化、专利和剽窃等众多领域有着广泛的应用需求。综述了克隆检测的过程、技术及其优缺点、克隆进化方向上的相关研究,以及克隆管理的一些技术,... 软件系统中克隆代码的检测与管理是软件工程中的基本问题之一,在软件的质量、维护、架构、进化、专利和剽窃等众多领域有着广泛的应用需求。综述了克隆检测的过程、技术及其优缺点、克隆进化方向上的相关研究,以及克隆管理的一些技术,并特别介绍了克隆重构技术。最后概括了该领域所取得的研究成果,并讨论了目前克隆代码研究中所遇到的挑战性问题。 展开更多
关键词 克隆代码 克隆检测 克隆进化 克隆管理 克隆重构
在线阅读 下载PDF
基于主题建模技术的克隆群映射方法 被引量:11
15
作者 张瑞霞 张丽萍 +1 位作者 王春晖 侯敏 《计算机工程与设计》 北大核心 2015年第6期1524-1529,共6页
针对对源代码进行拷贝、粘贴及修改活动会导致软件中出现大量的克隆代码的问题,将主题建模技术应用于克隆代码,提出一种克隆群映射方法。运用主题建模技术将映射问题由高维的代码空间转化到低维的主题空间上,通过主题的映射间接实现映... 针对对源代码进行拷贝、粘贴及修改活动会导致软件中出现大量的克隆代码的问题,将主题建模技术应用于克隆代码,提出一种克隆群映射方法。运用主题建模技术将映射问题由高维的代码空间转化到低维的主题空间上,通过主题的映射间接实现映射相邻版本克隆群的目的。对4款开源软件进行方法评估,实验结果表明,使用该方法的查全率和查准率均高达0.99,其能够有效准确地实现相邻版本的克隆群映射。 展开更多
关键词 克隆代码 软件演化 主题 主题建模 克隆群映射
在线阅读 下载PDF
使用抽象语法树和静态分析的克隆代码自动重构方法 被引量:14
16
作者 于冬琦 彭鑫 赵文耘 《小型微型计算机系统》 CSCD 北大核心 2009年第9期1752-1760,共9页
单个软件系统中以及若干个相似系统之间的代码克隆给软件维护增加了很大困难.本文针对运用克隆侦测发现的相似代码片断,提出一种基于抽象语法树和静态分析的代码自动重构方法.该方法首先为克隆代码分别构造抽象语法树,然后运用语句差异... 单个软件系统中以及若干个相似系统之间的代码克隆给软件维护增加了很大困难.本文针对运用克隆侦测发现的相似代码片断,提出一种基于抽象语法树和静态分析的代码自动重构方法.该方法首先为克隆代码分别构造抽象语法树,然后运用语句差异度指标建立起语法树之间流程控制语句的对应关系.在此基础上,该方法根据控制流程和基本语句块两个层次上的差异性分析,最终通过代码可变点提取实现克隆代码的自动合并.针对Java代码开发了克隆代码重构支持工具原型,并分别针对JDK1.5和一个业务系统进行了自动重构实验.初步的结果表明,该方法能够准确、有效地辅助开发者实现克隆代码的自动重构. 展开更多
关键词 可变点提取 代码克隆 抽象语法树 再工程 逆向工程
在线阅读 下载PDF
基于后缀数组的克隆检测 被引量:7
17
作者 史庆庆 张丽萍 +1 位作者 尹丽丽 刘东升 《计算机工程》 CAS CSCD 2013年第9期123-127,共5页
程序员对源代码的拷贝、粘贴及修改活动会导致软件中出现大量克隆代码,增加软件开发和维护的成本。为解决该问题,提出一种新的克隆检测方法。利用基于后缀数组的算法查找重复的Token子串,进而检测出克隆代码,开发相应的克隆检测工具SaCD... 程序员对源代码的拷贝、粘贴及修改活动会导致软件中出现大量克隆代码,增加软件开发和维护的成本。为解决该问题,提出一种新的克隆检测方法。利用基于后缀数组的算法查找重复的Token子串,进而检测出克隆代码,开发相应的克隆检测工具SaCD,用其检测29款C语言开源软件。实验结果表明,SaCD能快速有效地检测软件中的Type-1和Type-2语句克隆,其检测速度比传统的克隆检测工具CCFinderx快了近20倍。 展开更多
关键词 克隆代码 克隆检测 Token串 后缀数组 重复子串 DC3算法
在线阅读 下载PDF
基于版本间克隆映射的演化模式识别及谱系构建 被引量:4
18
作者 张久杰 翟晔 +2 位作者 王春晖 张丽萍 刘东升 《计算机应用》 CSCD 北大核心 2016年第7期2021-2030,共10页
针对当前克隆谱系的构建方法较为复杂、演化模式亟需扩充等问题,提出了新的克隆代码演化模式,并根据软件版本间的克隆代码映射关系自动构建了克隆谱系。首先,针对软件每一版本进行克隆检测并利用潜在狄利克雷分配(LDA)抽取克隆代码的主... 针对当前克隆谱系的构建方法较为复杂、演化模式亟需扩充等问题,提出了新的克隆代码演化模式,并根据软件版本间的克隆代码映射关系自动构建了克隆谱系。首先,针对软件每一版本进行克隆检测并利用潜在狄利克雷分配(LDA)抽取克隆代码的主题信息;然后,根据克隆代码主题的相似度确定版本间克隆代码的映射关系;进而,根据已有的映射关系为克隆代码添加演化模式并分析演化特征;最终,结合映射信息与演化模式信息完成克隆谱系的构建。针对4款开源软件进行了克隆谱系的构建实验,实验结果表明所提克隆谱系构建方法可行,证实了新提出的演化模式在克隆代码演化过程中确实存在。实验发现约90%的克隆代码在软件演化过程中比较稳定,约67%的克隆群经历的发布版本数不超过发布版本总数的一半。实验结论及理论分析将为克隆代码的后续研究及克隆代码的维护与管理提供有力支持。 展开更多
关键词 克隆代码 主题建模 软件演化 演化模式 克隆谱系 软件维护
在线阅读 下载PDF
基于相似性度量的面向对象程序方法级克隆侦测 被引量:4
19
作者 于冬琦 吴毅坚 +1 位作者 彭鑫 赵文耘 《电子学报》 EI CAS CSCD 北大核心 2010年第B02期174-181,共8页
代码克隆侦测对于代码重构以及可复用资产抽取都有着重要的作用.现有的克隆侦测方法及工具以相似代码片段为单位,给进一步的克隆分析以及代码重构带来困难.针对这一问题,本文提出了一种基于相似性度量的面向对象程序方法级克隆侦测方... 代码克隆侦测对于代码重构以及可复用资产抽取都有着重要的作用.现有的克隆侦测方法及工具以相似代码片段为单位,给进一步的克隆分析以及代码重构带来困难.针对这一问题,本文提出了一种基于相似性度量的面向对象程序方法级克隆侦测方法,即以方法为单位进行克隆代码侦测.该方法综合利用代码中的注释、签名以及语法相似性来度量方法代码之间的克隆程度.在此基础上合并子类中的相似方法并提取到父类中,从而实现进一步的代码重构.本文通过对JDK包中代码的实验分析验证了本文所提出方法的有效性.初步的实验结果表明,本文方法能够准确、有效地辅助开发者实现方法级的克隆代码侦测. 展开更多
关键词 面向对象 代码克隆 克隆侦测 逆向工程 重构
在线阅读 下载PDF
基于贝叶斯网络的克隆代码有害性预测 被引量:8
20
作者 张丽萍 张瑞霞 +1 位作者 王欢 闫盛 《计算机应用》 CSCD 北大核心 2016年第1期260-265,共6页
在软件开发过程中,程序员的复制、粘贴活动会产生大量的克隆代码,而那些发生不一致变化的克隆代码往往对程序是有害的。为了解决该问题,有效地发现程序中的有害克隆代码,提出一种基于贝叶斯网络的克隆有害性预测方法。首先,结合软件缺... 在软件开发过程中,程序员的复制、粘贴活动会产生大量的克隆代码,而那些发生不一致变化的克隆代码往往对程序是有害的。为了解决该问题,有效地发现程序中的有害克隆代码,提出一种基于贝叶斯网络的克隆有害性预测方法。首先,结合软件缺陷研究领域与克隆演化领域的相关研究成果,提出了两大类表征克隆代码信息的特征,分别是静态特征和演化特征;其次,通过贝叶斯网络核心算法来构建克隆有害性预测模型;最后,预测有害克隆代码发生的可能性。在5款C语言开源软件共99个版本上对克隆有害性预测模型的性能进行评估,实验结果表明该方法能够有效地实现对克隆代码有害性的预测,降低有害克隆代码对软件的威胁,提高软件质量。 展开更多
关键词 克隆代码 有害性预测 贝叶斯网络 克隆演化 机器学习
在线阅读 下载PDF
上一页 1 2 5 下一页 到第
使用帮助 返回顶部