程序代码相似度检测方法的设计与实现
计算机程序代码相似度检测是指利用计算机技术,对两段程序代码进行比较,以从中提取其中的相似性,从而对源程序时间消耗、运行结果做统计把握,用来编写更加高效的程序,有助于加快程序的开发周期,也可以检测两程序是否怀疑“抄袭”或者根据其标准检测出程序代码质量的好坏。本文讨论的是程序代码相似度检测方法的设计与实现。
程序代码相似度检测的核心思想时对比比较,既然需要比较,那么就要从把程序代码变形为其他形式开始分析。一般程序语言都具有反汇编的功能,可以将源代码转换为汇编代码。然后在汇编代码的基础上,再将其转化为由标记组成的字符串。经过这个变形,我们就可以通过对比比较,寻求两个程序代码之间的相似性,比如比较共同出现的标记,出现次数以及位置等等。
在介绍如何实现程序代码相似度检测之前,先介绍一下两个程序代码之间相似度检测时,必须考虑的要素:
(1)选择一种合适的比较方式,有时采用字符串比较,有时采用词语比较,有时采用句子比较。
(2)考虑判断标准,一般有按照比较粒度的大小、相似度的分数(一般使用0-1浮点数来标识),评分越高,说明相似度越大。
源程序是指什么程序 (3)考虑比较程序的耗时,一般性的比较会消耗的时间较长。
根据上面的要素,我们可以将程序代码相似度检测实现的思路总结如下:
(1)先将源代码转换为机器语句,从而形成一段机器语句包括标记。
(2)在机器语句上,采用一定的比较方式,如字符串比较,词汇比较等,进行比较,并根据不同比较粒度和标准,得出两个比较程序的相似度分数,该分数可以参考拟定出程序的质量,或者用于进行嫌疑程序的抄袭检测。
(3)记录比较过程所耗费的时间,以及相似度检测得分,并将比较结果反馈给用户。
以上是程序代码相似度检测方法设计及实现方面的一些讨论。通过从获取源程序,到变形比较,再到考虑检测用时,不断根据细致设计,可以有效的检测出两程序之间的相似度,同时也可以作为代码质量的参考依据,从而减少源程序的时间消耗,同时也可以加快程序的开发周期,有助于提升软件的品质。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论