[发明专利]Python源代码文件相似性检测方法有效
申请号: | 201510014906.3 | 申请日: | 2015-01-09 |
公开(公告)号: | CN104598231B | 公开(公告)日: | 2018-07-20 |
发明(设计)人: | 董付国;孙玲玲;原达;冯磊 | 申请(专利权)人: | 山东工商学院 |
主分类号: | G06F8/70 | 分类号: | G06F8/70 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 264005 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | python 源代码 文件 相似性 检测 方法 | ||
本发明提供了一种Python源代码文件相似性检测方法,涉及计算机技术领域,可以准确检测出相同或相似的源代码。所述方法包括:根据用户输入的不同的参数类型,采用不同的检测方法进行检测,在检测时,读取文件内容并进行预处理,删除多余的空格和换行符,然后根据指定的相似性标准对代码进行比对,在比对时忽略注释行,采用逐行迭加的方式消除代码布局不同的影响。
技术领域
本发明涉及计算机技术领域,尤其涉及一种Python源代码文件相似性检测方法。
背景技术
目前,由于互联网的快速发展和开源社区的普及,很多程序员已经很少自己独立完成编写代码的工作,更多的是从网上搜索并复制相关功能代码,然后将大量代码拼凑起来实现自己的功能,尤其对于非核心的外围代码更是如此。在软件编程过程中,源代码的复制和粘贴是非常频繁的操作,尤其是设计不够好的软件开发中或者水平较低的程序员编写代码的过程中,代码的低级复用较多,这种情况更为常见。借鉴优秀的代码固然能够缩短开发周期,提高开发效率,但不幸的是,很多程序员并不对复制来的代码进行安全性和功能性检查,只要实现功能满足当前的需求即可。这样会使得自己的软件产品中可能存在无用功能代码,这些无用功能可能会成为黑客攻击的突破口。更重要的是,原始代码被发现安全漏洞以后很难保证所有的使用者都能清楚地知道并对代码做出正确的修改。如果有一天某块代码被发现存在bug,而该代码块又被复制过很多次,那么就需要检查所有的相同代码进行正确的修改,如果有漏掉的代码块,则存在一个潜在的漏掉而使得整个软件不安全,即“木桶原则”。
发明内容
本发明实施例提供了一种Python源代码文件相似性检测方法,可以准确检测出相同或相似的源代码。
本发明实施例提供了一种Python源代码文件相似性检测方法,包括以下步骤:
一种Python源代码文件相似性检测方法,其特征在于,包括以下步骤:
S1、获取用户输入的参数类型;
S2、若判断出所述用户输入文件的参数类型为一个Python源文件,则应用算法A检测所述Python源文件内代码之间的相似性;
S3、若判断出所述用户输入文件的参数类型为一个包含Python源文件的文件夹,则应用算法B检测所述文件夹中所有Python源文件之间的相似性;
S4、若判断出所述用户输入文件的参数类型为一个目标Python源文件和一个包含Python源文件的目标文件夹,则应用算法C检测所述目标Python源文件与所述目标文件夹中所有Python源文件之间的相似性。
具体的算法A、B、C在具体实施例中进行说明。
本发明的有益效果:本申请提供的方法,在进行相似相检测时先对读取文件内容并进行预处理,将内容重新格式化,过滤干扰因素,然后根据指定的相似性标准对代码进行比对,在比对时忽略注释行,采用逐行迭加的方式消除代码布局不同的影响,提高判断精度,减少误差。本发明支持Python源文件代码的精确匹配和模糊匹配,支持两种不同精度要求的代码相似性检测,支持不同布局代码之间的相似性检测。本发明稍加修改同样适用于其他语言源代码相似性检测,并且可以根据需要增加其他相似性判断标准,具有很好的可扩展性。
附图说明
图1本发明实施例提供的一种Python源代码文件相似性检测方法的流程示意图;
图2本发明实施例提供的一种算法C的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东工商学院,未经山东工商学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510014906.3/2.html,转载请声明来源钻瓜专利网。