一种并行化源代码克隆检测方法技术

技术编号:42383923 阅读:34 留言:0更新日期:2024-08-16 16:12
本发明专利技术公开了一种并行化源代码克隆检测方法,该方法首先检查入口参数是否符合规范,若符合规范则继续加载配置数据,并进行下一步;若不符合规范则给出参数提示信息。其次根据传入参数,程序加载文件列表,过滤提取待分析的源代码文件,根据预设的克隆代码检测粒度,将源代码拆分成待检测的代码块,并对代码块进行排序。然后根据配置文件中的比较类型,选择比较器进行初始化。最后利用比较器,对排序后的代码块列表中所有待比对代码块进行两两比对,计算相似度,相似度大于配置阈值的即为克隆代码对。本发明专利技术可实现并行化运算,极大的提升克隆代码的检测效率,并实现了表达式穿插式克隆代码的检测。

【技术实现步骤摘要】

本专利技术属于软件工程领域,具体涉及一种面向源代码相似性的并行化高效代码克隆检测方法。


技术介绍

1、软件开发过程中,开发人员会参考已有的解决方案来涉及和实现新的业务功能,包括直接复制粘贴已有的源代码,根据标准的api调用流程来编写源代码,这些开发习惯会导致代码仓库中存在一定量相同或者相似的源代码,这类代码被称为克隆代码。克隆代码的存在给软件的开发和维护造成了一定程度的负面影响,因此需要对此类代码进行监控和管理。

2、克隆代码主要分为四类,第一类为完全相同的代码(去除注释和空白行),第二类为标识符不同的代码,第三类为表达式存在增删情况的源代码对,第四类为文本不相似但是功能相同的源代码。当前,检测工具通常将前三类划分到一起进行检测,将第四类作为单独进行检测。

3、国内外研究人员针对前三类克隆代码的检测提出了许多有价值的解决方案。然而,当前方法存在检测效率不高的问题,导致这些算法面对海量代码库克隆检测时的性能不佳。另外,第三类克隆代码中存在很多相似表达式穿插形成的大粒度克隆代码,当前的方法并不能有效识别此类代码。这些因素都限制了克隆代码本文档来自技高网...

【技术保护点】

1.一种并行化源代码克隆检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种并行化源代码克隆检测方法,其特征在于,所述入口参数包括:最小方法行数min-line,小于这个值的方法不参与检测;最大方法行数max-line,大于这个值的方法不参与检测;代码相似性比较器类型compare-type,1代表用字符串比较,2代表用token串比较,3代表用Simhash方式比较;比较范围系数line-gap-dis,当两个方法的行数查百分比大于该值时,不参与检测;相似度阈值similarity,大于该值被检测为克隆代码;检测语言language;源文件后缀extensio...

【技术特征摘要】

1.一种并行化源代码克隆检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种并行化源代码克隆检测方法,其特征在于,所述入口参数包括:最小方法行数min-line,小于这个值的方法不参与检测;最大方法行数max-line,大于这个值的方法不参与检测;代码相似性比较器类型compare-type,1代表用字符串比较,2代表用token串比较,3代表用simhash方式比较;比较范围系数line-gap-dis,当两个方法的行数查百分比大于该值时,不参与检测;相似度阈值similarity,大于该值被检测为克隆代码;检测语言language;源文件后缀extensions,用逗号分割,后缀与配置相同的源文件将被解析并参与克隆检测。

3.根据权利要求1所述的一种并行化源代码克隆检测方法,其特征在于,所述程序加载文件列表具体为:如果传入的参数是一个目录,则递归地列出目录中的所有文件;如果传入的参数是一个文件,程序读取文件中的路径列表。

4.根据权利要求1所述...

【专利技术属性】
技术研发人员:胡彬俞东进孙笑笑胡天逸
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1