论文部分内容阅读
任何的计算机系统都包含一定比例的重复代码。这些相似的代码片段的存在不仅使得整个系统显得臃肿并导致性能的下降,而且对于程序的理解,维护,移植,重构等都造成了很大的影响。重复代码的查找结果不仅有助于人们理解代码和系统,而且使得人们能够有针对性的提高系统的性能及完善系统的设计,甚至重复代码片段分析有助于人们理解代码和系统。现在重复代码分析被用于程序理解,代码质量分析,剽窃检测,版权维护,代码压缩,病毒检测,bug查找等等[1,6]。所以研究重复代码对软件系统的分析极大的意义。 重复代码的研究主要有四种手段,即基于文本分析,基于词法分析,基于文法分析,基于语义分析。但是文本分析和词法分析的无法准确的识别出重复代码,而现有的文法分析和语义分析的分析技术,无论在时间,空间,结果准确性,工具可配置性,是否语言无关性,结果的表达等方面都存在缺陷。而大型的金融系统(代码行数超过500W行)对这些的要求是很高的。所以需要设计出一款时间,空间可接受的,分析的结果准确,工具有较好的交互性,工具的分析与语言无关,结果是基于分组的存储的工具是十分必要的。 为了能够快速准确的查找到各个系统的重复代码,本文提出了HTCloneDigger来帮助分析系统中的重复代码。并且从设计和算法两个角度对重复代码分析工具进行了研究,即从工程的角度分析了怎样设计重复代码分析工具使其具备语言无关性,可配置性,结果可存储性等性质;从算法的角度描述了怎样设计出分析算法,使得该重复代码分析工具具备快速,准确,可归类,可配置相似度,可模糊匹配等需求。