2009-06-15 26 views
13

¿Alguien ha hecho alguna comparación sobre las herramientas de análisis de código estático disponibles para Linux? ¿Cuáles son las fortalezas y debilidades de las siguientes herramientas:Comparación de herramientas de análisis de código estático en Linux?

  • Lintian,
  • minimalista,
  • férula,
  • RATAS,
  • El uso de la opción -Wall.

¿Consideraría que usar solo una de estas herramientas es adecuado?

No estoy buscando recomendaciones (puedo encontrar muchas de ellas) sino comparaciones directas entre las herramientas disponibles.

Respuesta

6

Por supuesto, está el wikipedia list. Esa lista es solo eso, una lista, y no una comparación, pero una de the links en la página parece responder al menos parcialmente a su pregunta y (muy brevemente) menciona algunos de los programas que enumeró.

4

El uso de -Wall debe ser una cuestión de rutina para cada desarrollador c. Además, usar adicionalmente -Wextra podría ser una buena idea.

férula puede encontrar otras debilidades potenciales en su aplicación, pero en la mayoría de los casos (!) Que imprime falsas advertencias de lo que tiene que entender realmente lo férula significa con lo que la advertencia y la mayoría de veces que se tiene que insertar anotaciones como/cabo/o/sin usar/en su código para que la tablilla no le grite. Con la férula, debe filtrar las advertencias que no son importantes para usted, de lo contrario, pasaría demasiado tiempo analizando y desplazándose a través de muchos mensajes.

Tenga en cuenta que estas herramientas solo verifican el código estático. Debería usar valgrind para encontrar fugas de memoria de tiempo de ejecución.

+0

Sí, tengo experiencia en comprobadores estáticos en el mundo de Windows, así que conozco el problema de los falsos positivos. – Makis

3

He usado la férula un par de veces y me pareció demasiado prolija: I deshabilité la mayoría de las advertencias. Creo que esta herramienta puede proporcionar resultados interesantes si anota correctamente su código. Sin la anotación de código , esta herramienta no es muy útil.

A veces uso escaso y lo considero una herramienta valiosa. Proporciona una envoltura alrededor de gcc, llamada "cgcc". Como resultado, es simple ejecutar disperso en un programa incluso si contiene muchos archivos fuente (export CC=cgcc y voilà). Este programa funciona mejor si está analizando Código fuente del kernel.

Como nota al margen, también uso pmccabe de forma regular. pmccabe no es un analizador estático : calcula la complejidad ciclomática. Puede ayudarle a encontrar las funciones más complejas en su programa. Esas funciones son propensas a errores y difíciles de probar.

Cuestiones relacionadas