2009-06-09 13 views
11

Tengo una base de código bastante nueva escrita en C++. Ya estoy empezando a ver algunas malas prácticas arrastrándose en el proyecto (archivo de clase con más de 1000 líneas de código, funciones con muchos parámetros, ...).Métricas y advertencias de código para C++

Me gustaría detenerme en esto de inmediato con algunas herramientas automáticas que pueden engancharse en la compilación y comprobar las malas prácticas de codificación. ¿Qué sugerencias tienes para tales herramientas? Me interesan las métricas, pero estoy realmente más interesado en un tipo de pelusa estilística que destaque funciones con 37 parámetros.

+0

duplicado: http://stackoverflow.com/questions/93260/a-free-tool-to- check-cc-source-code-against-a-set-of-coding-standards –

Respuesta

3

Como con los demás, no estoy seguro de una herramienta que juzgue el estilo. Pero CCCC producirá numerosas métricas que pueden ayudarlo a encontrar los lugares problemáticos. Métricas como la complejidad ciclomática le brindarán evidencia cuantitativa donde se encuentran los puntos problemáticos. La desventaja es que tendrá que incorporar estas métricas con una guía de estilo que adopte o cree por su cuenta.

+1

Tenga en cuenta que por ahora CCCC está anticuado. La última actividad en su sitio web es de 2002 y solo admite el marco de Microsoft Visual Studio 2003. También tuve problemas al ejecutarlo, ya que no era demasiado amigable para el usuario. Recomiendo mucho SourceMonitor: http://www.campwoodsw.com/sourcemonitor.html, como sugirió Torial. – ForceMagic

+1

@ForceMagic: Creo que CCCC sigue siendo una opción viable cuando no se ejecuta Windows, ya que SourceMonitor parece necesitar Windows. También hay un plugin de Jenkins para conectarlo a una construcción y visualizar regresiones. –

6

Disculpa, no te puedo ayudar con respecto al estilo, pero es una gran herramienta de métricas que admite C++ y es free: SourceMonitor.

En particular, se conseguirá una buena información como la complejidad ciclomática (que me parece de más valor por mala práctica de programación de número de parámetros), así como líneas de código, el porcentaje de los comentarios, la función más larga, etc.

Pruébelo, y es muy rápido también.

+1

Al utilizar esta herramienta, pruebe * Complejidad modificada *. Estoy citando la ayuda de SourceMonitor: * La opción métrica Complejidad modificada cambia la forma en que se define la métrica de complejidad para los nuevos puntos de control agregados a un proyecto. Cuando esta opción está habilitada, SourceMonitor calcula la métrica de complejidad agregando una a la complejidad de cada instrucción de cambio. Las sentencias case dentro de una sentencia switch se analizan para otras métricas, pero las sentencias Case no contribuyen a la complejidad (como lo hacen cuando esta opción no está habilitada) *. – Wolf

-1

Asegúrese de compilar siempre con la opción -Compilador de pared y hacer que practique que no se debe registrar ningún código si las advertencias persisten.

Busque un estilo estándar a seguir como this one.

+1

'-Wall' no advierte automágicamente de los problemas mencionados por OP (funciones largas, alta complejidad ciclomática). –

+0

Su * este * enlace está roto, lo que hace que toda la frase sea inútil. Tal vez está haciendo referencia a la [Guía de estilo de Google C++] (https://google.github.io/styleguide/cppguide.html)? – Wolf

1

Metrix ++ coincide con este caso de uso, y tiene varias métricas es probable que esté interesado en ver aquí:. http://metrixplusplus.sourceforge.net/

+1

Generalmente se considera que es una buena forma de hacerlo muy explícito cuando se recomienda su propio producto. –

+0

Gracias. Lo sabrá y lo hará la próxima vez. La respuesta aún coincide con la pregunta. – Andrew

Cuestiones relacionadas