Suchen Sie nicht verwendete Klassen in einem Java Eclipse-Projekt

Antworten:

86

Ich benutze auch gerne UCDetector :

Bildschirmfoto

UCDetector (Unecessary Code Detector) ist ein Open Source Eclipse-Plug-In-Tool, mit dem Sie nicht benötigten (toten) öffentlichen Java-Code finden können. Es wird auch versucht, Code endgültig, geschützt oder privat zu machen.

Bonus: Es können auch zyklische Abhängigkeiten zwischen Klassen gefunden werden

(auch eine Reihe anderer Tools - einschließlich Findbugs - wissen, wie das geht)


Vorsichtsmaßnahme : Cid erwähnt in den Kommentaren :

UCDetector funktioniert nicht, wenn Schnittstellenimplementierungen vorhanden sind, die nur zur Laufzeit bekannt sind.
Die Implementierungsklassen werden fälschlicherweise als nicht verwendet markiert.


Update 2017: Die statische Code-Analyse hat sich in 8 Jahren erheblich weiterentwickelt.
Mit SonarLint for Eclipse können Sie das neueste SonarJava 4.6-Plugin verwenden , um Ihren Code zu analysieren.
Es wird toten Code finden .

VonC
quelle
4
Funktioniert das für Android-Projekte? Ich habe heruntergeladen, installiert und das UCDetector-Menü ist nicht zu finden :(
Jay
3
@VonC - UCDetector funktioniert nicht, wenn Schnittstellenimplementierungen vorhanden sind, die nur zur Laufzeit bekannt sind. Es markiert fälschlicherweise die Implementierungsklassen als nicht verwendet :(
Cid
2
@Cid interessant. Ich habe Ihren Kommentar zur besseren Sichtbarkeit in die Antwort aufgenommen.
VonC
Es wäre großartig, wenn ein Maven-Plugin diese Funktionalität enthalten würde !!!
JRichardsz
@ JRichardsz Ich stimme zu. Nur maven.apache.org/plugins-archives/maven-shade-plugin-3.1.1/… kommt meines Wissens nahe.
VonC
1

Mit ProGuard kann ein Bericht über nicht verwendete Klassen / Methoden gedruckt werden. Es ist jedoch ein Schmerz, alle abhängigen Gläser zu liefern.

Diese Optionen listen nicht verwendete Klassen, Felder und Methoden in der Anwendung mypackage.MyApplication auf:

-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[]);
}
Rustyx
quelle
Ich hatte die gleiche Idee! Haben Sie eine gute Möglichkeit gefunden, alle Abhängigkeiten für ein Maven-Projekt anzugeben?
Zero3
@ Zero3 Als Option können Sie das Maven-Abhängigkeits-Plugin verwenden, um alle Abhängigkeiten aufzulisten oder in ein lokales Verzeichnis zu extrahieren. Führen Sie dann Windows oder ein Linux-Skript aus, das die Jars im Verzeichnis auflistet und die JAR-Listenparameterzeichenfolge generiert und Proguard ausführt.
jmu
-1

Verwenden Sie einfach Analysieren | Inspektionscode mit aktivierter entsprechender Inspektion (nicht verwendete Deklaration unter Deklarationsredundanzgruppe).

Mit IntelliJ 11 CE können Sie jetzt "Analyse | Inspektion nach Namen ausführen ... | Nicht verwendete Deklaration" ausführen.

Hasan Jamshaid
quelle
Die Frage fragt nach einer Eclipse-Lösung. PS, ich habe dich nicht negiert, nur einen Kommentar hinzugefügt.
luis.espinal