Atualmente, desenvolvo sistemas embarcados usando vários compiladores diferentes, os mais comuns provenientes de sistemas IAR.
Meu amor pelo hardware é o que impulsiona a instalação de sistemas e firmware. No entanto, parece que me falta um pouco de engenharia de software.
Eu já li muitas vezes que um bom Lint é inestimável para código. Gostaria de saber se alguém aqui usa um Lint, qual é o Lint e quanto ajuda na detecção de erros.
fonte
Não usei fiapos, mas acho que os avisos do GCC podem detectar muitos erros de programação.
Aqui está o meu CFLAGS preferido
CFLAGS + = -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align externs -Wshadow -Wconversion -Wwrite-strings -Wno-conversion -Wextra -Wstrict-aliasing -Wcast-qual
Também experimentei o Sparse de Linus Torvalds para análise estática. Mas acho que esse tipo de ferramenta é mais útil para grandes sistemas.
fonte
Devo admitir que não tive muita utilidade em algum tipo de projeto de microcontrolador / microprocessador.
No meu projeto incorporado atual, que usa C ++ em um PC / 104 SBC baseado em Linux, usamos cppcheck (funciona com C também!). Funciona muito bem, embora tenha problemas com árvores de herança de classe complicadas. E isso forneceu algum valor - é bom para verificar possíveis locais onde possam ocorrer vazamentos de memória. Mas a maioria das coisas que observou foi estilística - use pré-incremento em vez de pós-incremento em loops for-loops, esse tipo de coisa.
Também usei um fiapo on - line para Javascript ao desenvolver aplicativos para um sistema de software corporativo. Era absolutamente inestimável lá, pois não havia ferramentas de depuração para verificar erros de sintaxe nessa configuração.
fonte