Lanzamiento de cppcheck 2.6, un analizador de código estático para lenguajes C++ y C

Se ha lanzado una nueva versión del analizador de código estático cppcheck 2.6, que permite identificar varias clases de errores en el código en los lenguajes C y C++, incluso cuando se utiliza una sintaxis no estándar, típica de los sistemas integrados. Se proporciona una colección de complementos a través de los cuales cppcheck se integra con varios sistemas de desarrollo, integración continua y prueba, y también proporciona funciones tales como verificar el cumplimiento del código con el estilo del código. Para analizar el código, puede utilizar su propio analizador o un analizador externo de Clang. También incluye el script donate-cpu.py para proporcionar recursos locales para realizar trabajos de revisión de código colaborativo para paquetes Debian. El código fuente del proyecto se distribuye bajo la licencia GPLv3.

El desarrollo de cppcheck está enfocado a identificar problemas asociados con comportamientos indefinidos y el uso de diseños que sean peligrosos desde el punto de vista de la seguridad. El objetivo también es minimizar los falsos positivos. Entre los problemas identificados: punteros a objetos inexistentes, divisiones por cero, desbordamientos de enteros, operaciones incorrectas de desplazamiento de bits, conversiones incorrectas, problemas al trabajar con la memoria, uso incorrecto de STL, desreferencias de punteros nulos, uso de comprobaciones después del acceso real al buffer, desbordamientos del buffer, uso de variables no inicializadas.

Versículos nuevos:

  • Se han agregado las siguientes comprobaciones al núcleo del analizador:
    • ausencia de un operador de retorno en el cuerpo de la función;
    • registra datos superpuestos, determina comportamientos indefinidos;
    • el valor que se compara está fuera de la representación del valor del tipo;
    • la optimización de copia no se aplica al retorno std::move(local);
    • el archivo no se puede abrir simultáneamente para lectura y escritura en diferentes secuencias (secuencia);
  • para plataformas Unix, se agregó soporte para mostrar mensajes de diagnóstico en diferentes colores;
  • Análisis simbólico añadido para ValueFlow. Utiliza delta simple al calcular la diferencia entre dos variables desconocidas;
  • las reglas utilizadas para la lista de tokens "definir" también pueden coincidir con #include;
  • etiqueta de biblioteca ahora puede contener una etiqueta , y en consecuencia las funciones gratuitas, que pueden aceptar contenedores como std::size, std::empty, std::begin, std::end, etc. puede especificar rendimiento o acción para conectores;
  • etiqueta de biblioteca ahora puede contener una etiqueta para punteros inteligentes que tienen propiedad única. Ahora se emite una advertencia sobre referencias pendientes a este tipo de punteros inteligentes;
  • se solucionaron problemas con el procesamiento del parámetro —cppcheck-build-dir;
  • htmlreport ahora puede mostrar información sobre el autor (usando git listening);
  • advertencias extendidas sobre variables que no son constantes, pero que podrían serlo;
  • Se han corregido los errores y deficiencias acumulados del analizador.

Además, los controles de Misra C 2012, incluidas la Enmienda 1 y la Enmienda 2, se han implementado en su totalidad, excepto las reglas 1.1, 1.2 y 17.3. El compilador debe realizar las comprobaciones 1.1 y 1.2. La verificación 17.3 puede realizarse mediante un compilador como GCC.

Fuente: opennet.ru

Añadir un comentario