Lançamento do cppcheck 2.6, um analisador de código estático para as linguagens C++ e C

Saiu a nova versão do analisador de código estático cppcheck 2.6, que permite identificar diversas classes de erros no código nas linguagens C e C++, incluindo ao usar sintaxe não padrão típica em sistemas embarcados. É fornecido um conjunto de plugins que garantem a integração do cppcheck com vários sistemas de desenvolvimento, integração contínua e testes, além de fornecer funcionalidades como verificação da conformidade do código com padrões de estilo. Tanto um parser próprio quanto o parser externo do Clang podem ser usados para analisar o código. Também está incluído um script donate-cpu.py para fornecer recursos locais para realizar trabalho de revisão colaborativa do código dos pacotes Debian. O código-fonte do projeto é distribuído sob a licença GPLv3.

O desenvolvimento do cppcheck se concentra em identificar problemas relacionados ao comportamento indefinido e o uso de construções que apresentam riscos de segurança. O objetivo também é minimizar falsos positivos. Entre os problemas detectados estão: ponteiros para objetos inexistentes, divisões por zero, estouros inteiros, operações incorretas de deslocamento de bits, conversões inadequadas, problemas no gerenciamento de memória, uso incorreto da STL, desreferenciação de ponteiros nulos, verificações que ocorrem após um acesso real ao buffer, estouro de buffers e uso de variáveis não inicializadas.

Na nova versão:

  • O núcleo do analisador agora inclui as seguintes verificações:
    • ausência do operador return no corpo da função;
    • gravação de dados sobrepostos, determinação de comportamento indefinido;
    • valor comparável está fora do intervalo de valores do tipo;
    • a otimização de cópia não é aplicada para return std::move(local);
    • o arquivo não pode ser aberto simultaneamente para leitura e escrita em diferentes fluxos (stream);
  • para plataformas Unix, foi adicionada a suporte à saída de mensagens de diagnóstico em cores diferentes;
  • adicionado análise simbólica para ValueFlow. Uma simples delta é utilizada ao calcular diferenças entre duas variáveis desconhecidas;
  • as regras usadas para a lista de tokens 'define' também podem se aplicar a #include;
  • A tag library agora pode conter a tag , e, consequentemente, funções livres que podem aceitar containers como std::size, std::empty, std::begin, std::end, etc., podem especificar yield ou action para os containers;
  • A tag da biblioteca agora pode conter a tag para ponteiros inteligentes que têm propriedade exclusiva (unique ownership). Agora, um aviso é emitido sobre referências 'penduradas' a esse tipo de ponteiros inteligentes;
  • Foram corrigidos problemas com o parâmetro —cppcheck-build-dir;
  • htmlreport agora pode emitir informações sobre o autor (usando git blame);
  • A emissão de avisos sobre variáveis que não são constantes, mas poderiam ser, foi ampliada;
  • Foram corrigidos erros acumulados e problemas na análise.

Além disso, as verificações do Misra C 2012 foram completamente implementadas, incluindo a Emenda 1 e a Emenda 2, exceto as regras 1.1, 1.2 e 17.3. As verificações 1.1 e 1.2 devem ser realizadas pelo compilador. A verificação 17.3 pode ser realizada pelo compilador, por exemplo, GCC.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster