Java IDEA将方法显示为正在使用中,而实际情况并非如此

Java IDEA将方法显示为正在使用中,而实际情况并非如此,java,intellij-idea,Java,Intellij Idea,IDEA为什么显示此SimpleClass.start方法正在使用: 即使不是这样。将方法名称更改为其他名称,然后将其灰显为未使用: 似乎不仅在start中发生,而且在我尝试过的init和stop中也会发生。我在Windows上使用13.1.4版。这是一种性能优化 基本上IntelliJ IDEA首先检查其索引中出现的方法名称 然后它检查每个事件的文件,看看它是否真的是该方法的用法 如果该方法的名称用于许多地方,则必须解析和检查许多文件。为了避免花费太多的时间和cpu,如果索引中出现的次数

IDEA为什么显示此
SimpleClass.start
方法正在使用:

即使不是这样。将方法名称更改为其他名称,然后将其灰显为未使用:


似乎不仅在
start
中发生,而且在我尝试过的
init
stop
中也会发生。我在Windows上使用13.1.4版。

这是一种性能优化

  • 基本上IntelliJ IDEA首先检查其索引中出现的方法名称
  • 然后它检查每个事件的文件,看看它是否真的是该方法的用法
  • 如果该方法的名称用于许多地方,则必须解析和检查许多文件。为了避免花费太多的时间和cpu,如果索引中出现的次数超过一定数量,则跳过检查,并且假设使用了方法(因为概率非常高)
  • 在批处理模式下运行未使用声明检验(
    Analyze>runinspection by Name…
    )仍将该方法报告为未使用

整个代码?截图?从这里我们什么也看不到。您的类是否扩展了任何内容?完整的代码是的,将屏幕截图添加到原始的PostCull中是因为它是一个
public
方法,因此可以从外部项目中使用吗?@imrichardcole我用Idea 2016尝试了您的示例。2.5 an正在工作correctly@Vucko-但在我知道之前我怎么休息?严肃地说,我们相信一段代码正在被使用,而它没有被使用,它是作为代码重构和整理的一部分被提取的。不。我扩展了我的答案,使我的意思更清楚。很好的解释。希望你对这个事实很有把握。无论如何,假设所使用的未使用的方法是无害的,但并非相反。:)