首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 218 毫秒
1.
基于程序依赖图(Program Dependency Graph,PDG)的代码克隆检测方法是检测代码克隆的重要方法之一,近年来提出的基于Weisfeiler-Lehman(WL)图核迭代的近似图匹配方法在克隆检测中取得了较好的效果,但PDG中少量顶点的差异会随着图核迭代传播到越来越多的顶点,从而导致算法召回率的下降。为此,针对WL图核在克隆检测应用中存在的问题,提出了一种基于改进WL图核的代码克隆检测方法,将WL图核迭代过程中采用的普通哈希算法替换为局部敏感哈希,同时引入向量的相似性度量方法,进一步提升了对PDG近似子结构的识别能力。实验结果表明,改进后的方法不仅可以检测出更多的差异克隆对,同时还保持了良好的精度和时间性能。  相似文献   

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

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

4.
基于程序依赖图的克隆检测及改进   总被引:1,自引:0,他引:1  
为了发现克隆代码并检测出其中的错误,研究了多种克隆代码检测技术,对于其中一种检测——基于程序依赖图(PDG)的克隆检测进行了详细介绍,并举例对该过程进行了分析.这样检测虽然相比其它检测技术对于断层克隆有着独特的优势,但是对于功能克隆却起不到理想效果.为了使克隆检测更加详尽及精确,以及能有效地检测功能克隆,对程序依赖图的形成过程进一步改进,在语法上对于语句进行断层,并对其进行相应规范.  相似文献   

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

6.
现有的自动化漏洞挖掘工具大多泛化能力较差,具有高误报率与漏报率。文章提出一种针对C类语言的多分类漏洞静态检测模型CSVDM。CSVDM运用代码相似性比对模块与通用漏洞分析框架模块从源码层面进行漏洞挖掘,代码相似性比对模块运用最长公共子序列(Longest Common Subsequence,LCS)算法与图神经网络对待检测源码与漏洞模板实施代码克隆与同源性检测,根据预设阈值生成漏洞相似度列表。通用漏洞分析框架模块对待检测源码进行上下文依赖的数据流与控制流分析,弥补了代码相似性比对模块在检测不是由代码克隆引起的漏洞时高假阴性的缺陷,生成漏洞分析列表。CSVDM综合漏洞相似度列表与漏洞分析列表,生成最终的漏洞检测报告。实验结果表明,CSVDM相较于Checkmarx等漏洞挖掘工具在评价指标方面有较大幅度提升。  相似文献   

7.
针对条件函数依赖(CFDs)对不一致数据检测不完备问题,提出基于最大依赖集(MDS)的依赖提升算法(DLA),通过获取依赖中包含的隐性依赖(RCFDs)对数据集中的不一致数据进行检测。利用动态值域调整,设置数值变化的前移和后移指针,改进原算法的枚举过程,提高了算法对连续属性的适用性,给出动态值域调整和依赖提升算法的算法流程和伪代码,并对算法的收敛性和时间复杂度进行分析。最后通过对照实验,对比了依赖提升算法和基于CFDs的检测方法的检测精度和时间代价,验证了算法的有效性。  相似文献   

8.
克隆代码会导致项目的维护困难,削弱项目的健壮性,并且克隆代码中所包含的bug会破坏整个项目。当前克隆代码检测技术或者拘泥于只能检测少数几种克隆代码,或者需要极高的检测时间。而且如果需要检测大量的源代码,一台机器的主存也许无法存储所有的信息。对克隆代码检测技术的并行运行进行了可能性研究,使用基于程序依赖图的克隆代码检测技术,这种技术不仅可以检测出语法上的克隆,也可以检测出语义上的克隆,提出了一个并行子图同构检测方法并使用MapReduce并行实现,实验结果极大地提高了该方法的运行速度。  相似文献   

9.
目前大多数的源码安全审计工具在整型错误的检测上具有局限性,往往只能检测整型溢出类型的漏洞。针对这个问题,对已有的系统依赖图(system dependence graph,SDG)检测模型进行了改进,结合类型限定理论提出了基于类型限定的系统依赖图(type-qualified SDG, QSDG)检测模型。该模型不仅可以用来检测C代码中潜在的绝大多数整型错误,而且还能根据其出错原因将其分类到所定义的八种错误类型。与SDG检测模型仅采用图同构算法进行检测相比,先使用类型推断算法再对QSDG进行检测可以降低检测所花费的时间。  相似文献   

10.
针对传统算法由于时间或空间复杂度过高而难以实现规模大且动态变化情况下标签图的Top-K子图查询问题,提出一种适用于大规模标签图的动态Top-K兴趣子图查询方法DISQtop-K。该方法建立了包括节点拓扑结构特性(NTF)索引和边特性(EF)索引的图拓扑结构特性(GTSF)索引,利用该索引可有效剪枝过滤不满足限制条件的无效节点及边;基于GTSF索引提出了多因素候选集过滤策略,通过对查询图候选集进一步剪枝以获得较少的候选集;考虑到图的动态变化可能对匹配结果产生影响,提出了Top-K兴趣子图匹配验证方法——DISQtop-K,将匹配验证过程分为初始匹配和动态修正两个阶段,以尽可能保证查询结果的实时、准确。大量实验结果表明,相比RAM、RWM算法,DISQtop-K方法的索引创建时间较短且占用空间较少,能有效处理大规模标签图中的动态Top-K兴趣子图查询。  相似文献   

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

12.
恶意程序是互联网时代一个非常具有威胁性的安全问题。恶意程序的出现和传播速度的加快,使得对恶意程序的检测变得更加困难。大多数防火墙和防病毒软件都是根据恶意特征、使用一系列特殊字节来识别恶意代码。然而,恶意程序编写者会使用代码混淆技术来躲避这种检测。为此,研究者提出了动态分析方法来检测这种新的恶意程序,但这种方法的时间效率和匹配精度并不令人满意。文中提出了一种有效的恶意行为图构建与匹配算法,包括存储二维关联图的存储方法、行为图的构建方法、行为关联规则的构建方法、行为图解析算法的设计、行为匹配算法等。最后给出了实验分析,证明了该方法具有较高的检测准确率;除Auto类外,其对其他类别恶意程序的识别率都在90%以上。  相似文献   

13.
针对克隆代码与非克隆代码产生"漏洞"倾向性的问题进行了研究,基于"漏洞"对不同类型克隆和非克隆代码进行了比较分析。首先提取软件系统中具有漏洞的代码,并使用克隆检测工具检测出软件的克隆代码;其次分别提取能够产生"漏洞"的克隆和非克隆代码,并分别计算不同克隆类型和非克隆的BOC漏洞密度和LOC漏洞密度;最后对type-1、pure type-2、pure-type3的克隆和非克隆漏洞密度进行了对比分析,并对代码中产生的"漏洞"类型进行分类分析,使用曼—惠特尼检验(WMM)验证了结果的有效性。实验结果表明type-1类型的克隆更容易产生"漏洞",pure type-3类型的克隆引入漏洞的几率相对较小。研究还得出在克隆和非克隆代码中分别存在出现频率较高的"漏洞"集合,增加了对克隆特性的理解,帮助软件设计和开发人员减少代码克隆对软件造成的负面影响。  相似文献   

14.
为解决传统人岗推荐系统存在的三个常见问题,即数据稀疏性、数据冷启动和数据利用率低,提出了基于知识图谱的人岗推荐系统构建方法。该方法通过改进传统推荐模型,将知识图谱作为辅助边信息融合到推荐系统中进行人岗推荐,有效解决了数据稀疏性和数据冷启动问题;引入知识图谱补全算法提高了数据利用率。提出的方法在人岗推荐上准确率可达92%,比现有人岗推荐方法准确率提高约1%。实验结果表明该方法是可行的,知识图谱的加入可以提升人岗推荐系统的推荐效果。  相似文献   

15.
代码克隆检测是软件工程领域的一项重要任务, 对于语义相似但语法差距较大的四型代码克隆的检测尤为困难. 基于深度学习的方法在四型代码克隆的检测上已经取得了较好的效果, 但是使用人工标注的代码克隆对进行监督学习的成本较高. 提出了两种简单有效的预训练策略来增强基于深度学习的代码克隆检测模型的代码表示, 以减少监督学习模型中...  相似文献   

16.
Code reuse through copying and pasting leads to so-called software clones. These clones can be roughly categorized into identical fragments (type-1 clones), fragments with parameter substitution (type-2 clones), and similar fragments that differ through modified, deleted, or added statements (type-3 clones). Although there has been extensive research on detecting clones, detection of type-3 clones is still an open research issue due to the inherent vagueness in their definition. In this paper, we analyze type-3 clones detected by state-of-the-art tools and investigate type-3 clones in terms of their syntactic differences. Then, we derive their underlying semantic abstractions from their syntactic differences. Finally, we investigate whether there are code characteristics that indicate that a tool-suggested clone candidate is a real type-3 clone from a human’s perspective. Our findings can help developers of clone detectors and clone refactoring tools to improve their tools.  相似文献   

17.
死锁是并行程序常见的缺陷之一,动态死锁分析方法根据程序运行轨迹构建锁图、分段图等模型来检测死锁.然而,锁图及其现有的各种变型无法区分同一循环中锁授权语句的多次执行,扩展锁图中记录的锁集无法捕捉线程曾经持有而又随后释放的锁信息,分段图无法刻画锁的获取和释放操作与线程启动操作耦合而导致的段间依赖关系.上述问题导致了多种死锁...  相似文献   

18.
针对已有克隆代码检测工具只输出克隆组形式的检测结果,而无法分析克隆代码对软件质量的影响问题,提出危害软件质量的关键克隆代码的识别方法。首先,定义了克隆代码的统一表示形式,使之可以分析各种克隆检测工具的检测结果;接下来,解析源程序和克隆检测结果,识别标识符命名不一致性潜在缺陷;然后,定义了克隆关联图,在此基础上检测跨越多个实现不同功能的文件、危害软件可维护性的克隆代码;最后,对检测结果进行可视化统计分析。本文的克隆代码分析工具被应用于分析开源代码httpd,检测出了1组标识符命名不一致的克隆代码和44组危害软件可维护性的关键克隆类,实验结果表明,本文方法可以有效辅助软件开发和维护人员分析、维护克隆代码。  相似文献   

19.
Android恶意软件的几何式增长驱动了Android恶意软件自动检测领域的发展。一些工作从可解释性的角度来分析Android恶意软件,通过分析模型获取最大影响的特征,为深度学习模型提供了一定的可解释性。这些方法基于特征相互独立的强假设,仅仅考虑特征各自对模型的影响,而在实际中特征之间总是存在着耦合,仅考虑单个特征对模型的影响,难以反映耦合作用,不能刻画不同类型软件中敏感API的组合模式。为解决该问题,将Android软件刻画成图,并结合图的结构信息和图节点内部的信息提出了一种基于图嵌入的方法来检测Android恶意软件。该方法通过注意力机制学习Android软件的低维稠密嵌入表示。实验结果表明,使用学到的嵌入表示进行恶意软件检测,不仅具有较高的分类精度,还可以通过分析注意力分数较大的路径寻找影响模型决策的模式以及定位恶意行为所涉及的敏感API序列。  相似文献   

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

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