克隆代码又被称为重复代码,是一种代码坏味.针对传统的保持语法结构不变的过程提取方法提取克隆代码时存在的对某些克隆代码无法直接提取的问题,提出一种新的语义保持的克隆代码无定型过程提取方法.该方法结合程序依赖图和抽象语法树对程序进行语义分析,取消了传统的保持语法结构不变的过程提取算法对语句结构一致性的约束,保留了语义一致性约束,从而解决了传统方法不易处理的连续但不能直接提取的克隆代码提取问题,降低了对未标记语句提升的需求,并且不需要对跳转语句进行特殊处理.实验结果表明该方法可以提取传统的保持语法结构