tecnicas sonar reglas pruebas inspeccion herramientas fuente estático estatico código como codigo analizar analisis c++ coding-style static-analysis

c++ - reglas - sonar analisis de codigo estatico



¿Qué herramientas de análisis estático de C++ de código abierto están disponibles? (14)

Alguien más mencionó -Weffc ++, pero esa es en realidad una de las únicas advertencias de GCC que no enciendo de forma predeterminada. Sin embargo, el conjunto de advertencias que enciendo es la herramienta de análisis estático más importante de mi kit. Puede ver la lista completa de advertencias recomendadas .

En resumen:

-pedante -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat = 2 -Winit-self -Wlogical-op -Wmissing-declaations -Wmissing-include-dirs -Wnoexcept -Wold -style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow = 5 -Wswitch-default -Wundef -Werror -Wno-unused

Tenga en cuenta que algunos de estos requieren una nueva versión de gcc, por lo que es posible que deba eliminarlos de su lista si se queda atrás en 4.5 o algo así.

Java tiene algunas muy buenas herramientas de análisis estático de código abierto como FindBugs , Checkstyle y PMD . Esas herramientas son fáciles de usar, muy útiles, se ejecutan en múltiples sistemas operativos y son gratuitas .

Los productos comerciales de análisis estático C ++ están disponibles. Aunque tener tales productos es excelente, el costo es demasiado alto para los estudiantes y generalmente es bastante difícil obtener una versión de prueba.

La alternativa es encontrar herramientas de análisis estático de C ++ de código abierto que se ejecutarán en múltiples plataformas (Windows y Unix). Al usar una herramienta de código abierto, podría modificarse para ajustarse a ciertas necesidades. Encontrar las herramientas no ha sido tarea fácil.

A continuación se muestra una breve lista de las herramientas de análisis estático de C ++ que otros encontraron o sugirieron.

¿Cuáles son algunas otras herramientas de análisis estático de C ++ de código abierto que todos conocen y pueden recomendarse?

Algunos enlaces relacionados.


Con respecto al compilador GNU, gcc ya tiene una opción incorporada que habilita advertencias adicionales para aquellos de -Wall. La opción es -Weffc ++ y trata sobre las violaciones de algunas pautas de Scott Meyers publicadas en sus libros " Efectivo y más efectivo C ++ ".

En particular, la opción detecta los siguientes elementos:

  • Defina un constructor de copia y un operador de asignación para clases con memoria asignada dinámicamente.
  • Prefiero la inicialización a la asignación en constructores.
  • Hacer destructores virtuales en clases base.
  • Haga que "operator =" devuelva una referencia a * this.
  • No intente devolver una referencia cuando deba devolver un objeto.
  • Distinguir entre las formas de prefijo y postfijo de operadores de incremento y decremento.
  • Nunca sobrecargue "&&", "||", o ",".

Debes probar oo-browser porque tiene una integración increíble con xemacs


Doxygen realiza un análisis de flujo de control y genera gráficos. Puede que esos no sean lo que estás buscando, pero los he encontrado útiles para mirar.



Hemos estado trabajando en un plugin de CDT de Eclipse llamado metriculator. Todavía está en desarrollo, pero ya se han implementado algunas métricas importantes (por ejemplo, LSLOC, McCabe, EfferentCoupling).

Consulte http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation para obtener más detalles, como demostración de video y documentación.

La última versión nocturna está disponible para su instalación a través del sitio de actualización en: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

Descripción adicional

Metriculator analiza estáticamente el código fuente de C ++ y genera métricas de software. Las métricas se implementan como comprobadores de Codan. Los resultados del análisis se pueden explorar en una vista separada. Cada métrica tiene propiedades configurables (por ejemplo, un umbral para ''líneas máximas de código por función''). Si se excede este umbral, se informará un problema y se creará un marcador en el editor de código fuente.

Con el métrico puedes:

  • analizar archivos / carpetas / proyectos de C ++
  • definir umbrales de métricas y habilitar / deshabilitar métricas usando la página de preferencias de Codans
  • tener marcadores de problemas en los editores de código fuente
  • explorar resultados métricos
  • exportar resultados métricos como nube de etiquetas (disponible como característica opcional a través del sitio de actualización)

Actualmente el métrico viene con las siguientes métricas:

  • McCabe (complejidad ciclomática)
  • Acoplamiento eferente por tipo
  • Fuente lógica de líneas de código
  • Número de miembros por tipo
  • Número de parámetros por función



Si por código abierto, realmente quiso decir "gratis", entonces el análisis prefast de Microsoft es bueno. Por supuesto Windows solamente. Está totalmente integrado en Visual Studio y el compilador. p.ej:

cl / analizar Sample.cpp


También se pueden codificar extensiones de GCC en MELT (un lenguaje específico del dominio diseñado para extender GCC) o complementos de GCC en C (mucho más difícil) para hacer un análisis personalizado.


Splint parece llenar la cuenta para C.

Si no especificara el código abierto, diría que PCLint Gimpel Software es probablemente una de las mejores herramientas disponibles para la verificación de código estático en C ++. Pero, por supuesto, no es de código abierto.

Mac OS X:

brew install splint


CppCheck es de código abierto y multiplataforma.

Mac OS X:

brew install cppcheck


PREFast de Microsoft también está disponible en el Kit de controladores de Windows. La versión 7.0 se puede descargar here .

Los documentos de Microsoft indican que solo debe ejecutarse con el código del controlador, pero esta (antigua) publicación del blog establece los pasos para ejecutarlo. ¿Quizás puede integrarse en un proceso de construcción normal?