No creo que esto sea factible. Sospecho que esta característica se deja fuera intencionalmente de los IDE porque no se puede usar de manera segura de la misma manera que otras refactorizaciones "eliminar XXX no utilizadas".
Las declaraciones no utilizadas que IDEA (y AFAIK, NetBeans) buscan son para miembros privados y variables locales: cosas que no son accesibles, incluso dinámicamente, desde fuera de esa clase o alcance. (Bueno, al menos sin hacer cosas con Reflection o pirateo de JVM que se supone que no debes hacer). No importa lo que haga el código externo con tu biblioteca, no hará que esas cosas se usen, porque su alcance es limitado y IDE puede verlo todo. El compilador puede determinar esto mirando solo su código.
Para las clases, incluso si no tienen public
acceso, se puede hacer referencia a ellas dinámicamente Class.forName()
, y esto realmente sucede en el código en vivo. Entonces, incluso si aparentemente no se usan dentro del código de su proyecto, podrían usarse dependiendo de lo que usted o el código externo que use su biblioteca ejecute. Por lo tanto, el IDE no puede garantizar que eliminar esas clases no cambie el comportamiento externo observable.
Por eso creo que IDEA simplemente no proporciona este comportamiento: podría dar a los usuarios falsas expectativas de seguridad, y eliminarlos no es una refactorización segura.