2008-08-21 44 views
31

This question en Cyclomatic Complexity me hizo pensar más acerca de static code analysis. Analizar la complejidad y consistencia del código ocasionalmente es útil, y me gustaría comenzar a hacerlo más. ¿Qué herramientas recomienda (por idioma) para dicho análisis? Wikipedia tiene una gran lista de herramientas, pero ¿con cuáles personas han intentado anteriormente?¿Qué herramientas usas para el análisis de código estático?

Editar: Como David señala, esta no es una pregunta completamente no formulada cuando se trata de C/UNIX based tools.

Respuesta

0

La única vez que he usado una de esas herramientas es Split (lenguaje de programación C). Pensé que era útil, pero de ninguna manera era un usuario de poder y creo que apenas arañé la superficie de lo que podría hacer.

2

Utilizo mucho el plugin PMD para Eclipse. Es bastante agradable y muy configurable. CheckStyle también es bueno, si está buscando más de un ejecutor de estilo.

+0

+1 Eso es lo que utilizo también –

5

Para .Net usamos NDepend. Es una gran herramienta y se puede integrar a la construcción (utilizamos CCNet).

http://www.ndepend.com/

HTH.

1

Lint es el único que he usado en una posición anterior. No estaba mal, la mayoría de las cosas que sugería eran buenas capturas, algunas no tenían mucho sentido. Mientras no tenga un proceso implementado para asegurarse de que no haya errores de pelusa o advertencias, entonces es útil quizás detectar algunos errores ocultos

2

El estilo de comprobación, los errores de búsqueda y el PMD funcionan bastante bien en Java. Actualmente estoy muy contento con PMD corriendo en NetBeans. Tiene una GUI bastante simple para administrar las reglas que desea ejecutar. También es muy fácil ejecutar el comprobador en un archivo, un paquete completo o un proyecto completo.

2

Obviamente, la respuesta depende de los lenguajes de programación. UNO es bueno para los programas C.

@Thomas Owens: Creo que se refería a Splint.

1

Utilizamos Programming Research QAC para nuestro código C. Funciona bien

Recientemente hemos estado hablando sobre el análisis de algunos de los analizadores de código más avanzados y estáticos/dinámicos como Coverity's Prevent o la herramienta de análisis por GrammaTech.

Afirman que no solo realizan análisis estáticos sino que también encuentran errores de tiempo de ejecución, etc. Se supone que un punto de venta importante son menos falsos positivos.

6

para C y Objective-C, también se puede utilizar el LLVM/ClangStatic Analyzer.

Es de código abierto y en desarrollo activo.

1

Utilizamos Coverity Prevent en Palm para C y C++ análisis de código, y se hace un gran trabajo al descubrir algunos errores ocultos en nuestro código.También encuentra que es probable que no haya muchos problemas, pero es fácil marcarlos como "no se corregirá" o "no es un problema" en la base de datos de códigos que genera la herramienta. Es costoso, pero ocasionalmente la empresa se ejecuta en proyectos de fuente abierta y proporciona informes a los mantenedores. Tienen a whitepaper about our use of the product en su sitio si desea leer más sobre nuestra experiencia.

3

Para C++, utilizo CppCheck. Parece que funciona bien.

1

Mis administradores son muy baratos, por lo que se puede usar sólo herramientas muy baratas:

1) CCCC (C/C++ Código contador): Varios resultados relacionados con el número de líneas (líneas de frente de los comentarios, la complejidad ciclomática , Flujo de información, ...) 2) Semian: el buscador de duplicación de código más rápido que he probado. 3) LOC Metrix: No es muy útil, pero puede ayudar a hacer un punto.

0

He utilizado bastantes herramientas de análisis estático de código abierto y comerciales en varios idiomas y encuentro que la discusión en general se ajusta bajo el paraguas de un concepto conocido como deuda técnica (which this article goes into detail about).

Sin embargo, para una respuesta rápida, aquí están mis favoritos por idioma:

+0

Gracias Andrew, yo no sabía CodePro. ¡Parece genial! – alcor

23

He estado configurando una integración continua de Hudson (IC) del sistema de construcción para mis proyectos iPhone (iOS) Objective C-, y han compilado una lista variada de herramientas que se pueden utilizar para analizar mis proyectos durante una acumulación:

  • Clang analizador estático: herramienta independiente, actualizada y gratuita que atrapa más problemas que la versión de Clang incluida con Xcode 4. Proyecto activo. - visite http://clang-analyzer.llvm.org

  • Doxygen: herramienta gratuita de generación de documentación que también genera diagramas de dependencia de clase. Activo proyecto - visita http://www.stack.nl/~dimitri/doxygen

  • HFCCA (analizador de complejidad ciclomática sin cabecera): script Python libre para calcular la complejidad del código, pero sin archivos de cabecera y pre-procesadores. Admite salida en formato XML para compilaciones de Hudson/Jenkins. Proyecto activo. - visitar http://code.google.com/p/headerfile-free-cyclomatic-complexity-analyzer

  • CLOC (contar líneas de código): herramienta gratuita para contar archivos, líneas de código, comentarios y líneas en blanco. Admite diferir, para que pueda ver las diferencias entre compilaciones. Proyecto activo. - visitar http://cloc.sourceforge.net

  • SLOCCount (líneas de código fuente de código de recuento): una herramienta gratuita para contar líneas de código y estimar los costos y el tiempo asociados con un proyecto. No parece estar activo.- visitar http://sourceforge.net/projects/sloccount y http://www.dwheeler.com/sloccount

  • AnalysisTool: herramienta de análisis de código libre que mide la complejidad del código y también genera diagramas de dependencia. No activo. No parece funcionar con Xcode 4, pero me encantaría hacerlo funcionar. - visitar http://www.karppinen.fi/analysistool

Cuestiones relacionadas