[发明专利]基于LLVM的克隆代码检测方法有效
申请号: | 201711274665.1 | 申请日: | 2017-12-06 |
公开(公告)号: | CN107943516B | 公开(公告)日: | 2020-11-13 |
发明(设计)人: | 张迎周;陈星昊;王星;尹秀;赵莲 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F11/36 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张芳 |
地址: | 210046 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 llvm 克隆 代码 检测 方法 | ||
本发明提供了一种基于LLVM的克隆代码检测方法,包括预处理步骤,合并映射步骤,提取分片步骤,匹配步骤,汇总步骤。首先对源代码预处理步骤,对源程序通过的前端转换成中间语言,然后对装换后的程序进行程序切片操作,获得中间语句之间的依赖关系,这一操作的获取LLVM IR语言的依赖图。然后对取得的数据进一步处理,获取更加精简的语句关系集。然后使用分割方法将语句集分割,在以分布式对比方法获取克隆代码。本发明中通过切边结果来获得关系集样本,并且保留了语句的特征。本发明将提高代码检测的匹配精度,利用LLVM IR中间语言带来的额外特征性,结合多种匹配方式丰富了匹配方法,实现了更加好的克隆代码检测。
技术领域
本发明涉及软件分析技术领域,具体涉及一种基于LLVM的克隆代码检测方法。
背景技术
随着软件的快速发展,各式各样的软件使用者已经成为一个庞大的群体,软件也正在渗透于人们生活的方方面面。如今,许多的开发者将软件源码公布在开放的互联网上,其他的开发者普遍可以参考与学习相关的开源代码,而这种现象的已经成为当今普遍的生产方式。
克隆代码在提高生产效率的同时,也带来了巨大的安全隐患。在许多的工程中都需要代码克隆检测,如:在版本更新方面,两个版本之间可以通过克隆代码检测的来进行对比,代码克隆检测可让开发者更好的了解代码的更替,大大的提高了代码修改的效率;在测试代码方面,为了提高代码质量,就必须减少的克隆代码;在抄袭检测方面,对比的目标代码与源码或者相似代码段的相似度;在代码复用的出错的情况下的,也可以快速的定位错误位置。此外还有代码压缩、病毒检测、报错检查等需求。随着项目的扩大,程序构成也越来越复杂,寻找克隆代码的任务越来越重要。不论是代码侵权取证,还是复用代码定位等都起到了关键的作用。因此有必要进一步的研究。
发明内容
本发明的目的是提供一种基于LLVM的克隆代码检测方法,采用的语句关系图进行分片处理,使得匹配效率得以提高,从而达到提高的匹配精度与效率的目的。
本发明基于LLVM的克隆代码检测方法,其特征在于,包括以下步骤:
步骤1,源代码预处理:将源代码转换成中间代码;获取中间代码程序依赖关系,计算出中间代码的SDG图;
步骤2,合并映射:合并来自同一源语句的多个节点并对节点进行模糊化处理,形成该语句的特征并保留依赖关系;从LLVM的依赖关系中把节点映射到源语句行号;查找每个节点的出方向,使每一条边映射为(行号1,行号2)的形式;
步骤3,提取分片:从关系集中选取一个节点,提取其前节点和后节点;提取出当前节点与其前、后节点构成的结构子图分片;发送所述分片到匹配程序作为输入参数;
步骤4,匹配:根据每个分片起始点选取待匹配的代码切入位置,利用节点内容的对比来鉴别是否为克隆节点,匹配时主要依据当前节点的前后节点与当前节点的自带特征;如果确定节点内容相同,则匹配到的节点与其前后节点加入候选序列,否则根据相似度大小,从高到低加入候选序列,直到找到所有满足相似度阈值的结果并发送候选序列到汇总程序作为输入参数;
步骤5,汇总结果:首先每个节点都接收到候选序列,如果两个相邻的节点,在前节点的候选序列中后节点包含后节点的候选序列中匹配到的节点,后节点的候选序列中包含前节点的候选序列中匹配到的节点,则认为这两个节点之间存在关系,即作为连续的克隆代码,否则不作为连续的克隆代码;递归查找所有连接的边获得最大的关联图;
步骤6,选用没有作为起始的边循环步骤5,直到所有边都进行了判断。
所述中间代码为LLVM IR中间语言。
步骤2的具体过程为:
步骤2.1、选择合并节点
选择源语句特征相同的一个或者几个语句,准备进行合并,源语句的特征是其行号;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711274665.1/2.html,转载请声明来源钻瓜专利网。