Как найти все неиспользуемые классы в Intellij Idea?

Существует проверка "Неиспользуемая декларация", которая может найти все неиспользованный код в Intellij Idea. (см. этот вопрос) Но я хочу найти все неиспользуемые классы, не методы, переменные и т.д. Только. (трудно найти только классы в списке результатов 3000). Как я могу это сделать?

Ответ 1

  • Нажмите Ctrl + Shift + A (в Mac Command + Shift + A)
  • Введите "неиспользованный declar"
  • Дважды щелкните "Неиспользованное объявление"

Настройки появятся

  • Нажмите на Java/Избыточность декларации/Неиспользованное объявление
  • в правом нижнем углу выберите "Настройки редактора на лету"
  • Снимите флажки с полей,..., проверьте параметры. Должны быть отмечены только Check Class.
  • Нажмите ОК

Настройки закрываются

  • В строке меню нажмите "Анализ/Выполнить проверку по имени" (или Ctrl + Alt + Shift + I - в Mac Command + Option + Shift + I)
  • Вставьте текст "Неиспользованная декларация"
  • Выберите "Неиспользуемая декларация Java | Избыточность декларации"

Поиск начинается

  • Когда закончите, проверьте состояние работы в нижней части Idea: наслаждайтесь результатами и великолепным ощущением очистки от испорченного кода. :)

Ответ 2

Я не думаю, что это выполнимо. Я подозреваю, что эта функция намеренно отсутствует из IDE, потому что она не может быть безопасно использована так, как это могут сделать другие "удалять неиспользуемые XXX" рефакторинг.

Неиспользуемые декларации, которые ищет IDEA (и AFAIK, NetBeans), предназначены для частных членов и локальных переменных: вещи, которые недоступны, даже динамически, извне этого класса или области видимости. (Ну, по крайней мере, без каких-либо действий с Reflection или JVM-взломом, которые вы не должны делать.) Независимо от того, что внешний код делает с вашей библиотекой, это не приведет к тому, что эти вещи будут использоваться, поскольку их объем ограничен, и IDE может видеть все это. Компилятор может определить это, посмотрев только на ваш код.

Для классов, даже если у них нет доступа public, они могут динамически ссылаться на Class.forName(), и это действительно происходит в реальном коде. Поэтому, даже если они явно не используются в коде вашего проекта, они могут использоваться в зависимости от того, какой вы или внешний код используете в вашей библиотеке. Поэтому среда IDE не может гарантировать, что удаление этих классов не изменит внешне наблюдаемое поведение.

Вот почему я думаю, что IDEA просто не обеспечивает такого поведения: он может дать пользователям ложные ожидания безопасности, а их удаление не является безопасным рефакторингом.

Ответ 3

Возможно, вам стоит изучить инспекцию Unused Symbol со следующими настройками:

enter image description here

Ответ 4

Я не уверен, ответит ли это на ваш вопрос, но я использовал инструмент в прошлом как Fortify для запуска правил проверки кода в проекте, что точно указывает на неиспользованные импортные, мертвые коды, неиспользуемые классы и т.д. Это платный но я уверен, что для него будут доступны некоторые бесплатные плагины/программное обеспечение.