Estoy en una situación en la que estoy obligado a hacer al menos un esfuerzo para eliminar el código nunca utilizado de mi código fuente. La preferencia general es usar una herramienta de análisis de código estático. Hemos tenido una gran suerte con esto en otros proyectos, pero la gente de la que escucho son en su mayoría desarrolladores de C/C++ que trabajan en el código de nivel de dispositivo.¿Qué tan bien funciona el análisis de código estático con Spring y otras abstracciones?
Soy un desarrollador web que trabaja en un sistema Java EE. La herramienta favorita para el análisis es Coverity Prevent, aunque probablemente podría abogar por otra cosa si pudiera defender que era más apropiado para la tecnología con la que estamos desarrollando.
Me resulta dudoso: ¿qué efecto tiene el análisis de código estático para el código muerto, cuando se está ejecutando contra un sistema con muchas abstracciones? Por ejemplo, utilizamos la inyección de dependencia Spring, así como JSF. En ambos casos, no hay una manera fácil de rastrear a través de las llamadas a función desde el frente hasta el final y hacer una imagen completa de lo que se llama y lo que no.
Estoy muy preocupado de que los falsos positivos en una verificación de código muerto superen el valor de ejecutar la herramienta en primer lugar.
¿Cuál es la experiencia con este escenario? ¿Logró obtener valor de una herramienta de análisis de código estático cuando su arquitectura usó muchas abstracciones? ¿Hubo algo que tuviera que hacer para que funcione con un mínimo de falsos positivos?
Esto parece más una pregunta de wiki de comunidad. –