¿Qué herramientas de análisis estático de C ++ de código abierto están disponibles? [cerrado]

StackOverflow https://stackoverflow.com/questions/141498

Pregunta

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

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, por lo general, 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 hay una breve lista de herramientas de análisis estático de C ++ que otros encontraron o sugirieron.

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

Algunos enlaces relacionados.

¿Fue útil?

Solución

Oink es una herramienta construida sobre la parte frontal de Elsa C ++. El cerdo de Mozilla es un tenedor de Elsa / Oink.

Consulte: http://danielwilkerson.com/oink/index.html

Otros consejos

CppCheck es de código abierto y multiplataforma.

Mac OSX:

brew install cppcheck

Con respecto al compilador GNU, gcc ya tiene una opción incorporada que habilita advertencia adicional a las de -Wall. La opción es -Weffc ++ y tiene que ver con las violaciones de algunas pautas de Scott Meyers publicadas en sus libros " E + C + Eficaz más eficaces " .

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.
  • Prefiera la inicialización a la asignación en constructores.
  • Haga que los destructores sean virtuales en clases base.
  • Tener " operador = " devuelva una referencia a * esto.
  • No & # 8217; t intenta devolver una referencia cuando debes devolver un objeto.
  • Distinguir entre las formas de prefijo y postfijo de operadores de incremento y decremento.
  • Nunca sobrecargue " & amp; & amp; ", " || " ;, o ", " ;.

En desarrollo por ahora, pero clang hace un análisis de C y está diseñado para manejar C ++ durante hora. Es parte del proyecto LLVM .

Actualización : mientras que la página de destino dice "El analizador es un trabajo en progreso continuo", sin embargo ahora es documentado como un analizador estático para C y C ++.

Pregunta: ¿Cómo puedo ejecutar GCC? / ¿Clang para el análisis estático? (solo advertencias)

Opción del compilador: -fsyntax-only

Alguien más mencionó -Weffc ++, pero en realidad es 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:

  

-pedantic -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í.

John Carmack también menciona PVS-Studio en este interesante publicación de blog sobre " Análisis de Código Estático " .

Si por código abierto, realmente quiso decir "libre", entonces El análisis prefabricado es bueno. Por supuesto Windows solamente. Está completamente integrado en Visual Studio & amp; el compilador por ejemplo:

cl /analyze Sample.cpp

El trabajo de análisis estático de Mozilla merece la pena echarle un vistazo.

Splint parece llenar el proyecto de ley de C.

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

Mac OSX:

brew install splint

PREFast de Microsoft también está disponible en el Kit de controladores de Windows. La versión 7.0 es descargable aquí .

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

Hemos estado trabajando en un plugin de CDT de Eclipse llamado métrico. 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 compilació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 Damas Codan. Los resultados del análisis se pueden explorar en una vista separada. Cada la 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 en C ++
  • defina los umbrales de las métricas y habilite / deshabilite la métrica usando la página de preferencias de Codans
  • tienen marcadores de problemas en los editores de código fuente
  • explorar resultados métricos
  • exportar resultados métricos como nube de etiquetas (disponible como función opcional a través del sitio de actualización)

El métrico actual viene con las siguientes métricas:

  • McCabe (complejidad ciclomática)
  • EfferentCoupling per Type
  • Líneas de código de fuente lógica
  • Número de miembros por tipo
  • Número de parámetros por función

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

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

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

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