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 .


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[]);
}

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.


Die Frage fragt nach einer Eclipse-Lösung. PS, ich habe dich nicht negiert, nur einen Kommentar hinzugefügt.
luis.espinal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.