Sistema LINT incorporado

8

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.

Kortuk
fonte

Respostas:

4

Eu usei fiapos no passado e achei útil. No entanto, tive que parar de usá-lo, pois mudei para um projeto maior que não estava usando. Isso dificultou o uso do lint, devido à interconexão do código. O maior problema com o fiapo é configurá-lo para remover falsos positivos e não se importa. Pode ser melhor agora que eles fizeram outro lançamento no ano passado.

Uma empresa com a qual trabalho pegou esse grande projeto e o colocou no analisador estático da Coverity. No entanto, é uma grande quantia de dinheiro para usar, portanto não é recomendado para pequenas empresas.

Jay Atkinson
fonte
Eu li um que tenho que esperar gastar com antecedência para que ele pare de lançar falsos positivos. Que fiapo você escolheu usar na época?
Kortuk
Na época era a versão 8.0.
Jay Atkinson
Você sabe qual empresa foi criada, existem muitos programas Lint diferentes por aí. Foi-me dito que ele é chamado de cotão por causa dos pequenos pedaços de cotão que o compilador perde.
Kortuk
1
Desculpe, o PC-LINT de Gimpel. O interessante é que eles pelo menos ajudam a domar a saída, alguns com alguns conjuntos de regras predefinidos com base no compilador e editor que você usa. Eles estão disponíveis para download em seu site: gimpel.com
Jay Atkinson
Se a sua nova base de código-fonte está divulgando muitos "falsos positivos", infelizmente, ela geralmente está quebrada.
Tim Williscroft
6

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.

Toby Jaffey
fonte
a maioria dos sistemas com os quais trabalho estão na faixa de 50 mil linhas de código.
Kortuk
3

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.

J. Polfer
fonte