2009-03-20 8 views
63

Ich habe ein großes Eclipse-Projekt, in dem mehrere Klassen existieren, die, obwohl sie nirgends mehr verwendet wurden, nie mit @Deprecated gekennzeichnet wurden.Nicht verwendete Klassen in einem Java Eclipse-Projekt finden

Wie kann ich alle diese leicht finden?

+1

möglich Duplikat (http [Wie ungebraucht/toten Code in Java-Projekten finden]: // Stackoverflow. com/questions/162551/how-to-find-unbenutzte-tote-code-in-java-projekte) – PhoneixS

Antwort

79

Ich mag auch UCDetector verwenden:

screenshot

UCDetector (unecessary-Code Detector) ist ein Open-Source-PlugIn-Tool Eclipse unecessary (tot) -Code öffentliche Java zu finden. Es versucht auch, den Code endgültig, geschützt oder privat zu machen.

Bonus: es kann auch zyklische Abhängigkeiten zwischen den Klassen

(auch number of other tools - einschließlich Findbugs - weiß, wie das auch tun) finden


Caveat: Cid Erwähnungen in the comments:

UCDetektor funktioniert nicht, wenn es Schnittstellen-Implementierungen gibt, die nur zur Laufzeit bekannt sind.
Es markiert die Implementierungsklassen fälschlicherweise als unbenutzt.


-Update 2017: statische Code-Analyse hat sich einiges in 8 Jahren entwickelt.
Mit können Sie die neueste SonarJava 4.6 plugin verwenden, um Ihren Code zu analysieren.
Es wird find dead code.

+4

Funktioniert das für Android-Projekte? Ich heruntergeladen, installiert, und das UCDetector-Menü ist keine wo zu finden :( – Jay

+3

@VonC - UCDetector soll nicht funktionieren, wenn Schnittstellen-Implementierungen, die nur zur Laufzeit bekannt sein wird. Es markiert fälschlicherweise die Implementierungsklassen als unbenutzt :( – Cid

+2

@ Cid interessant.Ich habe Ihren Kommentar in die Antwort für mehr Sichtbarkeit enthalten .. – VonC

1

ProGuard kann verwendet werden, um einen Bericht über nicht verwendete Klassen/Methoden zu drucken. Es ist ein Schmerz, alle abhängigen Gläser zu versorgen.

Diese Optionsliste nicht verwendete Klassen, Felder und Methoden in der Anwendung mypackage.MyApplication:

-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

Ich hatte die gleiche Idee Haben Sie eine nette Möglichkeit gefunden, alle Abhängigkeiten für ein Maven-Projekt anzugeben? – Zero3

+0

@ Zero3 als Option können Sie Maven-Abhängigkeits-Plugin verwenden, um alle Abhängigkeiten aufzulisten oder sie in ein lokales Verzeichnis zu extrahieren, dann Windows oder Linux-Skript ausführen, das jars im Verzeichnis auflisten und jar-list-Parameter-Zeichenfolge generieren und proguard ausführen wird. – jmu

0

Nur Analysieren verwenden | Code mit geeigneter Überprüfung prüfen (nicht verwendete Deklaration unter Deklarationsredundanzgruppe).

Mit 11 IntelliJ CE können Sie jetzt "Analyze | Run Inspektion nach Namen ... | Ungenutzte Erklärung"

Verwandte Themen