[发明专利]一种计算机软件源代码相似度检测方法在审
| 申请号: | 201510794525.1 | 申请日: | 2015-11-18 |
| 公开(公告)号: | CN105426711A | 公开(公告)日: | 2016-03-23 |
| 发明(设计)人: | 嵩天;田星;李凤霞;刘政祎 | 申请(专利权)人: | 北京理工大学 |
| 主分类号: | G06F21/16 | 分类号: | G06F21/16 |
| 代理公司: | 北京理工正阳知识产权代理事务所(普通合伙) 11639 | 代理人: | 唐华 |
| 地址: | 100081 北京市*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 计算机软件 源代码 相似 检测 方法 | ||
本发明涉及一种计算机软件源代码相似度检测方法,属于计算机应用技术领域,该方法包括如下步骤:首先依据编程语言不同,对源代码进行分词操作,然后选择特定标注词对分词结果进行分块处理,依据变量属性对变量分词进行相关处理;而后基于分块结果对各块进行差异测算操作,得到差异矩阵,依据各块差异结果及相关性,得到整体差异;进而根据公式最终得到代码相似度检测结果。对比现有技术,本发明方法能够比较成功的识别代码相似度检测中遇到的逐字拷贝、更改注释语句空白区域、重命名标识符、更改数据类型等手段,能够成功检测改变代码块顺序、改变语句顺序、增加冗余语句和变量以及用等价的控制结构替换原有控制结构等手段。
技术领域:
本发明涉及一种计算机程序分析技术和计算机软件的代码相似度检测算法,特别涉及一种基于源代码分词分块提取处理及多种差异测量方法可扩展的代码相似度检测算法,属于计算机应用技术领域。
背景技术
代码相似度检测技术目前最主要应用于代码的剽窃检测上,是计算机软件开发和维护活动中一项重要任务,在源代码剽窃检测、软件组件库查询、软件缺陷检测、程序理解等多个领域中有广泛应用。其不仅可以帮助教师检测学生的程序作业抄袭情况,同时对软件版权的鉴定也具有好的现实意义。
在发表于第六届北美大学计算科学协会年会论文集“抄袭检测度量元”(Metricsbased plagiarism monitoring.Paper presented at the 6th Annual CCSCNortheastern Conference,Middlebury VT.2001)一文中,琼斯(Jones)总结了十种剽窃手段。分别为(1)逐字拷贝(2)更改注释语句(3)更改空白区域(4)重新命名标识符(5)改变代码块的顺序(6)改变代码块中语句的顺序(7)改变表达式中操作符和操作数的顺序(8)更改数据类型(9)增加冗余的语句和变量(10)用等价的控制结构替换原有控制结构。
从国内外的研究现状可以发现,国内在对程序相似度判别研究相对较少,大部分集中在对中文分词和语义的研究上。可以参考的工具有:北航高级程序课程教学辅助平台中用于检测学生提交程序作业是否抄袭的BUAASIM系统等。
国外目前已有许多软件工具可用来检测源程序是否抄袭,如美国斯坦福大学的MOSS系统、威奇塔州立大学的SIM系统、伊利诺伊大学的GPLAG系统、德国Karlsruhe大学的JPlag系统和澳大利亚悉尼大学的YAP3系统。目前最主要的代码相似度检测技术主要分为两大类,属性计数技术及结构度量技术,包含如下几种具体的方法:Textual comparison,Token comparison,Metric comparison,Comparison of abstract syntax trees(AST,抽象语法树),Comparison of program dependency graphs(PDG,程序依赖图)及其他相关方法。
而在实际使用及研究中发现,目前主要流行的上述几种方法各自存在其不同的缺陷。两种token-based的方法和text-based的方法效果一般且相差不大。AST-based的方法效果表现很好,但算法流程复杂,难于实现且执行时间长,且对于不同语言的匹配实现算法改动较大,PDG-based的方法表现性能不佳。另有文章指出,上述五种方法均拒绝了大量真正的相似代码,且其对于注入代码等某些特殊情况检测率低。
综上,目前主流的代码相似度检测方法普遍存在检测效果低、部分方法复杂执行时间长、某些情况错误率高以及难于应用在不同编程语言上等问题。
发明内容
本发明的目的是为解决在检测代码相似度过程中遇到的检测效果低、部分方法复杂执行时间长、某些情况错误率高以及难于应用在不同编程语言上等问题,提出了一种计算机软件源代码相似度检测方法,该方法基于源代码分词处理和分块分析比较差异获得代码相似度检测结果。应用该方法,可以在低内存短执行时间的前提下,显著提升代码相似度检测结果准确度,并大幅度降低代码检测最短代码长度限制。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510794525.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:应用加密方法和装置
- 下一篇:一种基于空域排序的矢量地理数据精确认证方法





