2010-02-11 9 views
9

Tengo que limpiar un proyecto anterior y el conocimiento general aquí es que el proyecto contiene muchos códigos no utilizados que podríamos eliminar. Eso ahorraría algunos dolores de cabeza y facilitaría el mantenimiento.Buscar código no utilizado en un proyecto modularizado Maven

Encontré el plugin Eclipse Core Tools que parece una gran herramienta, pero en nuestro caso tenemos un proyecto Maven2 que se divide en 3 módulos. Parece que no puedo ejecutar "encontrar miembros sin referencias" en el proyecto principal, y cuando lo ejecuto en uno de los módulos, ignora por completo el hecho de que otros módulos pueden estar utilizando algunos de los miembros públicos.

¿Alguien ha superado ese problema? ¿O encontraste otra forma de abordar esto?

Gracias.

Respuesta

9

cuando lo ejecuto en uno de los módulos que ignora completamente el hecho de que otros módulos podrían estar utilizando algunos de los miembros del público ...

Sí, ese es el problema, y ​​por eso hay no es una forma realmente determinista de encontrar el código no utilizado tal como lo recuerda @cletus en this previous answer.

Habiendo dicho esto, herramientas como PMD (y su regla de unusedcode), Findbugs puede ayuda de todos modos. Los IDEs como IntelliJ (las inspecciones de código Java están completamente disponibles en la Edición de Comunidad) y Eclipse también tiene un buen soporte para esto.

Para IntelliJ, echar un vistazo a Global unused declaration inspection:

Gracias a las mejoras en los índices internos detrás del motor de penetración código de IntelliJ IDEA, Maia será capaz de poner de relieve al instante algunas clases Java, métodos y campos que son no utilizado en todo el proyecto.

para Eclipse, no es el UCDetector plugin:

UCDetector (detector de código innecesario) 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.

alt text http://www.ucdetector.org/images/popup.png

Pero confieso que no estoy seguro de si alguna de estas soluciones realmente funciona a través de módulos. En ese caso, mi sugerencia sería poner todo el código en un proyecto de "conserje" (sí, esto es feo pero bueno ...) y ejecutar las herramientas en él (y limpiar los módulos en función de los resultados obtenidos).

+0

Esa es una respuesta muy agradable y detallada.Gracias, Pascal. – Lancelot

+0

@Lancelot De nada. ¡Buena suerte! –

1

He utilizado el complemento Core Tools para encontrar el código no utilizado en muchos módulos maven diferentes. La ruta de compilación para cada uno de los proyectos debe configurarse correctamente para que Eclipse sepa que existen dependencias entre los proyectos. Si importa los proyectos usando el plugin m2eclipse, los configurará automáticamente.

Creo que la manera en que funciona el complemento Core Tools es que automatiza el proceso que realiza la vista "Call Hierarchy". Seleccione un método y ejecute "Jerarquía de llamadas" (ctrl-alt-H) si no hay personas que llaman, entonces las Herramientas básicas deben marcar el método como no llamado.

Cuestiones relacionadas