2009-03-20 5 views
63

J'ai un grand projet Eclipse dans lequel il existe plusieurs classes qui, bien qu'elles aient cessé d'être utilisées n'importe où, n'ont jamais été marquées @Deprecated.Recherche de classes inutilisées dans un projet Java Eclipse

Comment trouver facilement tout cela?

+1

en double possible [Comment trouver le code utilisé/mort dans des projets java] (http: // stackoverflow. com/questions/162551/how-to-find-inutilisé-dead-code-in-java-projects) – PhoneixS

Répondre

79

J'aime aussi utiliser UCDetector:

screenshot

UCDetector (Code unecessary Detector) est un Open Source Eclipse PlugIn outil pour trouver unecessary (mort) code java public. Il essaie également de rendre le code final, protégé ou privé.

Bonus: il peut également trouver des dépendances cycliques entre les classes

(également number of other tools - y compris Findbugs - sait comment faire faire aussi)


caveat: Cid mentionne in the comments:

UCDetector ne fonctionnera pas s'il existe des implémentations d'interface qui ne seront connues qu'au moment de l'exécution.
Il marque incorrectement les classes d'implémentation comme inutilisées.


Mise à jour 2017: analyse de code statique a évolué un peu en 8 ans.
En utilisant SonarLint for Eclipse, vous pouvez utiliser le dernier SonarJava 4.6 plugin pour analyser votre code.
Il va find dead code.

+4

Est-ce que cela fonctionne pour les projets Android? J'ai téléchargé, installé, et le menu UCDetector est introuvable :( – Jay

+3

@VonC - UCDetector ne fonctionnera pas s'il y a des implémentations d'interface qui ne seront connues qu'à l'exécution.Il marque incorrectement les classes d'implémentation comme inutilisées :( – Cid

+2

@ Cid intéressant.J'ai inclus votre commentaire dans la réponse pour plus de visibilité – VonC

1

ProGuard peut être utilisé pour imprimer un rapport de classes/méthodes non utilisées. C'est une douleur de fournir toutes les jarres dépendantes, cependant.

Ces liste des catégories d'options inutilisées, les champs et les méthodes du mypackage.MyApplication d'application:

-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

J'ai eu la même idée! Avez-vous trouvé un moyen agréable de spécifier toutes les dépendances pour un projet Maven? – Zero3

+0

@ Zero3 en option vous pouvez utiliser le plugin maven dependency pour lister toutes les dépendances ou les extraire dans un répertoire local puis lancer un script windows ou linux qui listera les jars dans le répertoire et générera la chaîne de paramètres jar list et lancera proguard. – jmu

0

utiliser juste Analyse | Inspecter le code avec l'inspection appropriée activée (déclaration inutilisée sous le groupe de redondance de déclaration).

L'utilisation IntelliJ 11 CE, vous pouvez maintenant "Analyse | Run inspection par nom ... | déclaration non utilisée"

Questions connexes