首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 65 毫秒
1.
软件系统中代码克隆的检测技术   总被引:2,自引:0,他引:2  
大型的软件系统常常有很多重复的克隆代码,给软件维护增加了很大的困难.如何利用工具检测这些重复代码是软件工程领域中一个重要的研究课题.本文首先引入了代码克隆的概念和定义,然后深入探讨自动检测克隆代码所面临的难点,并在此基础上详细阐述了利用后缀树检测代码克隆的一般方法.  相似文献   

2.
3.
李玫  高庆  马森  张世琨  胡文蕙  张兴明 《软件学报》2021,32(7):2242-2259
代码相似性检测(code similarity detection)是软件工程领域的基本任务之一,其在剽窃检测、许可证违反检测、软件复用分析以及漏洞发现等方向均起着重要作用.随着软件开源化的普及以及开源代码量的高速增长,开源代码在各个领域的应用日益频繁,给传统的代码相似性检测方法带来了新的挑战.现有的一些基于词法、语法...  相似文献   

4.
为了提高源程序代码之间相似性的检测效率,提出一种基于序列聚类的相似代码检测算法.算法首先把源代码按照其自身的结构进行分段提取,然后对各个分段进行部分代码变换,再以带权重的编辑距离为相似度量标准对这些符号进行序列聚类,得到相似的程序代码片段,以达到对源程序进行相似功能检测的目的.使用多个真实和仿真程序对上述算法进行了实验,实验结果验证了算法的有效性和可伸缩性.  相似文献   

5.
在程序设计类课程的教学过程中,对学生代码的分析和检测能够有效反映学生的课堂学习行为和知识点掌握情况。学生书写速度的不同会导致相同周期内程序代码长度不一致,对从时间维度提取代码文件的特征会有一定的影响。本文提出了一种用于检测代码相似度的改进型SimHash算法。首先,将学生代码以时间序列进行收集,统计代码的有效行数和字符数量,并结合整个课堂讲授周期数据计算代码有效性权重;其次,对学生代码进行动态时间规整,使学生代码在相同的周期内长度一致;随后,提取代码文件的SimHash特征,根据代码有效性权重对特征进行加权处理并降维,得到改进型SimHash特征;最后,根据代码文件的改进型SimHash特征,计算代码相似度。实验表明,本文提出的算法能够有效计算代码的相似度。  相似文献   

6.
目前在软件代码缺陷审查以及缺陷预测中,研究人员对源代码进行分析研究却忽略了代码的缺陷信息.本文通过对缺陷信息进行分析,发现缺陷信息对于相似缺陷的检测有着重要的参考价值.基于这一思想,本文分析软件缺陷社区Stack Over-flow中关于缺陷代码的信息,提出一种基于缺陷代码特征分析的相似缺陷检测方法.该方法首先对缺陷报...  相似文献   

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

8.
如果软件源程序中的一个代码段和同一程序中的另一个代码段在结构或语义上类似,这些代码段就成了代码克隆.概述代码克隆存在的各种形式,分析代码克隆产生的原因,并在概括了代码克隆检测的一般过程以后进一步阐述两类代码克隆检测方法:基于语义抽象树的检测方法和基于Token序列的检测方法.  相似文献   

9.
近年来,随着不同编程语言代码自动转换工具的出现,跨语言的代码抄袭检测问题受到了越来越多的关注.现有跨语言代码抄袭检测主要包括传统的基于中间特征的检测方法和近年来出现的基于机器学习的检测方法,后者在检测模型训练完成之后具有更好的检测速度,是当前跨语言代码抄袭检测的研究热点.然而,现有的基于机器学习的跨语言抄袭检测方法大多将代码作为文本来处理,未考虑代码的结构特征.结合代码基于抽象语法树的结构特征,本文提出了一个基于伪孪生神经网络框架的跨语言抄袭检测工具CLPDetector.该工具将训练数据中的源代码对转换成对应的抽象语法树,基于抽象语法树生成代码的向量表示,然后将结合BiLSTM、CNN和Attention的深度神经网络嵌入到伪孪生网络架构中训练抄袭检测模型,从而实现了跨语言代码抄袭的检测.为了提高检测精度,首先,在训练检测模型前,利用基于抽象语法树的skip-gram算法对词向量进行了预训练,并基于程序依赖图删除了训练数据集代码中的冗余代码.其次,在代码抄袭检测阶段,提出了一个基于属性计数的过滤器,用以排除不可能抄袭的代码对,提高检测效率.实验中基于一个开源的数据集,以Java代码和...  相似文献   

10.
基于XML的C代码抄袭检测算法   总被引:3,自引:0,他引:3       下载免费PDF全文
主要研究一种基于XML文本的C代码抄袭检测算法。将C程序源代码转化为XML文本,提取XML文本各行标记的属性,计算XML文本行的相似值,得到程序对的相似度。并对抄袭检测算法实行分类测试:按十二种抄袭手段分类;按复杂语义和复杂数据结构分类。测试结果对比验证了抄袭检测算法的有效性。  相似文献   

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

12.
介绍了克隆代码检测的研究意义与发展历程,给出了本领域相关的概念框架,阐述了几种成熟的克隆代码检测方法,并总结了各种检测方法的优缺点,同时探讨了关于克隆代码检测方法的相关研究,总结了研究过程中存在的问题,并展望了本领域的发展趋势.  相似文献   

13.
虽然目前垃圾邮件过滤或检测的研究比较多,但是它们大多数是基于邮件客户端。文章提出了一种基于后缀树的骨干网络垃圾邮件检测方法,它采用后缀树文本表示方法,通过不定长统计方法判定邮件是否相似,然后利用邮件重复出现的次数判定是否为垃圾邮件。该方法不需要任何训练,直接对接收的邮件进行分类统计;对于长度为的邮件,算法的时间复杂度和空间复杂度均为;另外,该方法独立于任何语种。  相似文献   

14.
代码相似性检测在程序设计教学中的应用   总被引:1,自引:0,他引:1  
张莉  周祖林 《计算机教育》2009,(13):116-118,112
代码剽窃是程序设计课程中经常出现的一种作弊行为,检测剽窃的源代码、验证学生程序作业的原创性在教学中很重要。程序代码的相似度度量是剽窃检测的关键技术。本文首先对现有程序代码相似性检测技术进行研究,然后改进Halstead算法,提出了基于统计学方法程序代码相似性检测算法,最后对算法的有效性进行了实验分析。  相似文献   

15.
代码相似性检测技术:研究综述   总被引:2,自引:0,他引:2  
程序代码的相似性检测是使用一定的检测手段度量程序代码间的相似程度,其对于提升高等教育中计算机课程教学效果和保护软件知识产权都有着重要的意义.介绍了代码相似性检测技术的研究意义和发展历程,阐述了本领域研究过程中的概念模型,深入分析了已有的几类代码相似性检测技术,总结了这几类技术各自的特点,同时探讨了一些相关研究,最后归纳了目前研究中的问题并展望了本领域研究的发展趋势.  相似文献   

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

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

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

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

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