2009-03-20 7 views
63

Ho un grande progetto Eclipse in cui esistono diverse classi che, sebbene non siano più utilizzate ovunque, non sono mai state contrassegnate con @Deprecated.Trova classi inutilizzate in un progetto Java Eclipse

Come posso trovare facilmente tutti questi?

+1

possibile duplicato di [Come trovare codice non utilizzato/morti in progetti Java] (http: // StackOverflow. it/questions/162551/how-to-find-inused-dead-code-in-java-projects) – PhoneixS

risposta

79

mi piace anche di utilizzare UCDetector:

screenshot

UCDetector (Codice Detector unecessary) è un Open Source Plug-in Eclipse strumento per trovare unecessary (morto) codice Java pubblico. Cerca anche di rendere il codice definitivo, protetto o privato.

Bonus: può anche trovare le dipendenze cicliche tra le classi

(anche un number of other tools - tra cui Findbugs - sa come si fa fare anche questo)


Caveat: Cid menziona in the comments:

UCDetector non funzionerà se ci sono implementazioni di interfaccia che saranno note solo al runtime.
Contrassegna erroneamente le classi di implementazione come non utilizzate.


Aggiornamento 2017: analisi statica del codice si è evoluto un po 'in 8 anni.
Utilizzando SonarLint for Eclipse, è possibile utilizzare l'ultimo SonarJava 4.6 plugin per analizzare il codice.
Sarà find dead code.

+4

Funziona per progetti Android? Ho scaricato, installato e il menu UCDetector non si trova dove :( – Jay

+3

@VonC - UCDetector non funzionerà se ci sono implementazioni di interfaccia che saranno conosciute solo in fase di esecuzione. Contrassegna erroneamente le classi di implementazione come inutilizzate :( – Cid

+2

@ Cid interessante, ho incluso il tuo commento nella risposta per una maggiore visibilità – VonC

1

ProGuard può essere utilizzato per stampare un report di classi/metodi non utilizzati. Tuttavia, è un dolore fornire tutti i barattoli dipendenti.

Queste lista Opzioni inutilizzati classi, campi e metodi nella mypackage.MyApplication applicazione:

-injars  in.jar 
-libraryjars <java.home>/lib/rt.jar 

-dontoptimize 
-dontobfuscate 
-dontpreverify 
-printusage 

-keep public class mypackage.MyApplication { 
    public static void main(java.lang.String[]); 
} 
+0

Ho avuto la stessa idea! Hai trovato un modo carino per specificare tutte le dipendenze per un progetto Maven? – Zero3

+0

@ Zero3 come opzione è possibile utilizzare il plugin maven dependency per elencare tutte le dipendenze o estrarle in una directory locale quindi eseguire windows o script linux che elencherà i file jar nella directory e genererà la stringa dei parametri dell'elenco jar ed eseguirà proguard. – jmu

0

Basta usare analizzare | Ispezionare il codice con l'ispezione appropriata abilitata (dichiarazione non utilizzata nel gruppo di ridondanza della dichiarazione).

Utilizzando IntelliJ 11 CE è ora possibile "Analizzare | Esegui ispezione per nome ... | dichiarazione inutilizzato"