首页 | 官方网站   微博 | 高级检索  
相似文献
 共查询到16条相似文献,搜索用时 109 毫秒
1.
为了提高检测效率,提出了一种新的函数克隆检测方法。该方法对传统后缀数组进行了改进,优化了基于后缀数组的算法。利用该算法可高效查找重复函数子串,进而检测出Type-1和Type-2类型的函数克隆。同时开发出相应的函数克隆检测工具FCD以实现该方法,并检测了24款C语言的开源软件。实验结果的分析验证了FCD能高效检测软件中的函数克隆。  相似文献   

2.
近似字符串匹配是模式匹配研究领域中的一个重要研究方向。压缩后缀数组是字符串匹配、数据压缩等领域广泛使用的索引结构,具有检索速度快和适用广泛的优点。利用压缩后缀数组,提出了适合近似字符串匹配搜索算法的数据结构,并在此基础上提出了一种匹配搜索算法。实验结果表明,相对于现有的算法,提出的算法在小字母表的情况下具有计算优势。  相似文献   

3.
基于压缩后缀数组技术的搜索引擎   总被引:1,自引:0,他引:1       下载免费PDF全文
目前,搜索引擎的核心模块(索引器)均采用倒排文件结构,对短语查询的准确率较低。该文引入后缀数组技术进行全文索引,为克服全文索引时占用空间大的缺点,研究了压缩后缀数组技术,把后缀数组索引的大小压缩到了O(n)位,并给出应用压缩后缀数组索引的步骤和核心操作伪代码。对比实验表明,基于压缩后缀数组的索引比传统倒排文件索引的短语查准率提高了近20%。  相似文献   

4.
搜索引擎(Search Eng ine)技术是在网络数据成指数级增加的情况下出现的新技术。然而现在的搜索引擎在检索时都采用的是倒排文件,从后缀数据技术出发探讨了压缩后缀数组(Com pressed Su ffix A rray)技术在搜索引擎技术中的应用,从而大大提高了搜索引擎的性能。  相似文献   

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

6.
中文分词技术是机器翻译、分类、搜索引擎以及信息检索的基础,但是,互联网上不断出现的新词严重影响了分词的性能,为了提高新词的识别率,建立待分词内容的后缀数组,然后计算其公共前缀共同出现的次数,采用阈值对其进行过滤筛选出候选词语,实验结果表明,该方法在新词识别方面有一定的优势。  相似文献   

7.
后缀数组构建算法的时间和空间开销是它在实际应用中的瓶颈。该文介绍了两种较好的构建算法,对它们的性能作了评估和分析,指出了各自的适用范围,给出并比较了两种算法在不同情况下的实验结果。  相似文献   

8.
克隆代码是指在软件源程序中存在的相同或相似的代码片段。克隆代码在很多软件工程中,例如程序理解,代码质量分析,剽窃检测,漏洞查找和病毒检测,都需要通过找出语义或语法上相似的代码片段来实现,目前常用的检测方法有四种:基于文本(text—based)检测,基于字符序列(token-based)的检测,基于语法树(tree-based)的检测和基于关系图(PDG—based)的检测。基于字符序列的克隆检测首先对源程序进行预处理转换,再经过匹配算法得到克隆检测结果:克隆代码的检测是软件分析的一个重要的部分。  相似文献   

9.
克隆代码是指在软件源程序中存在的相同或相似的代码片段。克隆代码在很多软件工程中,例如程序理解,代码质量分析,剽窃检测,漏洞查找和病毒检测,都需要通过找出语义或语法上相似的代码片段来实现。目前常用的检测方法有四种:基于文本(text-based)的检测,基于字符序列(token-based)的检测,基于语法树(tree-based)的检测和基于关系图(PDG-based)的检测。基于字符序列的克隆检测首先对源程序进行预处理转换,再经过匹配算法得到克隆检测结果。克隆代码的检测是软件分析的一个重要的部分。  相似文献   

10.
文中改进了基于后缀数组的无词典分词算法.原算法通过对输入字符集建立后缀数组并按字典序进行排列来筛选汉字结合模式形成候选词集,并通过置信度的比较来筛选候选词集以获得分词集.文中改进了其计算候选词出现频率的方法并且大大减少了筛选候选词集时两两判断候选词是否具有父子关系的次数.试验表明,改进的算法能够在没有词典的情况下更快速构建候选词集和筛选候选词集.适用于对词条频度敏感,对计算速度要求较高的中文信息处理.  相似文献   

11.
性能bug是指代码中降低程序运行效率的缺陷.现有的检测工具只能查找特定类型的性能bug并且需要复杂的程序分析过程,因而缺乏通用性并且时空开销巨大.同时,有许多经典的克隆检测技术被用于一般性相似代码检测,但是它们只能检测高度相似的代码或者需要依赖训练集,使得它们难以用于在真实数据集中查找性能bug.基于此,通过构建带有标记token的代码模板,本文提出一种使用克隆检测技术来查找多种类型的性能bug的方法.通过对不同类型和频度的token标记不同的权重,本文提出的方法可以区分其重要性并因此提取出代码中的关键信息.在真实项目构成的数据集上的实验表明,本方法可以发现更多类型的性能bug同时比现有工具耗时更少.另一项实验也证明了本方法显著提升了基于token的克隆检测技术的检测能力,相比于现有的克隆检测方法更适合用于性能bug查找.  相似文献   

12.
陈秋远  李善平  鄢萌  夏鑫 《软件学报》2019,30(4):962-980
代码克隆(code clone),是指存在于代码库中两个及以上相同或者相似的源代码片段.代码克隆相关问题是软件工程领域研究的重要课题.代码克隆是软件开发中的常见现象,它能够提高效率,产生一定的正面效益.但是研究表明,代码克隆也会对软件系统的开发、维护产生负面的影响,包括降低软件稳定性,造成代码库冗余和软件缺陷传播等.代码克隆检测技术旨在寻找检测代码克隆的自动化方法,从而用较低成本减少代码克隆的负面效应.研究者们在代码克隆检测方面获得了一系列的检测技术成果,根据这些技术利用源代码信息的程度不同,可以将它们分为基于文本、词汇、语法、语义4个层次.现有的检测技术针对文本相似的克隆取得了有效的检测结果,但同时也面临着更高抽象层次克隆的挑战,亟待更先进的理论、技术来解决.着重从源代码表征方式角度入手,对近年来代码克隆检测研究进展进行了梳理和总结.主要内容包括:(1)根据源代码表征方式阐述并归类了现有的克隆检测方法;(2)总结了模型评估中使用的实验验证方法与性能评估指标;(3)从科学性、实用性和技术难点这3个方面归纳总结了代码克隆研究的关键问题,围绕数据标注、表征方法、模型构建和工程实践4个方面,阐述了问题的可能解决思路和研究的未来发展趋势.  相似文献   

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

14.
代码克隆是指软件程序中一组相同或相近的代码片段,它广泛存在于软件中,因此如何发现代码克隆成为软件维护的一个重要问题。目前已有的克隆检测工具大多针对单一版本进行完整的克隆检测,然而对于大规模、复杂软件系统而言,在软件演化过程中随着代码的改变,不断重新检测代码克隆将花费较高的代价。针对这一问题,提出了一种基于分组的增量克隆检测方法。该方法根据前后两个版本的差异将源代码分为发生变化和未发生变化的两组,通过组内和组间的克隆分析实现增量的克隆检测。基于所提出的方法,在克隆检测工具CCFinderX的基础上实现了一个名为ICDBG(incremental clone detector based on grouping)的原型工具。实验证明,在变更较小时,该方法能够在保证正确性的同时显著减少克隆检测时间。  相似文献   

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

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

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

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

京公网安备 11010802026262号