【问题标题】:Quick way to compare methods in IntelliJ在 IntelliJ 中比较方法的快速方法
【发布时间】:2013-12-13 22:13:10
【问题描述】:

我目前正在编写一个几乎没有编码约定或常见做法的遗留 Java 代码。我经常遇到工作但非常糟糕的代码 sn-ps(变量名中的错别字、冗余和许多其他问题),我发现自己敦促修复这些代码。在其中一个实例中,我发现一个类包含三个名称不同但方法主体几乎相同的方法。

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

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

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

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

谢谢,

【问题讨论】:

  • 任何 diff 工具都应该可以帮助您做到这一点,选择哪个主要是一个主观主题,并且在 StackOverflow 上可能已经有很多关于这个主题的问题。

标签: java intellij-idea diff


【解决方案1】:

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

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

【讨论】:

  • 我非常感谢这个答案,但我找不到让光标在比较视图中的两个窗口之间跳转的方法。相反,我使用“split”将活动编辑器水平或垂直一分为二,然后使用 control+tab 切换器在两者之​​间跳转光标。
  • 目前这个不被接受的答案比被接受的答案流行 12.875 倍 XD 真的对我有帮助,谢谢
【解决方案2】:

IntelliJ 在分析中有Locate Duplicates。它具有高度可配置性和语言感知能力,以至于它不仅仅是寻找相同的文本块。它将能够检测两个代码块是否相同,但例如具有不同的变量名称。

您甚至可以扩展范围,以便它检测不同文件中的重复代码。

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

【讨论】:

  • 值得注意的是,这仅适用于付费的“终极版”,而不是开源的“社区版”。 (并不是说它太贵了——它是一个很棒的工具——我花了一段时间才弄清楚为什么我错过了它......)
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2014-08-20
  • 2014-07-20
  • 1970-01-01
相关资源
最近更新 更多