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.
fuente
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.
fuente
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.
fuente