Lanzamento de cppcheck 2.6, un analizador de código estático para linguaxes C++ e C

Lanzouse unha nova versión do analizador de código estático cppcheck 2.6, que permite identificar varias clases de erros no código nas linguaxes C e C++, incluso cando se usa unha sintaxe non estándar, típica dos sistemas embebidos. Ofrécese unha colección de complementos a través dos cales cppcheck se integra con varios sistemas de desenvolvemento, integración continua e probas, e tamén ofrece funcións como comprobar o cumprimento do código co estilo de código. Para analizar o código, podes usar o teu propio analizador ou un analizador externo de Clang. Tamén inclúe o script donate-cpu.py para proporcionar recursos locais para facer traballo colaborativo de revisión de código para paquetes Debian. O código fonte do proxecto distribúese baixo a licenza GPLv3.

O desenvolvemento de cppcheck céntrase na identificación de problemas asociados a comportamentos indefinidos e no uso de deseños perigosos desde o punto de vista da seguridade. O obxectivo tamén é minimizar os falsos positivos. Entre os problemas identificados: punteiros a obxectos inexistentes, divisións por cero, desbordamentos de enteiros, operacións incorrectas de desprazamento de bits, conversións incorrectas, problemas ao traballar coa memoria, uso incorrecto de STL, desreferencias de punteiros nulos, uso de comprobacións despois do acceso real. ao búfer, desbordamentos do búfer, uso de variables non inicializadas.

Na nova versión:

  • Engadíronse as seguintes comprobacións ao núcleo do analizador:
    • ausencia dun operador de retorno no corpo da función;
    • gravar datos superpostos, definindo un comportamento indefinido;
    • o valor que se compara está fóra da representación do valor do tipo;
    • a optimización de copia non se aplica a devolver std::move(local);
    • o ficheiro non se pode abrir simultaneamente para ler e escribir en diferentes fluxos (fluxo);
  • para plataformas Unix, engadiuse soporte para mostrar mensaxes de diagnóstico en diferentes cores;
  • Engadiu análise simbólica para ValueFlow. Usa un delta sinxelo ao calcular a diferenza entre dúas variables descoñecidas;
  • as regras utilizadas para a lista de tokens "definir" tamén poden coincidir con #include;
  • etiqueta da biblioteca agora pode conter unha etiqueta , e en consecuencia as funcións libres, que poden aceptar contedores como std::size, std::empty, std::begin, std::end, etc. pode especificar o rendemento ou acción para os conectores;
  • etiqueta da biblioteca agora pode conter unha etiqueta para punteiros intelixentes que teñen unha propiedade única. Agora emítese unha advertencia sobre as referencias colgantes a este tipo de punteiros intelixentes;
  • solucionáronse problemas ao procesar o parámetro —cppcheck-build-dir;
  • htmlreport agora pode mostrar información sobre o autor (usando git blame);
  • avisos estendidos sobre variables que non son constantes, pero que poderían selo;
  • Corrixíronse os erros e deficiencias acumulados do analizador.

Ademais, as comprobacións de Misra C 2012, incluídas a emenda 1 e a emenda 2, foron totalmente implementadas, agás as regras 1.1, 1.2 e 17.3. As comprobacións 1.1 e 1.2 deben ser realizadas polo compilador. A verificación 17.3 pode ser realizada por un compilador como GCC.

Fonte: opennet.ru

Engadir un comentario