[发明专利]云环境下基于Java字节码的多粒度代码克隆检测方法有效
申请号: | 201710156441.4 | 申请日: | 2017-03-16 |
公开(公告)号: | CN106919403B | 公开(公告)日: | 2019-12-13 |
发明(设计)人: | 俞东进;陈耀旺 | 申请(专利权)人: | 杭州鹿径科技有限公司 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 33272 杭州奥创知识产权代理有限公司 | 代理人: | 王佳健 |
地址: | 310051 浙江省杭州市滨江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 环境 基于 java 字节 粒度 代码 克隆 检测 方法 | ||
本发明公开了一种云环境下基于Java字节码的多粒度代码克隆检测方法。本发明通过对Java字节码指令进行分析来提取块粒度的代码,从而能够同时检测方法粒度的克隆与块粒度的克隆。在计算代码相似度时,不仅考虑指令之间的相似性同时还引入了方法调用之间的相似性,从而能够更好地检测出语义克隆。与传统的基于Java字节码的代码克隆检测方法相比,本发明能够同时检测方法粒度与块粒度的代码克隆,并且由于加入了方法调用的相似性比较,本发明的克隆检测结果更加准确。
技术领域
本发明属于软件分析中的代码克隆检测技术领域,具体涉及到云环境下一种基于Java字节码的多粒度代码克隆检测方法。
背景技术
云计算的出现为传统软件开发提供了一种新型的协同工作模式。在这种模式下,不同的软件团队和个人分布在不同地方,为共同开发同一个软件系统作出贡献。基于云环境的协同开发模式在给软件开发人员带来便利的同时也给软件的管理带来了一定的困难,特别地由于地域和团队的不同,对开发人员通过复制-粘贴或者添加少量修改来复用代码的行为缺乏有效的监管。这些重复代码(或称之为代码克隆)会严重影响软件的维护工作。通过对软件源码中的代码克隆进行检测,可以发现不必要的重复代码,从而为后续的代码重构提供支持。
现有的代码克隆检测技术主要有基于文本(Text)、基于Token、基于抽象语法树(AST)、基于程序依赖图(PDG)和基于度量值几类。基于Text的方法不需要对源代码进行转换,其准确率较高但是召回率底;基于Token的方法检测速度较快并且不依赖于开发语言,但是却很难检测Type-3类代码克隆;基于AST和基于PDG的方法需要把源代码转换成AST或者PDG然后再进行相应的比较,这两种方法所花费的代价都比较大;由于不同的代码段对应的度量值可能会相同,所以基于度量值的方法误报率较高。
发明内容
本发明针对现有技术的不足,提供了一种云环境下基于Java字节码的多粒度代码克隆检测方法。
本发明方法的具体步骤是:
步骤(1)获取云环境下分布于不同地点的Java源代码,编译得到它们的字节码文件即.class文件,并通过javap命令将.class文件转换为txt格式文件;每个txt格式文件包含一个或多个Java方法,每个方法都由一系列字节码指令以及相关的方法调用构成;
步骤(2)提取步骤(1)中所得到的txt格式文件中的方法与代码块,其中,通过直接读取每个方法所对应的字节码指令提取方法;代码块的提取则需要对一些控制转移指令进行分析,如goto、switch、以及if相关的字节码指令;
步骤(3)根据Java字节码指令的分类构建字节码指令的分类层次架构并进行编码,该架构主要分为三层:第一层是Java字节码指令中除Type之外的其余九个大类,第二层是对每个大类进行的详细子类划分,第三层则是对应的字节码指令;
步骤(4)对步骤(2)所提取出的两种粒度(方法粒度、代码块粒度)的代码段(方法或代码块)进行特征提取,主要提取的特征包括指令序列IS=(I1,I2,I3,...,Ii,...,Ik)与方法调用序列MCS={M1,M2,M3,...Mi,...,Mr},其中k、r为自然数。
在特征提取之后使用字节码指令的分类层次架构对指令序列进行归一化处理,将指令序列转化为一级指令序列与二级指令序列,其中一级指令序列对应分类层次架构中的第一层Java字节码指令大类,二级指令序列对应分类层次架构中的第二层Java字节码指令子类;
步骤(5)对于两个代码段(方法或代码块),利用步骤(4)中得到的指令序列与方法调用序列,分别进行Type-1、Type-2克隆检测与Type-3克隆检测。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州鹿径科技有限公司,未经杭州鹿径科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710156441.4/2.html,转载请声明来源钻瓜专利网。