是否有工具从文件中自动提取公共子程序?

时间:2011-07-05 15:39:25

标签: perl svn ide refactoring

我在Perl中有两个1000+行程序,每个程序在主文件中有大约20个子程序。一个是前一段时间从另一个分叉的,我想要分解公共部分(在向后移植特征之前)。是否有一个diff工具将子例程(和前面的注释)视为单位,并将公共单位提取为新文件? (如果子程序的一行不同,则单位不匹配。)

如果有帮助,我的SCM目前是Subversion。处理代码的Perl脚本很酷。

3 个答案:

答案 0 :(得分:6)

您可以尝试使用PPI模块;据我所知,没有像你提到的重构工具。

答案 1 :(得分:1)

如果您有500,000行代码,那么拥有或编写这样的工具可能会很有用。对于1000行,使用简单的可视化差异工具(如BeyondCompare($)或WinMerge(免费))这应该不会太难。

答案 2 :(得分:0)

您正在尝试比较两个不同版本的文件?

我使用内置差异程序 vimdiff VIM和一个名为 gvimdiff 的完全gui。它将折叠公共线,只显示不同的线和位置。

使用 gvim ,您可以在一个窗口中打开三个分割(两个版本和一个空白),然后复制您想要的各个行。如果您使用的是Subversion,则可以使用内置的合并工具(如果您正在讨论同一文件的不同版本)。 Subversion合并非常好,可能会帮助您解决合并问题。