Pregunta

Estoy usando VS2008 para un proyecto C ++. El código es bastante antiguo y ha pasado por muchas manos. Hay varias jerarquías de clases, funciones, enumeraciones, etc. que ya no se utilizan.

¿Hay alguna manera de hacer que el compilador / enlazador enumere los identificadores que han sido declarados o definidos pero que no se mencionan en ninguna parte?

¿Fue útil?

Solución

PC-Lint " proyecto completo " El análisis (que analiza varios archivos juntos) puede hacer esto. No dude en ponerse en contacto conmigo si necesita ayuda para configurarlo.

Otros consejos

VS advertirá sobre los identificadores declarados dentro de una función y no utilizados, puede que tenga que pasar al nivel de advertencia 4, pero para las variables globales y la búsqueda de muchos otros problemas potenciales, haría bien en intentar pelusa o pelusa visual

No estoy seguro acerca de Visual C ++, pero el g ++ advierte sobre las variables no utilizadas. Puede intentar pasar su código a través de g ++.

PC-Lint hará esto. Sin embargo, no lo ejecutes con todo uno. Lo hice y tuve 1.2 millones de errores, lo que equivalía a ~ 5 por línea. Esto se incrementó en gran medida porque casi todas las clases de IU hacen referencia a resource.h y resource.h enumeran una gran cantidad de #defines a los que lint dice "reemplazar reemplaza por const int". Para un buen punto de partida, lea esta publicación en el blog Power of 2 .

Para las declaraciones no utilizadas más obvias, un alto nivel de advertencia se encargaría del asunto.

Con respecto a la identificación de piezas de código no utilizadas, el deadstripper (que no es el centro de un drama criminal nocturno, pero el mecanismo que elimina el código no utilizado durante la vinculación) solo lo ayudará a obtener parte del camino: lo que realmente quiere es Una herramienta de análisis de cobertura de código. Existen muchos, desafortunadamente todos son bastante caros.

Un editor robusto con buen etiquetado de contexto y mecanismo de gráficos de llamadas también ayudará.

Con referencia a la publicación de Graham: FWIW Nunca he visto el " reemplazar define con const int " mensaje con archivos resource.h, aunque algunos otros (definidos previamente en la misma ubicación) pueden ser una molestia.

Independientemente, si un mensaje particular de PC-Lint se interpone en el camino de detectar lo que está buscando, es una simple cuestión desactivarlo usando -e en su archivo options.lnt. También vale la pena conocer la opción -w, que le permite establecer globalmente el nivel de advertencia (por ejemplo, -w0 + e766 desactiva todo excepto el mensaje 766).

Para símbolos y declaraciones no utilizados, querrá buscar mensajes como 755 (Información - macro global sin referencia), 758 (Información - enumeración global sin referencia), 769 (Información - constante de enumeración global no referenciado) y 1714 (Información - Función miembro no referenciada). Recuerde que estos se suprimen en el análisis de un solo archivo, por lo que deberá ejecutar un análisis completo del proyecto para verlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top