2009-03-20 14 views
63

Tengo un gran proyecto de Eclipse en el que existen varias clases que, aunque dejaron de usarse en cualquier lugar, nunca se marcaron @Deprecated.Buscar clases no utilizadas en un proyecto de Java Eclipse

¿Cómo puedo encontrar fácilmente todo esto?

+1

posible duplicado de [¿Cómo encontrar código no utilizado/muertos en proyectos Java] (http: // stackoverflow. com/questions/162551/how-to-find-unused-dead-code-in-java-projects) – PhoneixS

Respuesta

79

también me gusta usar UCDetector:

screenshot

UCDetector (Detector unecessary Código) es un Eclipse de código abierto herramienta plugin para encontrar innecesario (muerto) el código de Java pública. También intenta hacer código final, protegido o privado.

Bono: también puede encontrar dependencias cíclicas entre las clases

(también un number of other tools - incluyendo Findbugs - no sabe cómo hacerlo también)


Advertencia: Cid menciona in the comments:

UCDetector no funcionará si hay implementaciones de interfaz que se conocerán solo en tiempo de ejecución.
Marca incorrectamente las clases de implementación como no utilizadas.


Actualización 2017: análisis de código estático ha evolucionado bastante en 8 años.
Usando SonarLint for Eclipse, puede usar la última SonarJava 4.6 plugin para analizar su código.
Será find dead code.

+4

¿Funciona esto para proyectos de Android? Descargué, instalé, y el menú de UCDetector no se encuentra :( – Jay

+3

@VonC - UCDetector no funcionará si hay implementaciones de interfaz que se conocerán solo en tiempo de ejecución. Marque incorrectamente las clases de implementación como no utilizadas :( – Cid

+2

@ Cid interesante. He incluido tu comentario en la respuesta para obtener más visibilidad. – VonC

1

ProGuard se puede utilizar para imprimir un informe de clases/métodos no utilizados. Sin embargo, es un dolor suministrarle todos los frascos dependientes.

Estas opciones no utilizadas lista de clases, campos y métodos en la aplicación 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

¡Tenía la misma idea! ¿Has encontrado una buena manera de especificar todas las dependencias para un proyecto Maven? – Zero3

+0

@ Zero3 como una opción puede usar el complemento de dependencia maven para listar todas las dependencias o extraerlas a algún directorio local y luego ejecutar script windows o linux que listará los archivos jar en el directorio y generará la cadena de parámetros jar list y ejecutará proguard. – jmu

0

Sólo tiene que utilizar Analizar | Inspeccionar el código con la inspección adecuada habilitada (declaración no utilizada en el grupo de redundancia de declaración).

El uso de IntelliJ 11 CE puede ahora "Analizar | Ejecutar Inspección por nombre ... | declaración no utilizada"

Cuestiones relacionadas