Nie sądzę, żeby to było wykonalne. Podejrzewam, że ta funkcja jest celowo pomijana w IDE, ponieważ nie można jej bezpiecznie używać tak, jak inne refaktoryzacje typu „usuń nieużywane XXX”.
Nieużywane deklaracje, których szuka IDEA (i AFAIK, NetBeans), dotyczą prywatnych członków i zmiennych lokalnych: rzeczy, które nie są dostępne, nawet dynamicznie, spoza tej klasy lub zakresu. (Cóż, przynajmniej bez robienia rzeczy z Reflection lub hakowania JVM, których nie powinieneś robić.) Bez względu na to, co zewnętrzny kod robi z twoją biblioteką, nie spowoduje to użycia tych rzeczy, ponieważ ich zakres jest ograniczony, a IDE może to wszystko zobaczyć. Kompilator może to ustalić, patrząc tylko na Twój kod.
W przypadku klas, nawet jeśli nie mają public
dostępu, można do nich dynamicznie odwoływać się za pomocą Class.forName()
, co faktycznie dzieje się w kodzie aktywnym. Więc nawet jeśli najwyraźniej nie są używane w kodzie projektu, mogą być używane w zależności od tego, co Ty lub kod zewnętrzny korzystający z biblioteki działa. Więc IDE nie może zagwarantować, że usunięcie tych klas nie zmieni zachowania obserwowalnego zewnętrznie.
Dlatego uważam, że IDEA po prostu nie zapewnia takiego zachowania: może dać użytkownikom fałszywe oczekiwania dotyczące bezpieczeństwa, a ich usunięcie nie jest bezpieczną refaktoryzacją.