Java 如何在Intellij Idea中找到所有未使用的类?

Java 如何在Intellij Idea中找到所有未使用的类?,java,intellij-idea,dead-code,Java,Intellij Idea,Dead Code,有一个检查“未使用的声明”,可以在Intellij Idea中找到所有未使用的代码。(见附件) 但是我想找到所有未使用的类,不方法、变量等。只类。(在3000个结果列表中很难只找到类)。我该怎么做?也许您应该使用以下设置查看未使用符号检查: 也许您应该使用以下设置查看未使用符号检查: 我不确定这是否能回答您的问题,但我在过去使用了一个工具来强化对项目运行代码审查规则,它精确地指向未使用的导入、死代码、,未使用的类等。这是一个付费软件,但我肯定会有一些免费插件/软件可供使用。我不确定这是否能回答您

有一个检查“未使用的声明”,可以在Intellij Idea中找到所有未使用的代码。(见附件)
但是我想找到所有未使用的类,方法、变量等。类。(在3000个结果列表中很难只找到类)。我该怎么做?

也许您应该使用以下设置查看
未使用符号检查:


也许您应该使用以下设置查看
未使用符号检查:


我不确定这是否能回答您的问题,但我在过去使用了一个工具来强化对项目运行代码审查规则,它精确地指向未使用的导入、死代码、,未使用的类等。这是一个付费软件,但我肯定会有一些免费插件/软件可供使用。

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

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

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

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


这就是为什么我认为IDEA没有提供这种行为:它可能会给用户错误的安全预期,删除它们不是一种安全的重构。

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

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

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

这就是为什么我认为IDEA没有提供这种行为:它可能会给用户错误的安全预期,删除它们不是一种安全的重构。

  • 按Ctrl+Shift+A(在Mac命令+Shift+A中)
  • 输入“未使用的十二月”
  • 双击“未使用的声明”
设置将弹出

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

  • 在菜单栏上,单击按名称分析/运行检验(或Ctrl+Alt+Shift+I-in Mac Command+Option+Shift+I)
  • 插入文本“未使用的数据”
  • 选择“未使用的声明Java |声明冗余”
搜索开始

  • 完成后,检查Idea底部的作业状态:享受结果和清理混乱代码的美妙感觉。:)
      • 按Ctrl+Shift+A(在Mac命令+Shift+A中)
      • 输入“未使用的十二月”
      • 双击“未使用的声明”
      设置将弹出

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

      • 在菜单栏上,单击按名称分析/运行检验(或Ctrl+Alt+Shift+I-in Mac Command+Option+Shift+I)
      • 插入文本“未使用的数据”
      • 选择“未使用的声明Java |声明冗余”
      搜索开始

      • 完成后,检查Idea底部的作业状态:享受结果和清理混乱代码的美妙感觉。:)
      只需运行检查并单击右键,然后在菜单列表中看到这一点。这是两个问题——最好将它们作为单独的问题。serialVersionXXX对于大多数项目来说都是个坏主意,因为很少有开发人员知道它的用途,而且几乎总是被误用。在java中,很少使用序列化机制在字节级别读写对象,如果这样做,默认的串行版本通常足以提供安全性。必须更新硬编码的串行版本