我在一个遗留项目中有一个至少几千行长的 PHP 文件。它主要由大约 10 种情况的 switch 语句分成许多不同的条件块。在每种情况下,似乎都有一个非常相似(如果不是完全重复的话)的代码块。我可以使用哪些方法将这些代码块识别为相同或接近相同,以便我可以抽象出该代码并开始重构整个文件?我知道这在非常手动的术语中是可能的(将代码中的每个 case 语句分成单独的文件和 Diff),但我对可以使用哪些工具来加快这个过程很感兴趣。
谢谢。
我在一个遗留项目中有一个至少几千行长的 PHP 文件。它主要由大约 10 种情况的 switch 语句分成许多不同的条件块。在每种情况下,似乎都有一个非常相似(如果不是完全重复的话)的代码块。我可以使用哪些方法将这些代码块识别为相同或接近相同,以便我可以抽象出该代码并开始重构整个文件?我知道这在非常手动的术语中是可能的(将代码中的每个 case 语句分成单独的文件和 Diff),但我对可以使用哪些工具来加快这个过程很感兴趣。
谢谢。
请参阅我们的PHP 克隆检测器工具。
尽管重新格式化、插入/删除注释、替换变量名、添加/替换子块等,这都会找到精确的副本和未命中的错误。
据我所知,PHPCPD 只找到完全相同的(令牌)序列。这错过了很多克隆,因为复制粘贴之后最常见的操作是编辑到自定义。所以它会错过 OP 试图找到的克隆。
您可以将块放在单独的文件中,然后对它们运行 diff 吗?
但是,我认为最终您无论如何都需要手动完成所有内容,因为听起来这段代码需要大量重构,即使存在差异,您也可能需要评估这是故意的还是错误的。