PVS-Studio 7.14:análisis intermodular en C++ y plugin para JetBrains CLion

 C Programming >> Programación C >  >> Tags >> CLion
PVS-Studio 7.14:análisis intermodular en C++ y plugin para JetBrains CLion

El equipo de PVS-Studio aumenta la cantidad de diagnósticos con cada nueva versión. Además, estamos mejorando la infraestructura del analizador. Esta vez agregamos el complemento para JetBrains CLion. Además, introdujimos el análisis intermodular de proyectos de C++ y aceleramos el núcleo del analizador de C#.

Integración de PVS-Studio en JetBrains CLion

Presentamos un complemento fácil de usar que ayuda a usar PVS-Studio en JetBrains CLion. Consulte nuestro blog para obtener más información sobre las dificultades que encontramos al desarrollar el complemento CLion. Aquí puede ver la lista de IDE de JetBrains que PVS-Studio ya admite.

A medida que lanzamos el complemento para CLion por primera vez, es posible que encuentre algunos inconvenientes o errores al usar el complemento. En este caso, no dude en escribirnos. Intentaremos ayudar, dar algunos consejos o corregir defectos. Gracias de antemano.

Análisis intermodular de proyectos C y C++

Ahora, el analizador PVS-Studio C++ admite el análisis intermodular. En este modo, al analizar el código, el analizador considera los resultados de las llamadas a métodos declarados en otras unidades de traducción. También tenemos análisis intermodular en el analizador de C# (a nivel de proyecto) y en el analizador de Java (a nivel de paquete). En el analizador de C++, este modo está deshabilitado de forma predeterminada porque puede ralentizar la velocidad del análisis. Obtenga más información sobre el análisis intermodular y sus funciones de implementación en nuestro blog.

Acelerar el analizador C#

Ahora, el analizador de C# verifica proyectos grandes (más de 10 000 archivos fuente) dos veces más rápido. Además, el analizador de C# utiliza procesadores multinúcleo de manera mucho más eficiente. Consulte nuestro blog para ver las técnicas que usamos para acelerar el analizador de C#. Estas técnicas pueden aplicarse a otras clases de aplicaciones .NET:

  • Optimización de aplicaciones .NET:ediciones simples aceleraron PVS-Studio y redujeron el consumo de memoria en un 70 %.
  • Optimización de aplicaciones .NET:un gran resultado de pequeñas ediciones.

29 nuevos diagnósticos

Como muestra la lista a continuación, la mayoría de los diagnósticos que implementamos actualmente se basan en el estándar MISRA C. Nos enfocamos en el soporte de MISRA C, y ahora PVS-Studio cubre el 60% del estándar. Pronto, planeamos cubrir al menos el 80%. También queremos presentar la compatibilidad con los estándares de codificación de MISRA C Compliance.

Además, continuamos mejorando las capacidades del analizador para identificar posibles vulnerabilidades. Ahora, PVS-Studio cubre 6 de 10 categorías en OWASP Top 10:la lista de las amenazas de seguridad más comunes y peligrosas para las aplicaciones web. En esta versión, agregamos diagnósticos para las categorías A5 Broken Access Control, A7 Cross-Site Scripting (XSS) y A8 Insecure Deserialization. En futuros lanzamientos de este año, planeamos aumentar la cobertura a 9 categorías.

  • V2015. Un identificador declarado en un ámbito interno no debe ocultar un identificador en un ámbito externo.
  • V2016. Considere inspeccionar la llamada a la función. La función fue anotada como peligrosa.
  • V2584. MISRA. La expresión utilizada en la condición debe tener un tipo booleano esencial.
  • V2585. MISRA. No se deben realizar conversiones entre un puntero vacío y un tipo aritmético.
  • V2586. MISRA. Los miembros de la matriz flexible no deben declararse.
  • V2587. MISRA. Las secuencias de caracteres '//' y '/*' no deben aparecer en los comentarios.
  • V2588. MISRA. Toda la memoria o los recursos asignados dinámicamente deben liberarse explícitamente.
  • V2589. MISRA. No se deben realizar conversiones entre un puntero y un tipo aritmético no entero.
  • V2590. MISRA. No se deben realizar conversiones entre puntero a función y cualquier otro tipo.
  • V2591. MISRA. Los campos de bits solo deben declararse con un tipo de entero explícitamente firmado o sin firmar.
  • V2592. MISRA. Un identificador declarado en un ámbito interno no debe ocultar un identificador en un ámbito externo.
  • V2593. MISRA. Los campos de bits de un solo bit no deben declararse como tipo firmado.
  • V2594. MISRA. Las expresiones de control no deben ser invariantes.
  • V2595. MISRA. El tamaño de la matriz debe especificarse explícitamente cuando la declaración de la matriz utiliza la inicialización designada.
  • V2596. MISRA. El valor de una expresión compuesta no debe asignarse a un objeto con un tipo esencial más amplio.
  • V2597. MISRA. Cast no debe convertir el puntero en función de ningún otro tipo de puntero.
  • V2598. MISRA. No se permiten tipos de matrices de longitud variable.
  • V2599. MISRA. No se deben utilizar las funciones estándar de manejo de señales.
  • V2600. MISRA. No se deben utilizar las funciones estándar de entrada/salida.
  • V2601. MISRA. Las funciones deben declararse en forma de prototipo con parámetros con nombre.
  • V2602. MISRA. Las secuencias de escape octales y hexadecimales deben terminarse.
  • V2603. MISRA. La palabra clave 'estática' no debe usarse entre [] en la declaración de un parámetro de matriz.
  • V3172. La instrucción 'if/if-else/for/while/foreach' y el bloque de código posterior no están relacionados. Inspeccione la lógica del programa.
  • V3552. AUTOSAR. Cast no debe convertir un puntero a una función en ningún otro tipo de puntero, incluido un puntero a tipo de función.
  • V3553. AUTOSAR. No se deben utilizar las funciones estándar de manejo de señales.
  • V3554. AUTOSAR. No se deben utilizar las funciones estándar de entrada/salida.
  • V5609. OWASP. Posible vulnerabilidad de cruce de ruta. Los datos potencialmente contaminados se utilizan como ruta.
  • V5610. OWASP. Posible vulnerabilidad XSS. Los datos potencialmente corruptos podrían usarse para ejecutar un script malicioso.
  • V5611. OWASP. Vulnerabilidad potencial de deserialización insegura. Los datos potencialmente contaminados se utilizan para crear un objeto mediante la deserialización.

Otros detalles

El complemento de PVS-Studio para SonarQube es compatible con SonarQube 8.9 LTS.

Ahora, en el analizador PVS-Studio C++, puede deshabilitar las reglas de diagnóstico para un rango determinado de líneas en el archivo de origen. Consulte la sección "Cómo habilitar y deshabilitar ciertos diagnósticos para un bloque de código" en la documentación de Supresión de falsas alarmas.

Uno de nuestros usuarios escribió un artículo sobre la integración del analizador PVS-Studio en uVision Keil. PVS-Studio no proporciona dicha opción de fábrica. Pero si quieres algo, haremos todo lo posible para implementarlo :). La historia resultó ser entretenida. Eche un vistazo, incluso si no usa uVision Keil: Integración de PVS-Studio en uVision Keil. Aquí hay una cita del artículo:

Algunos artículos publicados después del lanzamiento anterior

  • Un artículo inesperado sobre nuestro unicornio:¿quién es la mascota de PVS-Studio?
  • Un hermoso error en la implementación de la función de concatenación de cadenas.
  • Enumeraciones en C#:trampas ocultas.
  • OWASP, vulnerabilidades y análisis de corrupción en PVS-Studio para C#. Revuelva, pero no agite.
  • El análisis estático protege su código de las bombas de relojería.
  • Equipo de PVS-Studio:el cambio a Clang mejoró el rendimiento del analizador PVS-Studio C++