首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 437 毫秒
1.
许福  郝亮  陈飞翔  李冬梅  崔晓晖 《计算机工程》2020,46(1):222-228,242
开源代码复用是重要的软件开发模式,但开源许可证侵权与代码同步更新是当前开源代码复用中的2个主要问题。利用代码快照间的高度相似性特点,设计一种代码仓库的高效增量分析方法,在此基础上,利用Simhash算法将函数代码映射成函数指纹,提出以函数为基本分析单元的工程相似度计算方法,从而降低分析结果的存储空间并提高代码比对速度。设计3组实验分别从代码分析效率、工程相似度判定和函数更新检测方面进行评估,结果表明,该方法能满足开源代码复用中相似度检测和代码溯源的需求,且能够有效缩短总体分析时间。  相似文献   

2.
基于代码克隆检测技术进行软件脆弱性检测,是软件脆弱性静态分析中的一个重要方向.目前,已有软件脆弱性检测工具在面向大规模代码集的脆弱性检测方面存在不足,且缺乏针对操作系统脆弱性的优化.为此,基于代码克隆检测技术,提出了一种操作系统脆弱性检测方法.首先在一般的"代码表征—提取特征—特征比对"检测流程的基础上,加入了基于操作系统软件包类型和函数代码规模的预筛选机制,在进行代码表征之前排除大部分无关代码.其次选择函数基本信息、符号序列和控制流路径三个角度提取代码特征,逐级比较脆弱代码和待测代码的相似度.最后从公开脆弱性数据库获取脆弱样本,对典型开源操作系统进行了实验,结果显示预筛选能够有效缩减实验对象的代码规模,而检测结果的平均精确度达到了84%.  相似文献   

3.
马赛  董东 《计算机科学》2017,44(Z6):495-498
Large Class(上帝类)是面向对象设计中的一种设计瑕疵。为了弥补传统Large Class检测中使用面向代码结构度量的不足,提出基于潜在语义分析的平均概念相似性度量。根据源代码中提取的标识符和注释形成词-文档矩阵,在潜在语义空间下计算方法间的相似度,进而得到类的平均概念相似性;并将概念性度量与代码圈复杂度结合以对Large Class进行识别。在开源的Code Smell检测数据集Landfill上进行实验,结果表明,与传统上使用结构信息对Large Class进行检测相比,使用该方法时检测的准确率和召回率均得到了一定提升。  相似文献   

4.
王亚芳  刘东升  侯敏 《计算机应用》2019,39(7):2074-2080
目前在代码克隆检测领域,学者们主要从文本、词汇、语法和语义四种角度展开研究,然而长期以来代码克隆检测效果并未取得新的突破。针对这一问题,从图像处理角度提出了一种基于图像相似度的新型代码克隆检测(CCIS)方法。首先对源代码进行移除注释、空白符等操作,以获取"干净"的函数片段,并将函数中的标识符、关键字等进行高亮处理;然后将处理好的源代码转换为图像,并对图像进行规范化处理;最后使用Jaccard距离和感知哈希算法进行检测,得到代码克隆信息。为了验证实验的有效性,使用6款开源软件构建评价数据集进行测试。实验结果表明,CCIS方法能够检测出100%的类型一代码克隆、88%的类型二代码克隆与60%的类型三代码克隆,因此CCIS方法可以很好地进行代码克隆检测。  相似文献   

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

6.
由于具有低存储成本、高效检索、低标注成本等方面的优势,无监督的哈希技术已经引起了学术界越来越多的关注,并且已经广泛地应用到大规模数据库检索问题中.先前的无监督方法大部分依靠数据集本身的语义结构作为指导信息,要求在哈希空间中,数据的语义信息能够得到保持,从而完成哈希编码的学习.因此如何精确地表示语义结构以及哈希编码成为了无监督哈希方法成功的关键.本文提出一种新的基于自监督学习的策略进行无监督哈希编码学习.具体来讲,本文首先利用对比学习对在目标数据集上对网络进行学习,从而能够构建准确的语义相似性结构.接着,提出一个新的目标损失函数,期望在哈希空间中,数据的局部语义相似性结构能够得到保持,同时哈希编码的辨识力能够得到提升.本文提出的网络框架是端到端可训练的.最后,提出的算法在两个大规模图像检索数据集上进行了测试,大量的实验验证了本文提出的算法的有效性.  相似文献   

7.
代码相似度检测是代码抄袭检测的核心组成部分,对于营造良好的学习氛围、提高知识产权保护意识具有重要作用。总结了应用指纹技术检测代码相似度的基本思路,分析了几种常见的指纹选取方法的优缺点,提出一种改进的面向代码相似度检测的指纹选取方法。该方法能够从疑似抄袭代码集中去除由代码编写规则产生的虚假相似代码对,有效获得代码之间准确的相似度值。  相似文献   

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

9.
为在测试用例自动化生成中有效利用现有用例信息,降低测试用例生成成本,提高生成效率,提出一种基于代码相似性的测试用例重用及生成方法。设计基于文本和度量的被测代码相似性检测方法,分别从语法和语义上检测并划分相似类型;针对不同相似类型,采用更名重用和补充重用生成测试用例。将代码相似性应用于测试用例生成,综合考虑代码的语法、语义等多维相似信息,提升代码相似性检测的准确性,能更有效运用重用技术提升测试用例生成效率。实验结果表明,所提方法具有更高的重用召回率和重用精度,在相同时间成本下生成的测试用例覆盖率更高。  相似文献   

10.
杨萍  赵冰  舒辉 《计算机应用》2019,39(6):1728-1734
据统计,在大量的恶意代码中,有相当大的一部分属于诱骗型的恶意代码,它们通常使用与常用软件相似的图标来伪装自己,通过诱骗点击达到传播和攻击的目的。针对这类诱骗型的恶意代码,鉴于传统的基于代码和行为特征的恶意代码检测方法存在的效率低、代价高等问题,提出了一种新的恶意代码检测方法。首先,提取可移植的执行体(PE)文件图标资源信息并利用图像哈希算法进行图标相似性分析;然后,提取PE文件导入表信息并利用模糊哈希算法进行行为相似性分析;最后,采用聚类和局部敏感哈希的算法进行图标匹配,设计并实现了一个轻量级的恶意代码快速检测工具。实验结果表明,该工具对恶意代码具有很好的检测效果。  相似文献   

11.
传统的文件相似性检测技术是基于源代码的,针对源代码难以获取的情况,二进制文件比对技术被提出并受到越来越多的关注。总结和分析了四种二进制文件相似性检测技术和主流的检测工具。在提出了二进制文件克隆比对的评价方法的基础上进行了实验测试。该方法针对二进制文件克隆的分类方式,设计了实验流程和相似度的计算标准。结果表明对于连续克隆,不影响调用关系的分割克隆,不影响基本块数量和调用关系的等价替换克隆,采用二进制文件相似性检测比采用基于token的源代码文件相似性检测能得到更准确的检测结果。  相似文献   

12.
在软件开发的过程中,开发人员通过复制粘贴式的开发方式或者模块化的开发方式来完成需求是十分常见的,这两种开发方式可以提高开发效率,但同时会导致软件系统中出现大量的相同代码或者相似代码,大量的相似代码会给软件维护等方面带来很大的困难,这也是最常见的重构对象。源代码相似性度量是指利用一定的检测方法分析程序源代码间的相似程度。该技术被应用于代码抄袭检测、代码克隆检测、软件知识产权保护、代码复用等多个领域。为了提高代码相似性度量的准确性,提出了一种基于多特征值的源代码相似性检测技术。构建了源代码注释、型构、代码文本语句与结构中特征提取的方法,并给出了源代码相似度检测的度量模型。通过与权威的代码相似检测系统Moss进行对比实验,结果表明该方法可以更准确地检测出相似代码。  相似文献   

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

14.
源代码相似程度分析在软件工程和计算机教学等领域都有重要的应用.软件工程领域的源代码盗窃和著作权纠纷仲裁,计算机教学领域的学生作业作弊分析都需要源代码相似程度的分析.良好的源代码相似程序分析软件还可以应用于相似代码聚类和搜索引擎的源代码搜索领域.尽管源代码相似程度分析问题由来已久,但是这个问题并没有令人十分满意和惊喜的研究结果.源代码有其特殊结构,使用传统的纯文本相似度分析显然是不合适的.将首先介绍这个问题的研究历史和进展,简单分析这个问题的难点所在,继而介绍一个新的基于程序控制流图分析的源代码相似程度分析系统,并给出其算法和实现细节.文章最后将分析这个方法的优劣所在,讨论这个方法的进一步改进方向.  相似文献   

15.
Many techniques have been developed over the years to detect code clones in different software systems to maintain security measures. These techniques often require the source code to compare the subject system against a very large data set of big code. This paper presents index-based features extraction technique (IBFET) to detect code clones at a very large-scale level to billions of LOC at file level granularity. We performed preprocessing, indexing, and clone detection for more than 324 billion of LOC using a Hadoop distributed environment, which is quite faster and more efficient as compared to existing distributed indexing and clone detection techniques; meanwhile, it detects all three types of clones efficiently. The MapReduce rule of divide and conquer is used for a count and retrieve the similar features between different systems. We evaluated the execution time, scalability, precision, and recall of IBFET by using a well-known clone detection data set IJaDataset and BigCloneBench; furthermore, we compared the results with other state-of-the-art tools. Our approach is faster, flexible, scalable, and provides accurate results with high authenticity and can be implemented at a large-scale level.  相似文献   

16.
为满足Java静态分布式检测系统对Java程序源代码解耦分包的需求,解决代码检测单节点单进程运行耗时过长问题,实现分布式检测系统单任务多节点并行运行的目的,本文提出了Java源代码文件间依赖性分析方法.该方法以生成源代码文件抽象语法树的方式抽取文件文本信息,遍历分析抽象语法树,获取文件与其他源代码文件类依赖关系,再通过定位类所在的文件方式得到文件与文件之间依赖关系.同时,以无入边顶点的带环有向图表示文件间依赖关系图,本文提出的方法基于该图进行了文件间解耦的分析.最后,通过对示例程序逐步剖析的实验以及对数个开源工具源代码解耦拆分的实验,验证了本文提出的文件间依赖性分析方法的可行性.  相似文献   

17.
针对开源软件漏洞,提出一种基于深度聚类算法的软件源代码漏洞检测方法。该方法利用代码图模型构造开源软件代码属性图,遍历得到关键代码节点并提取出应用程序编程接口(API)序列,将其嵌入向量空间,以关键代码为中心进行聚类,根据聚类结果计算每个函数的异常值,生成检测报告并匹配漏洞库,从而检测出源代码中的漏洞。实验结果表明,该方法能够定位开源软件中漏洞所在的关键代码段并检测出相应漏洞。  相似文献   

18.
软件系统中的相似代码给软件维护带来很大困难,也是最易见的重构对象。如何有效地检测相似代码是软件工程领域的一个重要研究课题。本文介绍了常见的基于文本匹配的相似代码检测算法,尤其是检测源文件之间相似代码的动态文本匹配算法和源文件内部相似代码的后缀树算法,并将这两种算法结合起来,实现一个相似代码检测工具。该工具提供了时空代价平衡的相似代码检测能力,提供了精确有效的相似代码检测手段,帮助开发人员锁定相似代码,提高了重构活动的效率。本文介绍了该工具的架构和内部处理流程,并应用该工具搜索了若干实际应用系统的重复代码,检验了工具的可用性。还简单讨论了该工具和其他一些相似代码检测工具的优劣。  相似文献   

19.
One of the main trends in the modern anti-virus industry is the development of algorithms that help estimate the similarity of files. Since malware writers tend to use increasingly complex techniques to protect their code such as obfuscation and polymorphism, anti-virus software vendors face problems of the increasing difficulty of file scanning, the considerable growth of anti-virus databases, and file storages overgrowth. For solving such problems, a static analysis of files appears to be of some interest. Its use helps determine those file characteristics that are necessary for their comparison without executing malware samples within a protected environment. The solution provided in this article is based on the assumption that different samples of the same malicious program have a similar order of code and data areas. Each such file area may be characterized not only by its length, but also by its homogeneity. In other words, the file may be characterized by the complexity of its data order. Our approach consists of using wavelet analysis for the segmentation of files into segments of different entropy levels and using edit distance between sequence segments to determine the similarity of the files. The proposed solution has a number of advantages that help detect malicious programs efficiently on personal computers. First, this comparison does not take into account the functionality of analysed files and is based solely on determining the similarity in code and data area positions which makes the algorithm effective against many ways of protecting executable code. On the other hand, such a comparison may result in false alarms. Therefore, our solution is useful as a preliminary test that triggers the running of additional checks. Second, the method is relatively easy to implement and does not require code disassembly or emulation. And, third, the method makes the malicious file record compact which is significant when compiling anti-virus databases.  相似文献   

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

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