74 votes

Trouver les classes inutilisées dans un projet Java Eclipse

J'ai un grand projet Eclipse dans lequel il existe plusieurs classes qui, bien qu'elles ne soient plus utilisées nulle part, n'ont jamais été marquées @Deprecated.

Comment puis-je trouver facilement tous ces éléments ?

1 votes

88voto

VonC Points 414372

J'aime aussi utiliser Détecteur UCD :

screenshot

UCDetector (Unecessary Code Detector) est un outil plug-in open source pour eclipse qui permet de trouver le code java public inutile (mort). Il essaie également de rendre le code final, protégé ou privé.

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

(également un plusieurs autres outils -- y compris Findbugs -- sait comment faire cela aussi)


Caveat : Cid mentionne dans les commentaires :

UCDetector ne fonctionnera pas s'il existe des implémentations d'interfaces 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 : l'analyse statique du code a bien évolué en 8 ans.
Utilisation de SonarLint pour Eclipse vous pouvez utiliser la dernière version du Plugin SonarJava 4.6 pour analyser votre code.
Elle trouver le code mort .

4 votes

Cela fonctionne-t-il pour les projets Android ? J'ai téléchargé, installé, et le menu UCDetector est introuvable :(

3 votes

@VonC - UCDetector ne fonctionnera pas s'il existe des implémentations d'interfaces qui ne seront connues qu'au moment de l'exécution. Il marque à tort les classes d'implémentation comme inutilisées :(

2 votes

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

1voto

rustyx Points 2722

ProGuard peut être utilisé pour imprimer un rapport des classes/méthodes inutilisées. Cependant, il est difficile de lui fournir tous les jars dépendants.

Ces options énumèrent les classes, champs et méthodes inutilisés dans l'application 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 votes

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

0 votes

@Zero3 en option, vous pouvez utiliser le plugin de dépendance maven pour lister toutes les dépendances ou les extraire dans un répertoire local puis exécuter Windows ou linux script qui listera les jars dans le répertoire et générera la chaîne de paramètres de la liste des jars et exécutera proguard.

0voto

Hasan Jamshaid Points 114

Il suffit d'utiliser la fonction Analyser | Inspecter le code avec l'inspection appropriée activée (déclaration inutilisée sous le groupe de redondance des déclarations).

Avec IntelliJ 11 CE, vous pouvez désormais "Analyser | Exécuter l'inspection par nom ...". | Déclaration inutilisée"

0voto

Saik0 Points 346

Si vous cliquez avec le bouton droit de la souris sur le nom de la classe dans Eclipse, une option vous permet de trouver le nom de la classe. Reference de cette classe dans Workspace, Project, ...

J'espère que cela résoudra votre problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X