Имейте в виду, что, как доказывает проблема остановки , вы не можете определенно сказать, что определенный класс используется или не используется. По крайней мере, на любом умеренно сложном приложении. Это потому, что классы не просто связаны во время компиляции, но могут быть загружены:
- на основе конфигурации XML (например, Spring);
- загружено из файлов свойств (например, имя драйвера JDBC);
- добавлено динамически с аннотациями;
- загружен в результате внешнего ввода (например, пользовательский ввод, данные из базы данных или удаленный вызов процедуры);
- и т.д.
Так что просто смотреть на исходный код недостаточно. При этом любая разумная IDE предоставит вам инструменты для анализа зависимостей. IntelliJ, безусловно, делает.
Что вам действительно нужно, так это инструментарий времени выполнения того, что делает ваше приложение, но даже это не гарантируется. В конце концов, из-за странной комбинации входных данных конкретный путь к коду может оказаться одним из 10 миллионов запусков, поэтому вы не можете быть уверены, что вы охвачены.
Инструменты, подобные этому, имеют определенную ценность. Возможно, вы захотите посмотреть на что-то вроде Эмма . Профилировщики, такие как Yourkit , могут дать вам дамп кода, который вы также можете выполнить для анализа (хотя это не очень хорошо подберет временные объекты).
Лично я нахожу небольшое значение помимо того, что IDE скажет вам: удаление неиспользуемых JAR-файлов. Пройдя более гранулированно, чем просто напрашиваться на неприятности из-за небольшого выигрыша.