论文部分内容阅读
本文介绍了一个自动的检测程序中非连续参数化重复代码的方法。所作的工作有两部分,(1)对Baker的参数化匹配算法进行了改进。把匹配单位由单个的字符变为程序中的语句,为了配合匹配单位的改变,重新定义了转换函数。经过改进,算法的空间复杂性得到降低,使之更适于大型程序文本的匹配;(2)提出了程序碎片合并算法,判断通过参数化匹配算法找到的重复代码段之间的可合并性,从而能从程序中识别出非连续的近似重复代码。分析表明:改进的参数化匹配算法的复杂性同程序文件的行数成线性关系;碎片合并算法的复杂性是O(n~2)的,其中n是碎片所在依赖单位的语句个数。