发明名称 一种MATLAB程序文件相似度的评估方法
摘要 本发明针对现有技术存在的问题,通过全局变量,对MATLAB程序文件进行预处理,然后寻找关键字,再通过关键字的位置比较、关键字切割内容比较,得到基于关键字的相似度,通过基于行代码的精确和模糊比较,得到基于行的相似度,最终选取基于关键字的相似度、基于行的相似度的较小值作为基于结构的相似度评估的结果。此外,本发明还提供基于过程的相似度评估,通过运行产生的变量值进行相互逐一比较,然后平均得到基于过程的相似度。这样,将相似度大的MATLAB程序文件,通过适度修改,使其可以相互调用,而变得简洁,同时使运行效率提高。
申请公布号 CN106202007A 申请公布日期 2016.12.07
申请号 CN201610486747.1 申请日期 2016.06.28
申请人 电子科技大学 发明人 郝凯敏;刘志亮;康金龙;王志冶;彭华伟
分类号 G06F17/22(2006.01)I;G06F17/50(2006.01)I 主分类号 G06F17/22(2006.01)I
代理机构 成都行之专利代理事务所(普通合伙) 51220 代理人 温利平
主权项 一种MATLAB程序文件相似度的评估方法,其特征在于,包括以下步骤:(1)、初始化MATLAB运行环境清除全局变量,关闭未关闭的运行窗口,删除不需要的变量和文件;(2)、文件读取与相似度评估模式选取读取样本文件以及对比文件,存入全局变量,同时,选取相似度评估模式存入全局变量,其中样本文件和对比文件都是MATLAB程序文件,相似度评估模式包括基于结构的相似度评估以及基于过程的相似度评估;(3)、基于结构的相似度评估3.1)、预处理获取全局变量,当选取了基于结构的相似度评估的时候,首先对样本文件进行预处理,获取MATLAB程序文件(该样本文件)中的第一行代码;去除注释:对于符号“%”,如果其在两个符号“'”之间,则认为其在代码中,予以保留,否则,认为其不在代码中,为注释符号,删除该符号“%”以及该符号后的内容;分行:对于符号“;”,如果其在“{}”或“[]”之间,则不进行分行,如果没有,则进行分行;对代码中的空格判断:对大于等于2的空格,利用差分方程,进行剔除,使得代码之间中只保留一个空格;空行处理:判断是否为空行,如果为空行,剔除此行;把第一行代码存到样本文件元胞中,同理也对其他行,进行相应的预处理,直到样本文件的全部代码处理完毕;然后,对对比文件也进行样本文件相同的预处理;3.2)、寻找关键字与基于关键字的相似度评估3.2.1)、从样本文件元胞中分离每个字符串,并把字符串与关键字库的关键字进行对比,如果存在,则与对比文件元胞中的字符进行对比,如果在对比文件元胞中存在,则作为关键字予以保留;3.2.2)、相似度评估关键字的位置:获取关键字的位置信息,如果关键字在样本文件元胞、对比文件元胞中为同一行且位置差为5,则相似度百分比为100;为同一行且位置差大于5小于15,则相似度百分比为100‑(位置‑5);为同一行且位置差大于15,则相似度为0;如果关键字不在同一行,则不进行比较;对于每一个关键字,根据关键字的位置信息中,得到各行的相似度进行平均,得到该关键字的相似度;对各个关键字的相似度取均值作为关键字位置相似度;关键字切割:将样本文件中两个关键字之间的代码进行切割,得到m段代码,并进行保存,同样,将将对比文件中两个关键字之间的代码进行切割,得到n段代码,并进行保存,然后将m段代码中的每一段代码与n段代码逐一进行比较,如有相同,则定义相似度百分比为100,如都不同,则定义相似度为0;将各段比较得到的相似度取均值,得到关键字切割相似度;比较关键字位置相似度以及关键字切割相似度,从中取相似度最大的值作为评估出的基于关键字的相似度;3.3)、基于行的相似度评估以行进行分析:从样本文件中依次读取一行代码提取出来,与对比文件中的每一行代码进行准确对比,如果相同,则进行标记;准确比对结束后,依次将样本文件中未标记的行代码的关键字进行切割,并与对比文件中未标记的行代码进行模糊对比,如果两行代码中存在大于等于3个关键字,则匹配成功,进行标记;将进行了标记的行数除以总行数,得到基于行的相似度,其中,所述总行数是指样本文件、对比文件代码行数中的较大者;3.4)、对于基于关键字的相似度和基于行的相似度中,选取相似度较小值作为基于结构的相似度评估的结果;(4)、基于过程的相似度评估获取全局变量,当选取了基于过程的相似度评估的时候,创建不可见的figure,让样本文件程序运行,将运行产生的变量进行保存,把对应变量值也保存,同理对对比文件也进行相同操作;首先,将保存的样本文件运行得到的每一个变量值,与保存的对比文件运行得到的变量值逐一进行对比,如果在对比文件运行得到的变量值中有一个变量值相同,则定义样本文件运行得到的该变量值的相似度百分比为100,如果都不同,则定义相似度为0,然后,将样本文件运行得到的所有变量值的相似度进行平均,得到基于过程的相似度。
地址 611731 四川省成都市高新区(西区)西源大道2006号
您可能感兴趣的专利