Pergunta

Estamos planejando usar o Splint como analisador de código para nossa base de código C. Mas nunca tentamos uma ferramenta de tala antes, por isso queremos sua contribuição sobre seus benifts, prós e contras.

Foi útil?

Solução

Ler esta postagem do blog e esses slides Para uma rápida visão geral do que pode fazer por você.

Outras dicas

As ferramentas de fiapos são úteis para encontrar problemas e erros comuns que as revisões de código tendem a perder. Minha opinião é que você não tem nada a perder ao fazer uma análise de código estático. O único lado negativo é que você pode obter muitos falsos positivos ou avisos que podem não ser importantes (ou seja, recomendação de estilo de codificação). Você só precisa desenvolver boas habilidades de filtragem. Analisadores estáticos também podem não pegar tudo, mas ei, é melhor do que nada.

Aqui está um white paper do Instituto Sans que pode lhe interessar:http://www.sans.org/reading_room/whitepapers/securecode/secure-Software-development-code-analysis--ools_389

Tala se destaca em tornar seu código mais idiomático (e, portanto, mais fácil de ler, para vários compiladores analisar, mais portáteis e mais fáceis de refatorar). A tala pode encontrar bugs sutis, como moldes implícitos entre INTs e carros alegóricos. A Splint rastreia vazamentos de memória e outras vulnerabilidades de segurança.

Tente: splint hello.c.

Como Waffleman sugeriu que analisadores estáticos produziam muitos alarmes falsos. Eu descobri que evita dar alarmes melhores do que pardais. Esses são dois que usamos para análise estática.

Um exemplo de um alarme falso típico e um bom alarme é:

bar (char **output) 
{
  *output = malloc(100);
}
foo()
{
  char *output=NULL;
  bar(&output)   
}

Na barra de funções, ele relataria vazamento de memória para a saída do ponteiro. Na função foo, ele relata uma desreferência nula quando a barra de função é chamada. Mas, no entanto, é uma escolha entre encontrar um alarme verdadeiro entre 100s de alarmes falsos.

Portanto, podemos encontrar vazamentos de memória que podem ser perdidos durante as análises de código. A licença evitada é cara e, uma vez que um alarme é marcado, não aparece na análise subsequente. Portanto, você precisa descobrir se a Splint faz o mesmo.

A ferramenta procura um padrão que possa ser erros. A vantagem é que a ferramenta pode encontrar bugs latentes e a desvantagem é que ela também pode encontrar um monte de falsos positivos.

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