基于基准样本数据库的源代码相似性检测系统研究

时间:2024-12-27 05:52:20 来源:作文网 作者:管理员

【摘 要】随着商业软件设计的不断发展 ,开源软件对世界的贡献有目共睹。但是不规范的开源软件组件的使用正在打击着软件设计人员的积极性,其不仅漏洞百出,而且对后续软件的开发也产生了重要影响。并且随着软件设计业的迅速发展,抄袭剽窃行为在行业内也成为了一种常见的现象,有关知识产权纠纷的问题也在不断的增多。软件设计产业是一项知识密集性的技术产业,加强对人们设计方面专利的保护,能够促进软件设计行业的健康发展,本文正是在这种情况下,构建了基于基准样本数据库的源代码相似性检测模型并设计实现了软件源代码相似性综合检测系统。希望能对软件设计行业的健康发展做出一份贡献。

【关键词】基准样本数据库;源代码相似性;检测系统

软件程序代码的相似性检测是指度量两个程序代码之间的相似度,判断代码抄袭行为的重要依据,因为软件设计行业是一个技术密集型的行业,所以对其知识产权的保护,对于设计人员有着重要的意义,它不仅保障了设计人员的经济利益,同时对于提高设计人员的创造积极性也有着重要的意义。本文阐述了基于基准样本数据库的源代码相似性检测模型并设计实现了有关软件源代码相似性综合检测系统,源代码相似性检测系统是一个复杂的系统,包括了对源代码基准样本数据库的构建,相似性鉴别和B/S架构等。在下文笔者就展开讨论。

1.多层次多类别的软件源代码相似性鉴别技术设计。

代码的特征属性是源代码的相似性鉴别技术必须考虑注重的。检测技术重要可分为两大类,一种是鉴别源代码名称、编程语言、开发环境等外在特征的技术;另一类是检测包括整文件hash、代码行Hash、Token行hash、 语法节点hash等在内的源代码Hash的检测技术,对于较为复杂的大规模源代码检测是一项技术难度较大的任务,一般单独使用某一种检测的方法很难达到预想的检测效果,因此在这种情况下,我们将这两类检测技术结合起来就能在检测大规模源代码时产生较理想的效果,检测见过也会更加准确。

首先我们可以利用基于源代码名称、编程语言、开发环境等外在特征的检测技术使检测源代码对比库的范围缩小,这对于后续代码检测工作有着较大啊辅助作用;然后再利用基于包括整文件hash、代码行Hash、Token行hash、 语法节点hash等在内的源代码Hash的检测技术对缩小范围后的源代码进行深层次的分析对比,这样我们就可以将那些具有相似性的源代码位置进行准确定位。这两种方法的结合对于提高大规模源代码的检测效率来说具有重要的意义,在提高检测效率的同时,还提高了检测的准确性。

2.开源代码收集。

基于基准样本数据库的源代码相似性检测的基础就是基于开放互联网的源代码大规模收集,因为被系统的工作原理就是通过较目标代码与系统中大规模收集来的代码相比较从而检测目标代码与系统中其他代码之间的相似性。这其中包含着互联网大数据的思维,即是对互联网海量源代码的收集和利用。对于含量开源代码的收集,我们可以通过互联网中存在的专门发布海量开源代码的专业网点实现,通过智能爬虫系统的应用抓取定向或非定向的网页并在智能分析和识别之后再转换成格式化的数据。

3.构建基于源代码相似性检测技术的基准样本数据库。

我们收集来的海量源代码数据多是分散的、非系统性的、非结构化的系统,所以在源代码相似性的检测中其还不能被很好的直接应用,因为我们要建立的基准样本数据库所包含的内容要与目标文件所提取的属性特征类型相符才能实现目标文件与样本数据库的有效对比,所以这就要求源代码样本数据库的样本文件数据与目标文件必须是结构化的形式。而将海量的源代码进行结构化分析其实就是将源代码名称、编程语言、开发环境等外在特征和包括整文件hash、代码行Hash、Token行hash、 语法节点hash等在内的源代码Hash值等信息写入样本数据库,建立一个建构化的检测系统。

4.基于基准样本数据库的源代码相似性检测系统的设计和应用。

基于基准样本数据库的源代码相似性检测系统是一种基于先进算法的B/S架构的综合性系统,本文建立的基于基准样本数据库的源代码相℃似性检测系统是一个B/S构架的分布式多用户应用系统,它不仅可以完成海量代码相似性检测的分析,将多种源代码相似性分析功能集成于一体。同时还可以实现多用户的同时应用。目标代码可以被用户在系统界面中提交,源代码在经过后台系统的分析比后,就可以得到最终的结果与记录。这个检测系统采用的是分布式检测,所以用户对于检测方式的选择会比较自由,用户可以只选择一种,或者使用综合精细对比的方式来进行检测。

4.1基于基准样本数据库的源代码相似性检测系统的核心算法

基于基准样本数据库的源代码相似性检测系统是一个较为复杂的综合性分析检测洗头工,其采用的算法中较为核心的有:基于语法、基于标签和基于字符的比对算法了,在对这三种算法结果进行权重分析的基础上,形成了更为成熟的综合度量算法,这对于源代码相似性的判断和检测更为合理了。具体可以分为:第一是基于整体文件的检测算法,这是以整体文件为单位进行对比,获取水印、摘要等关键信息然后计算整个目标文件的Hash值来用于海量样本数据库的对比,在业界黑鸭子公司的Protex是较为有名的产品,这对于避免侵权问题,辅助开发项目都有重要的作用;第二是基于文本比对的检测分析算法,这是对源代码首先进行字符串预处理,将“噪声”信息除去,然后计算Hash建立链表,提出了一种创新性地提出了一种采用行摘要的高效快速的计算方法,且因为权重信息的引入,所以不会出现在行计算不同的情况下得出相同值的情况;第三是基于标签序列的检测分析算法,是一种类似于字符对比的算法,但是这种比对方法可以检测出更广泛的范围。采用这种方法首先是预处理源代码,根据解析的语义类型将重新定义除去无意义信息后的源代码,从而生成标签序列,然后计算每行的哈希值,形成链表;第四是基于语法的检测分析算法,这种检测方法更加精细化,通过生成含有完整信息的语法树进行目标文本和样本文件两颗语法树的对比来进行检测分析,因为可以相互对比同一层的分支,所以这种检测方式对于代码块顺序调整等抄袭方式有着很好的检测效果;第五是基于语义的检测分析算法,因为上文中所述的四种检测方法均Σ不能检测语义方面的抄袭,当抄袭着在改变逻辑结构时以上算法就会失效。但是这是一种还没有发展成熟的算法系统,主要还是在理论研究和阐述阶段。我们在源代码相似性检测系统的设计和应用中要综合利用各种算❤法的优势,这样才能保证检测系统的效果。♡

4.2软件源代码检测系统架构分析

基于基准样本数据库的源代码相似性检测系统采用了 B/S架构,可以满足多用户海量数据的同时检测和分析,这种分布式的计算实现了单一计算和综合计算模式的自由选择。此综合系统的架构图如下所示:

4.3基于基准样本数据库的源代码相似性检测系统应用中的注意事项

尽管基于基准样本数据库的源代码相似性检测系统系统已经广泛应用于相关软件源代码相似性的检测,以判断软件设计人员在软件设计时是否存在源代码抄袭的现象,是否盗用了被人的知识产权,但是这种检测系统是一种静态地对于源代码抄袭行为的分析判断,所以考虑到这种检测系统是以海量源代码基准样本数据库为基础的,所以在软件代码安全可靠性检测方面可以建立一个圆缺陷代码为主体的样本数据库,在提供过大量实践的基础上,这种做法的优势也被证明。

基于基准样本数据库的源代码相似性检测系统主要是应用ส于软件设计中代码抄袭行为的检测,这对于健全和完善软件设计行业的秩序有着重要的作用,同时也能保证设计人员的个人利益不受非法侵犯,实现了经济效益和社会效益的结合。

参考文献:


热门排行: 教你如何写建议书