我正在尝试重构一个python模块,其中主要问题是重复代码。
是否有任何工具可用于查看两个选定部分的差异,以便我可以看到几乎相同的代码之间的区别?
答案 0 :(得分:3)
虽然我不认为界面很棒,但请检查Clone Digger。请参阅example。
Thinking Craftsman's Tool Kit (TC Toolkit)可能会更容易找到重复的代码,但似乎无法提供良好的可视化效果。
编辑:如果您愿意付款,Atomiq看起来很有趣。
为了获得良好的可视化效果,Diffuse取得了一些成功,因为它允许从一个文件到另一个文件的任意匹配行:
但是,我必须使用不同的名称复制文件才能正常工作。
答案 1 :(得分:3)
我在使用Emacs之前偶尔会这样做:
M-x clone-indirect-buffer
)。C-x n n
)。M-x ediff-two-buffers
)。一个很好的特权是你可以在它们之间合并块,它不会混淆。
答案 2 :(得分:1)
我将ExamDiff Pro用于所有文件差异。这是一个图形分析器。
答案 3 :(得分:0)
如果您只在一个文件中包含克隆并且您知道它们在哪里,则克隆检测工具可能过度。但是,他们能够直接检测克隆并向您显示克隆,这似乎正是您想要的。
我们的CloneDR有一个特定于Python的版本。如果它找到克隆(即使在“相同”文件中),它会单独向您显示它们,它会根据该语言(Python)规则显示它们的确切区别,而不仅仅是布局,包括克隆的位置变化,确切地说它们的变化。 (Atomiq,据我所知,它只会检测具有完全相同文本行的克隆)。
CloneDR在Windows下运行就好了。
答案 4 :(得分:-1)
Beyond Compare的文本比较有一个“打开剪贴板”命令,它会在比较的一侧放置剪贴板上的内容。如果您随后复制第二个函数并再次使用该命令,则会将它们与高亮显示的差异对齐。