Eu não acho isso possível. Suspeito que esse recurso seja intencionalmente deixado de fora dos IDEs porque não pode ser usado com segurança da mesma maneira que outras refatorações "remover XXX não utilizado".
As declarações não utilizadas que a IDEA (e AFAIK, NetBeans) procuram são para membros particulares e variáveis locais: coisas que não são acessíveis, mesmo dinamicamente, fora da classe ou escopo. (Bem, pelo menos sem fazer coisas com o Reflection ou o JVM hacking que você não deveria.) Não importa o que o código externo faça com sua biblioteca, ele não fará com que essas coisas sejam usadas, porque seu escopo é limitado e o O IDE pode ver tudo isso. O compilador pode determinar isso observando apenas seu código.
Para as classes, mesmo que elas não tenham public
acesso, elas podem ser referenciadas dinamicamente com Class.forName()
, e isso realmente acontece no código ativo. Portanto, mesmo que aparentemente não sejam usados no código do seu projeto, eles podem ser usados, dependendo do código que você ou o código externo usar na sua biblioteca. Portanto, o IDE não pode garantir que a remoção dessas classes não mude o comportamento observável externamente.
É por isso que acho que a IDEA simplesmente não fornece esse comportamento: pode dar aos usuários falsas expectativas de segurança, e removê-las não é uma refatoração segura.