Istnieje inspekcja „Niewykorzystana deklaracja”, dzięki której można znaleźć cały niewykorzystany kod w Intellij Idea. (zobacz to pytanie ) Ale chcę znaleźć wszystkie nieużywane klasy, a nie metody, zmienne itp. Tylko klasy. (na liście wyników 3000 trudno znaleźć tylko klasy). Jak mogę to zrobić?
java
intellij-idea
dead-code
wiśnia
źródło
źródło
Odpowiedzi:
Ustawienia pojawią się
Ustawienia zostaną zamknięte
Rozpoczyna się wyszukiwanie
źródło
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ą.
źródło
Może powinieneś przyjrzeć się
Unused Symbol
inspekcji z następującymi ustawieniami:źródło
Nie jestem pewien, czy to odpowie na twoje pytanie, ale w przeszłości korzystałem z narzędzia Fortify do uruchamiania reguł przeglądu kodu w projekcie, które precyzyjnie wskazuje na niewykorzystane importy, martwy kod, nieużywane klasy itp. Jest to płatne oprogramowanie, ale ja Jestem pewien, że będą dostępne darmowe wtyczki / oprogramowanie do tego samego.
źródło