Pergunta

Alguém fez alguma comparação sobre ferramentas de análise de código estático disponíveis para o Linux? Quais são os pontos fortes e fracos das seguintes ferramentas:

  • Lintian,
  • Escasso,
  • Tala,
  • Ratos,
  • Usando a opção -wall.

Você consideraria que usar apenas uma dessas ferramentas é adequada?

Não estou procurando recomendações (posso encontrar muitas delas), mas comparações diretas entre as ferramentas disponíveis.

Foi útil?

Solução

É claro que existe Lista da Wikipedia. Essa lista é apenas isso, uma lista, e não uma comparação, mas uma de os links Na página, parece pelo menos responder parcialmente sua pergunta e (muito brevemente) menciona alguns dos programas que você listou.

Outras dicas

Usar -wall deve ser uma questão de todos os desenvolvedores de C. Além disso, além de usar -wextra pode ser uma boa ideia.

Splint pode encontrar outras fraquezas em potencial em sua aplicação, mas na maioria dos casos (!) Imprime avisos falsos, para que você realmente entenda o que significa Splint com que aviso e na maioria das vezes você precisa inserir anotações como /Fora/ ou /não utilizado/ Em seu código, então tala não grita com você. Com a Splint, você deve filtrar avisos que não são importantes para você, caso contrário, você passou muito tempo analisando e rolando muitas mensagens.

Observe que essas ferramentas fazem apenas uma verificação de código estático. Você deve usar Valgrind para encontrar vazamentos de memória de tempo de execução.

Eu usei Splint algumas vezes e achei muito detalhado: desativei a maioria dos avisos. Eu acho que essa ferramenta pode fornecer resultados interessantes se você anotar corretamente seu código. Sem anotação de código, essa ferramenta não é muito útil.

Às vezes, uso esparso e considero uma ferramenta valiosa. Ele fornece um invólucro em torno do GCC, chamado "CGCC". Como resultado, é simples executar escassos em um programa, mesmo que ele contém muitos arquivos de origem (export CC=cgcc e voilà). Este programa funciona melhor se você estiver analisando o código -fonte do kernel.

Como sidenote, também uso o PMCCABE regularmente. O PMCCABE não é um analisador estático: calcula a complexidade ciclomática. Pode ajudá -lo a encontrar as funções mais complexas em seu programa. É provável que essas funções sejam propensas a erros e difíceis de testar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top