首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 62 毫秒
1.
程序员对源代码的拷贝、粘贴及修改活动会导致软件中出现大量克隆代码,增加软件开发和维护的成本。为解决该问题,提出一种新的克隆检测方法。利用基于后缀数组的算法查找重复的 Token 子串,进而检测出克隆代码,开发相应的克隆检测工具SaCD,用其检测29款C语言开源软件。实验结果表明,SaCD能快速有效地检测软件中的Type-1和Type-2语句克隆,其检测速度比传统的克隆检测工具CCFinderx快了近20倍。  相似文献   

2.
针对Type-3克隆代码映射方法少且效率低等问题,提出了一种基于改进向量空间模型(VSM)的映射方法。该方法将改进的VSM引入到克隆代码分析中,从而得到一种可有效映射Type-1、Type-2以及Type-3克隆代码的克隆群映射方法。首先,将克隆群文档预处理得到去除无用词的代码文档,同时提取克隆群文档的文件名、函数名等特征项;其次,提取并构建克隆群词频向量空间,利用余弦算法计算出克隆群相似度;然后,通过克隆群相似度和特征项的匹配构建克隆群映射,最终得到克隆群映射结果。对5款开源软件进行实验并人工验证,所提方法能在低时耗的前提下,保证查全率和查准率均不低于96.1%和97.1%。实验结果表明了所提方法的可行性,为后期软件演化分析提供数据支撑。  相似文献   

3.
针对当前Type-3克隆代码检测工具较少、效率偏低等问题,提出了一种基于Token的能有效检测Type-3克隆代码的检测方法。该方法同时能有效检测Type-1和Type-2克隆代码。首先将源代码Token化得到特定代码粒度的Token串,其次将所有Token串的定长子串进行映射,在对映射信息进行查询的基础上,利用编辑距离算法确定克隆对,然后通过并查集算法快速构建克隆群,最终反馈克隆代码信息。实现了原型工具FClones,利用基于代码突变的框架对工具进行了评价,并与领域内较优秀的两款工具NiCad及SimCad进行了对比。实验结果表明,FClones在检测三类克隆代码时查全率均不低于95%,查准率均不低于98%,能更好地检测Type-3克隆代码。  相似文献   

4.
本文介绍了后缀数组和广义后缀数组的概念,然后提出了一种类似桶排序的广义后缀数组的高效构造算法,并对算法的复杂度进行了分析.  相似文献   

5.
传统的基于Token的克隆检测方法利用代码字符串的序列化特性, 可以在大型代码仓中快速检测克隆. 但是与基于抽象语法树(AST)、程序依赖图(PDG)的方法相比, 由于缺少语法及语义信息, 针对文本有较大差异的克隆代码检测困难. 为此, 提出一种赋予语义信息的Token克隆检测方法. 首先, 分析抽象语法树, 使用AST路径抽象位于叶子节点的Token的语义信息; 然后, 在函数名和类型名角色的Token上建立低成本索引, 达到快速并有效地筛选候选克隆片段的目的. 最后, 使用赋予语义信息的Token判定代码块之间的相似性. 在公开的大规模数据集BigCloneBench实验结果表明, 该方法在文本相似度较低的Moderately Type-3和Weakly Type-3/Type-4类型克隆上显著优于主流方法, 包括NiCad、Deckard、CCAligner等, 同时在大型代码仓上需要更少的检测时间.  相似文献   

6.
基于克隆选择算法的面向程序路径测试数据生成方法   总被引:1,自引:1,他引:0  
面向程序路径的测试数据自动生成技术是软件测试自动化的关键技术之一.文中结合程序分支函数叠加法和克隆选择算法的全局搜索性,提出一种基于克隆选择算法的面向程序路径测试数据生成方法.希望能够借助克隆选择算法具有多样性、记忆性、可实现快速全局优化搜索的优点,设计一种新的面向程序路径的测试数据自动生成方法.对算法的原理和实现做了详细描述,并将其与传统的基于遗传算法、模拟退火算法来实现软件测试数据自动生成方法进行实验对比,证实了该方法能较快地生成指定路径的测试数据.  相似文献   

7.
针对单个版本克隆检测结果不足以体现克隆特征这一问题,从软件多版本中自动提取克隆谱系,获得克隆在软件演化过程中表现出的模式和特征。首先基于克隆代码Token表示及其所在文件名称、函数名称等位置属性,准确映射软件历时演化版本间的克隆代码,进而识别克隆演化模式;然后匹配克隆类ID号,合并所有相邻版本间的映射结果及演化模式信息,得到克隆谱系。同时开发了相应的克隆谱系自动提取工具FCG对6款开源软件进行了测试,发现当前版本中克隆代码平均生命周期占所研究版本总数的70%以上,且大部分没有发生变化,说明大部分克隆能被较好地维护,但也存在少量不稳定的克隆可能导致软件缺陷,需要修改或重构。实验结果表明FCG可高效提取克隆谱系,有助于更好地理解克隆及有针对性地管理克隆。  相似文献   

8.
基于免疫优势克隆网络聚类的入侵检测   总被引:1,自引:1,他引:0  
白琳 《计算机科学》2012,39(7):82-86,118
基于智能融合互补的观点,将免疫优势、倒位、克隆选择、非一致性变异和禁忌克隆等多种人工免疫系统算子引入网络结构聚类算法中,构造亲合度函数来指导聚类过程,得到一种能够自学习、自适应的进化网络来进行入侵检测数据的训练学习,通过该网络映射出大规模数据集的内在聚类结构,然后利用图论中的最小生成树对网络结构进行聚类分析,最终获得描述正常和异常行为的数据特征。在KDD CUP99数据集中进行了对比仿真实验,结果表明,该方法可高效地对大规模网络数据进行异常检测,以区分正常和攻击行为,并有效地检测出未知攻击。  相似文献   

9.
代码克隆检测在剽窃检测、版权侵犯调查、软件演化分析、代码压缩、错误检测,以及寻找bug,发现复用模式等方面有重要作用。现有的代码克隆检测工具算法复杂,或需要消耗大量的计算资源,不适用于规模巨大的代码数据。为了能够在大规模的数据上检测代码克隆,提出了一种新的代码克隆检测算法。该算法结合数据消重中的基于内容可变长度分块(content-defined chunking,CDC)思想和网页查重中的Simhash算法思想,采用了对代码先分块处理再模糊匹配的方法。在一个包含多种开源项目,超过5亿个代码文件,共约10 TB代码内容的数据源上,实现了该算法。通过实验,比较了不同分块长度对代码克隆检测率和所需要时间的影响,验证了新算法可以运用于大规模代码克隆检测,并且能够检测出一些级别3的克隆代码,达到了较高的准确率。  相似文献   

10.
一种适合于GPU计算的并行后缀数组构造算法   总被引:1,自引:0,他引:1  
后缀数组广泛应用于序列分析、字符串匹配和文本压缩,近年来,有关后缀数组构造和应用算法的不断探索构成了计算机科学中一个非常活跃的研究领域.在对现有串行算法进行了分析和对比之后,提出了一种新的、简洁的适合于GPU计算的并行后缀数组倍增构造算法,以排序方法替代传统的分组策略,不但能独立完成后缀数组的并行构造,还可与现存的串行倍增算法结合使用,以达到最高的执行效率.实验结果表明该算法在解决实际应用问题时,具有易于实现、执行速度快和可扩展性强等优点,尤其在处理小字符集的数据时效率更高.  相似文献   

11.
克隆代码技术研究综述   总被引:1,自引:1,他引:0  
软件系统中克隆代码的检测与管理是软件工程中的基本问题之一, 在软件的质量、维护、架构、进化、专利和剽窃等众多领域有着广泛的应用需求。综述了克隆检测的过程、技术及其优缺点、克隆进化方向上的相关研究, 以及克隆管理的一些技术, 并特别介绍了克隆重构技术。最后概括了该领域所取得的研究成果, 并讨论了目前克隆代码研究中所遇到的挑战性问题。  相似文献   

12.
软件克隆检测在软件维护、软件结构优化等方面具有重要价值和意义。综述了软件克隆的定义与分类,对软件克隆的检测过程进行了划分和讨论,介绍了软件克隆检测领域最为活跃的代码克隆检测技术和模型克隆检测技术。最后对软件克隆检测的研究现状和急需解决的问题进行了分析,展望了该领域未来的研究方向。  相似文献   

13.
为了尽可能求得多峰函数的最优解,提出了一种种群规模自适应调整的克隆算法。实现了种群规模根据进化过程自适应的变化,平衡了种群规模对算法效率的影响。此外,结合多峰函数优化的特点,为了增强算法搜索最优解的能力,采用Larmack学习策略作为局部搜索机制。实验结果表明,该算法求解效果较好。  相似文献   

14.
为了解决deCastro2002年提出的CLONALG算法在多峰值函数优化时多峰搜索能力弱、训练时间长的问题,本文提出了一种改进的克隆选择算法。该算法运用新的克隆选择操作、克隆变异操作和最佳抗体停止进化操作,并且引入了抗体抑制操作,不仅可以动态调整种群大小,具有较强的全局和局部搜索能力,而且搜索时间较短。与Castro的克隆选
择算法相比,本文算法在较短的时间内可以搜索到全局最优解和更多的局部最优解。  相似文献   

15.
SoPC是Altera公司近年来提出的一种灵活、高效的软硬件协同设计可编程片上系统。本文首先搭建硬件平台,在此平台上进行软件开发,运用改进免疫克隆选择算法解决函数优化问题。仿真结果表明,在SoPC上处理函数问题是可行的,并且算法具有优良的收敛速度及实时处理和抗退化能力。  相似文献   

16.
对于计算机专业实验室来说,建立Windows+Linux双操作系统的实验环境往往是必需的,这无疑会使专业实验室开放性和安全性的矛盾更加突出,使实验室维护工作变得更加繁重。因此,如何使双操作系统实验环境的安装和维护变得更简单,使双操作系统的实验环境变得更加稳定,将成为实验室工作人员今后努力的重点,本文结合实践对这个问题进行了探讨。  相似文献   

17.
克隆代码是指重复或类似的代码片段,这些重复代码来自于“复制粘贴修改”的编程方式,此类代码会严重影响软件的可维护性。研究者们从各种角度来探索克隆代码的存在、发展和变化规律,对克隆代码进行追踪并发现在其演化过程中表现的特征和模式,从而更好地研究和管理,而克隆映射是整个研究过程的核心步骤。介绍了克隆相关概念及术语,详细阐述了不同类型的映射方法并总结方法的优缺点,说明了克隆映射在克隆演化分析和克隆质量评估方面的应用,对克隆映射的发展趋势进行了总结和展望。  相似文献   

18.
陈桌  张丽萍  王春晖 《计算机应用》2016,36(12):3461-3467
针对现有克隆演化模式分类不清晰、克隆谱系提取工具少且效率低等问题,提出了根据克隆代码映射关系和演化信息自动构建克隆谱系的方法。首先通过词频向量计算、代码行距以及克隆属性相结合分阶段映射版本间克隆;然后根据映射结果为克隆群和克隆片段添加演化模式;最后串联所有版本中的克隆映射关系和演化模式构建克隆谱系。对4款开源软件进行实验并人工验证,实验结果表明克隆谱系提取工具——ECG的可行性和高效性。此外,从提取结果中发现,在演化过程中约42%的克隆代码未发生变化,发生不一致变化的克隆代码约占3.48%,此类克隆可能会引入潜在bug需要被重点关注。该方法将为克隆代码质量评估和管理提供参考和支持。  相似文献   

19.
折蓉蓉  张丽萍  侯敏  闫盛 《计算机应用》2018,38(7):2037-2043
针对克隆代码的大量使用会导致长期软件维护问题甚至引入错误,提出了一种基于决策树的分类器来推荐克隆进行重构。首先,使用NiCad进行克隆检测;其次,收集了与克隆关系、克隆代码段和克隆上下文都相关的特征;然后,利用决策树分类器训练;最后,利用K折交叉评估分类结果。在5款开源软件中对近600多个克隆实例进行实验,实验结果表明所提方法为每个目标系统推荐克隆重构实例时达到80%的精度。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号