Análise estática de código

Ferramentas de análise estática
para sistemas complexos

Escolha um analisador pela forma como raciocina sobre o código, se adapta às regras do seu projeto e encaixa no resto do seu fluxo de verificação.

O Visao é o componente de análise estática do Midair. Foi feito para código em que as verificações genéricas não chegam.

O que importa ao escolher uma ferramenta de análise estática

Profundidade da análise

O analisador só procura padrões conhecidos, ou consegue raciocinar sobre caminhos de execução e sobre o estado do programa?

Regras do projeto

A ferramenta consegue exprimir as restrições do seu próprio sistema, além das verificações genéricas predefinidas?

Integração no fluxo de trabalho

As ocorrências podem ser usadas em CI/CD e passar para os testes seguintes?

Evidências depois da ocorrência

O resultado acaba num relatório estático, ou fica ligado à execução de teste e ao comportamento em execução que se seguem?

Alguns analisadores trazem correspondências predefinidas com normas. Para já, o Visao concentra-se nas regras de cada projeto. Não publica uma matriz de normas pronta a usar.

Visao

O que distingue o Visao

Análise sensível ao caminho

Investigue problemas que dependem da forma como a execução chega a um dado estado.

Verificações do projeto

Acrescente regras para as condições de falha e as restrições próprias da base de código.

Ocorrências concretas

Encontre problemas como uso inseguro da memória, transbordo de inteiro e violações das regras do projeto.

Verificação ligada

Leve uma ocorrência para o Midair quando precisar de a confrontar com uma execução de teste ou com evidências de execução.

O Visao no Midair

1

Analisar

Visao

O Visao examina o código-fonte antes da execução.

2

Investigar

Visao

Reveja o código exato, o caminho de execução e a regra por trás de uma ocorrência.

3

Validar quando necessário

TS Factory

Leve as ocorrências relevantes para uma execução de teste no TS Factory.

4

Manter as evidências ligadas

Delta · Midair

Compare a ocorrência estática com as evidências de execução do Delta, dentro do Midair.

Casos de utilização

•

Software embebido e firmware

Código que acaba por correr em hardware com pouca observabilidade em execução.

•

Software de rede e de sistema

Software de baixo nível cujo comportamento depende do contexto do sistema.

•

Código sensível em termos de segurança

Software em que o comportamento inseguro deve ser investigado antes da execução.

•

Bases de código C e C++ complexas

Árvores de código grandes, onde um defeito se pode esconder num caminho raramente percorrido.

•

Projetos com regras do domínio

Sistemas em que os analisadores genéricos não conseguem exprimir todas as condições de falha que importam.

Está a comparar ferramentas de análise estática?

As ferramentas variam muito no suporte de linguagens, na cobertura de normas, na profundidade da análise e na integração no fluxo de trabalho. Para uma comparação mais ampla de analisadores comerciais e open source para C e C++ embebido, veja o nosso estudo de 2026. O estudo compara onze ferramentas, entre elas Coverity, Klocwork, Polyspace, CodeSonar, Parasoft C/C++test, PVS-Studio e Cppcheck.

SAST, MISRA C e CERT C

Três termos que aparecem em quase todas as avaliações de ferramentas para C e C++.

SAST

Os testes estáticos de segurança de aplicações (SAST, static application security testing) analisam código-fonte ou binário sem o executar. Procuram fraquezas exploráveis, como transbordos de buffer, gestão insegura da memória e caminhos de dados contaminados. Em sistemas embebidos, o SAST é uma parte da análise estática de código. Esta cobre também as normas de codificação e a facilidade de manutenção.

MISRA C

Um conjunto de diretrizes de codificação em C para sistemas ligados à segurança funcional (safety). O MISRA C:2012 define 143 regras que um analisador consegue verificar no código-fonte. Define também 16 diretivas sobre processo e desenho que nenhuma ferramenta consegue decidir sozinha. Cumprir o MISRA não é o mesmo que ter uma certificação de segurança funcional.

CERT C

O SEI CERT C Coding Standard: regras e recomendações que eliminam o comportamento indefinido e os defeitos relevantes para a segurança em C. O CERT C parte da cibersegurança, o MISRA C parte da segurança funcional. A maioria dos analisadores comerciais faz corresponder as suas verificações às duas normas.

Iniciar o seu piloto

Comece pela sua própria base de código. Veja como o Visao trata as regras e as condições de falha que importam no seu sistema.