sast reglas pruebas para herramientas herramienta fuente estático estatico dinámico código codigo automatizado análisis analisis code-analysis

code-analysis - reglas - pruebas codigo estatico



¿Qué herramientas usas para el análisis de código estático? (14)

Esta pregunta sobre Complejidad Ciclomática me hizo pensar más sobre el análisis de código estático . 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 qué personas han intentado anteriormente?

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


Checkstyle, Findbugs y 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.


La única vez que uso alguna 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.


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

@Thomas Owens: Creo que te refieres a Splint.


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

http://www.ndepend.com/

HTH.


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


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 en su lugar para asegurarse de que no haya errores de pelusa o advertencias, entonces es útil tal vez atrapar algunos errores que de otra manera estarían ocultos.


Utilizamos Coverity Prevent en Palm para el análisis de código C y C ++, y ha hecho 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 un libro blanco sobre nuestro uso del producto en su sitio si desea leer más sobre nuestra experiencia.


Mis administradores son realmente baratos, así que solo puedo usar herramientas realmente baratas:

1) CCCC (contador de códigos C / C ++): varios resultados relacionados con el número de líneas (frente a líneas de comentarios, complejidad ciclomática, flujo de información, ...) 2) Semian: 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.


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


He utilizado bastantes herramientas de análisis estático de código abierto y comerciales en varios idiomas, y creo que la discusión en general se enmarca en un concepto conocido como deuda técnica (sobre la que detalla este artículo ).

Sin embargo, para una respuesta rápida, estos son mis favoritos por idioma:


He estado configurando un sistema de compilación Hudson de integración continua (CI) para mis proyectos de iPhone Objective-C (aplicaciones de iOS) y he compilado una variada lista de herramientas que se pueden usar para analizar mis proyectos durante una compilación:

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

  • Doxygen : herramienta de generación de documentación gratuita que también genera diagramas de dependencia de clase. Proyecto activo: visite http://www.stack.nl/~dimitri/doxygen

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

  • CLOC (conteo de 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. - visita http://cloc.sourceforge.net

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

  • AnalysisTool : herramienta gratuita de análisis de código 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. - visita http://www.karppinen.fi/analysistool



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

Recientemente hemos estado hablando acerca de verificar 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 de GrammaTech .

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