我想重构一个 Python 模块,其中主要问题是重复代码。
有没有什么工具可以用来查看两个选定部分的差异,以便我可以看到这些几乎相同代码之间的区别?
我想重构一个 Python 模块,其中主要问题是重复代码。
有没有什么工具可以用来查看两个选定部分的差异,以便我可以看到这些几乎相同代码之间的区别?
虽然我认为界面不是很好,但可以看看Clone Digger。请查看示例。
Thinking Craftsman's Tool Kit(TC Toolkit)可能会更容易地找到重复的代码,但似乎没有提供良好的可视化效果。
编辑:如果你愿意付费,Atomiq看起来很有趣。
对于良好的可视化效果,我用Diffuse取得了一些成功,因为它允许任意匹配一个文件中的行到另一个文件中的行:
但是,我必须将文件复制为不同的名称才能使其正常工作。
我以前偶尔使用Emacs完成以下操作:
M-x clone-indirect-buffer
)。C-x n n
)。M-x ediff-two-buffers
)。一个不错的优点是您可以在它们之间合并块而不会混淆。
C-x 4 c
来 clone-indirect-buffer
。 - Antoine Pelisse我使用ExamDiff Pro进行所有文件差异比较。它是一个图形化分析工具。
如果你只在一个文件中有克隆,并且知道它们在哪里,那么克隆检测工具可能就不必要了。但它们检测克隆并直接向您显示似乎恰好是您想要的。
我们的CloneDR具有Python特定版本。如果它发现克隆(即使在“同一个”文件中),它会将它们孤立地展示给您,并根据该语言(Python)规则,而不仅仅是布局,显示它们的精确差异,包括克隆变化和它们如何变化的具体位置。(据我所知,Atomiq仅检测具有完全相同文本行的克隆)。
CloneDR在Windows下运行得非常好。
Beyond Compare的文本比较功能有一个“打开剪贴板”命令,可以将剪贴板上的内容放在比较的一侧。如果您复制第二个函数并再次使用该命令,则会将它们对齐,并突出显示差异。