146

有一个检查“未使用的声明”,可以在 Intellij Idea 中找到所有未使用的代码。(请参阅如何使用 IntelliJ IDEA 查找所有未使用的代码?)但我想查找所有未使用的类,而不是方法、变量等。只有类。(很难在 3000 个结果列表中只找到类)。我怎么能这样做?

4

5 回答 5

243
  • Ctrl+ Shift+ A(在 Mac Command+ Shift+中A
  • 输入“未使用的声明”
  • 双击“未使用的声明”

会弹出设置

  • 点击Java/声明冗余/未使用声明
  • 在右下角选择“动态编辑器设置”
  • 取消勾选检查字段,...,检查参数。只应勾选检查类。
  • 按确定

设置关闭

  • 在菜单栏上,单击“按名称分析/运行检查”(或在 Mac 中为Ctrl+ Alt+ Shift+ - + + + )ICommandOptionShiftI
  • 插入文本“未使用的声明”
  • 选择“未使用的声明 Java|声明冗余”

搜索开始

  • 完成后检查 Idea 底部的作业状态:享受结果和清理混乱代码的美妙感觉。:)
于 2016-07-07T11:13:00.997 回答
10

我不认为这是可行的。我怀疑这个特性被故意排除在 IDE 之外,因为它不能像其他“删除未使用的 XXX”重构那样安全地使用。

IDEA(以及 AFAIK、NetBeans)寻找的未使用声明是针对私有成员和局部变量:从该类或范围之外无法访问的东西,即使是动态的。(嗯,至少不用反射或 JVM hacking 做你不应该做的事情。)无论外部代码对你的库做什么,它都不会导致这些东西被使用,因为它们的范围是有限的,而且IDE 可以看到所有这些。编译器可以通过仅查看您的代码来确定这一点。

对于类,即使它们没有public访问权限,也可以使用 动态引用它们Class.forName(),这实际上发生在实时代码中。因此,即使它们显然没有在您的项目代码中使用,也可能会根据您或使用您的库运行的外部代码来使用它们。因此 IDE 不能保证删除这些类不会改变外部可观察的行为。

这就是为什么我认为 IDEA 只是不提供这种行为的原因:它可能会给用户带来错误的安全期望,并且删除它们并不是一种安全的重构。

于 2015-04-29T04:43:36.487 回答
2

也许您应该Unused Symbol使用以下设置查看检查:

在此处输入图像描述

于 2014-03-20T08:39:22.347 回答
1

我不确定这是否能回答你的问题,但我过去曾使用过一个工具作为 Fortify 来对项目运行代码审查规则,它准确地指向未使用的导入、死代码、未使用的类等。它是一个付费软件,但我我相信会有一些免费的插件/软件可供使用。

于 2015-04-23T07:19:30.677 回答
0

我发现,即使在声明中实际使用了未实例化的类,intellij 也会将它们声明为未使用的类。所以我通常做的是Analyze然后在Unused declaration我右键单击每个并单击查找用法。如果弹出窗口显示“无使用”,则可以直接从问题菜单中安全删除,如下所示。这是我发现的最快的方法 - 否则 IntelliJ autodelte 将删除使用的类,只是没有实例化。

在此处输入图像描述

请注意,在 gif 中,您看不到通知我没有选择删除的此类的使用的弹出窗口。

于 2021-11-09T14:49:54.397 回答