Estoy mirando un código C / C ++ que parece tener funciones definidas, pero nunca utilizadas. Este es un proceso bastante tedioso para rastrear el código y verificarlo. He hecho algunas encuestas y hay varias herramientas que pueden hacer este tipo de análisis.
¿Alguien puede compartir alguna experiencia o consejos sobre qué herramientas y técnicas son mejores o si no se utilizan métodos alternativos para verificar este código?
Respuestas:
Existen algunas herramientas que pueden encontrar 'código muerto' en sus programas. Puede leer sobre ellos en los hilos de desbordamiento de pila aquí y aquí . un pequeño resumen:
use los indicadores del compilador gcc -Wunused y -Wunreachable-code, y luego use una herramienta como lcov para encontrar los métodos no utilizados.
fuente
¿Rastro? ¿Por qué? Simplemente coméntelos y revise el compilador. Le dirá rápidamente si comentó alguna función a la que se hizo referencia en otro lugar.
fuente
Si está buscando activamente código no utilizado, use algo sugerido por Jake223 .
Pero, si simplemente se topa con algún código que parece no estar usado, puede hacer una búsqueda del nombre del método en su base de código. Si es un método privado, su trabajo es fácil, busque solo en la clase actual. Si es un método público, busca todo. Si es una clase completa, busque su nombre en todo su código.
¿No golpear? Perfecto. Eliminar el código y ejecutar pruebas . Tienes pruebas, ¿no? Luego, confirme los cambios en su sistema de versión de documentos . Usas uno, ¿no? De esa manera, si descubre, alguna vez, que lo necesita de nuevo, simplemente revierte un cambio.
Eliminar el código debería ser algo que haces todos los días. Tal vez refactorice algún código y elimine el antiguo. O encuentre el código antiguo no utilizado y elimínelo. E incluso si no tiene copias de seguridad, ¿qué tan difícil es reescribir una función o dos? Y la segunda vez seguramente los escribirás mejor que antes.
fuente
A menos que esté buscando problemas (es decir, sabe que deberían llamarse) por qué molestarse. Si no se llaman genuinamente, probablemente serán eliminados por el enlazador, y en cualquier caso el espacio desperdiciado no es significativo. Por otro lado, si los elimina y luego descubre que eran necesarios (tal vez en alguna configuración del compilador que no conocía), tendrá más trabajo para recuperarlos. Esto es especialmente difícil si la eliminación y el redescubrimiento están separados por mucho tiempo.
fuente
Mi IDE de elección es Eclipse, y aunque es torpe y un poco difícil de configurar al principio, vale la pena el esfuerzo teniendo en cuenta todas las herramientas que obtengo. Una de esas herramientas (y no tengo idea de cuál es su nombre oficial) le informa sobre el código no utilizado, como clases, funciones, variables, etc. El IDE simplemente muestra una línea amarilla debajo de la declaración. No estoy 100% seguro de si esto funciona con proyectos de varios archivos, ¡pero siempre puedes intentarlo!
fuente
Los IDE generalmente tienen esta característica bien implementada y funciona de manera predeterminada (por lo general, se puede desactivar).
Cualquiera sea el método que elija de las otras respuestas para encontrar el código muerto, siempre tenga en cuenta los problemas de reflexión. Se puede acceder a algunos métodos / campos solo a través de la reflexión. Eliminar esos métodos no activará ninguna alarma, excepto en tiempo de ejecución.
Si tiene pruebas (buenas) escritas para sus proyectos, serán de gran valor en esta situación.
fuente
Puede usar Cppcheck para este propósito:
fuente