2013-12-13 29 views
25

我目前正在研究几乎没有编码约定或惯例编写的遗留java代码。我经常遇到工作但非常糟糕的代码片段(变量名称中的拼写错误,冗余和许多其他错误),我发现自己正在努力修复。在其中一个例子中,我发现了一个包含三个名称不同但方法体几乎相同的方法的类。快速比较IntelliJ中方法的方法

根据我最初的观察,唯一的区别是其中一个参数的名称。

在采取任何措施并合并它们之前,我想对三种方法进行比较,看看是否有任何细微差别,我没有注意到。

我知道有可能比较两个文件,与VCS的版本进行比较等,但我无法找到一种快速方法来比较同一文件中的方法定义。

是否有更实用的方法来比较IntelliJ中同一文件的不同部分,而不是将它们复制到不同的文件中并运行文件比较?

感谢,

+0

任何差异工具都应该帮助你做到这一点,哪一个挑选的主要是主观主题,并且在StackOverflow上可能有很多关于此主题的问题。 –

+0

看到这个http://stackoverflow.com/questions/434766/how-can-i-diff-two-sections-of-the-same-file –

回答

8

的IntelliJ具有在分析查找重复。它具有高度的可配置性和语言意识,它不仅仅是寻找相同的文本块。它将能够检测两个代码块是否相同,但是例如具有不同的变量名称。

你甚至可以扩大范围,以便它检测到在不同文件中的代码重复。

有关更多信息,请参见此help页面。

+4

值得注意的是,这是只在付费“终极版”中可用开源的“社区版”。 (并不是说它太贵了 - 这是一个很棒的工具 - 它只是花了我一段时间才弄清楚为什么我错过了它......) –

56

另一种快速的方法来比较内的IntelliJ方法(或任何代码块):

  1. 复制一个版本到剪贴板。
  2. 突出显示其他版本。
  3. 使用编辑器中的上下文菜单中的“与剪贴板比较”功能或者从查看>与剪贴板比较。
+1

完美...非常有用!谢谢! – Daren

+3

这应该被接受的答案。 – InamTaj