Uso integrado del sistema LINT

8

Actualmente desarrollo sistemas embebidos utilizando varios compiladores diferentes, los más comunes provienen de los sistemas IAR.

Mi amor por el hardware es lo que impulsa los sistemas integrados y el firmware. Sin embargo, parece que me falta bastante en ingeniería de software.

He leído muchas veces que una buena pelusa es invaluable para el código. Me gustaría saber si alguien aquí usa una pelusa, qué pelusa es y cuánto ayuda a detectar errores.

Kortuk
fuente

Respuestas:

4

He usado pelusa en el pasado y la he encontrado útil. Sin embargo, tuve que dejar de usarlo cuando me mudé a un proyecto más grande que no lo estaba usando. Eso dificultaba el uso de pelusa, debido a lo interconectado que estaba el código. El mayor problema con lint es configurarlo para eliminar falsos positivos y no le importa. Puede ser mejor ahora que han hecho otro lanzamiento en el último año.

Una empresa con la que trabajo ha tomado ese gran proyecto y lo ha sometido al analizador estático de Coverity. Sin embargo, es una gran cantidad de dinero para usar, por lo que no se recomienda para pequeñas empresas.

Jay Atkinson
fuente
Leí un mensaje que tengo que esperar pasar por adelantado para que deje de arrojar falsos positivos. ¿Qué pelusa había elegido usar en ese momento?
Kortuk
En ese momento era la versión 8.0.
Jay Atkinson
¿Sabes qué compañía lo hizo? Existen muchos programas Lint diferentes. Me dijeron que se llama pelusa debido a las pequeñas piezas de pelusa que encuentra que el compilador echa de menos.
Kortuk
1
Lo siento, PC-LINT de Gimpel. Lo bueno es que al menos te ayudan a domar la salida, algunos con algunos conjuntos de reglas predefinidos basados ​​en el compilador y el editor que utilizas. Están disponibles para descargar en su sitio: gimpel.com
Jay Atkinson
Si su nueva base de código fuente está escupiendo muchos "falsos positivos", lamentablemente, generalmente está rota.
Tim Williscroft, el
6

No he usado pelusa, pero encuentro que las advertencias de GCC pueden detectar muchos errores de programación.

Aquí están mis CFLAGS preferidos

CFLAGS + = -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declaraciones -Winline -Wundef -Wnested- externs -Wshadow -Wconversion -Wwrite-strings -Wno-conversion -Wextra -Wstrict-aliasing -Wcast-qual

También probé con el Sparse de Linus Torvalds para el análisis estático. Pero, creo que este tipo de herramientas son más útiles para grandes sistemas.

Toby Jaffey
fuente
La mayoría de los sistemas con los que trabajo están en el rango de 50k líneas de código.
Kortuk
3

Debo admitir que no he tenido mucho uso con una pelusa de algún tipo en un proyecto de microcontrolador / microprocesador.

En mi proyecto incrustado actual, que usa C ++ en una PC / 104 SBC basada en Linux, hemos usado cppcheck (¡también funciona con C!). Funciona bastante bien, aunque tiene problemas con los complicados árboles de herencia de clases. Y ha proporcionado algo de valor: es bueno para verificar ubicaciones potenciales donde podrían producirse pérdidas de memoria. Pero la mayoría de las cosas que notó fueron estilísticas: use preincrement en lugar de postincrement en for-loops, ese tipo de cosas.

También utilicé una pelusa en línea para Javascript al desarrollar aplicaciones para un sistema de software empresarial. Fue absolutamente invaluable allí, ya que no había herramientas de depuración para verificar los errores de sintaxis en esa configuración.

J. Polfer
fuente