PVS-Studio 7.00

PVS-Studio C # \ Java \ C ++ Hoy es un día importante: después de 28 lanzamientos de la sexta versión, presentamos nuestro PVS-Studio 7.00, en el que la innovación clave es el soporte del lenguaje Java. Sin embargo, durante 2018 hemos adquirido muchos otros cambios importantes relacionados con C ++, C #, infraestructura y soporte de estándares de codificación. Por lo tanto, le presentamos una nota que resume los principales cambios que han ocurrido en PVS-Studio por última vez.

PVS-Studio es una herramienta diseñada para detectar errores y vulnerabilidades potenciales en el código fuente de los programas, escritos en C, C ++, C # y Java. Funciona en entornos Windows, Linux y macOS.

Una extensa colección de errores encontrados en el código durante las comprobaciones de varios proyectos de código abierto demuestra claramente las capacidades del analizador.

Comenzaremos con un cambio debido al cual decidimos cambiar el número de versión de 6.xa 7.x. Es el soporte del analizador del lenguaje Java, que requirió mucho tiempo de preparación .

Java


Lo más importante en el analizador de Java es que apareció :). Nos gustaría invitar a los desarrolladores de Java a descargar la herramienta y verificar los proyectos en los que está trabajando actualmente.

Pusimos a disposición de los usuarios las formas más populares de integración del analizador en el sistema de compilación:

  • Plugin para Maven.
  • Plugin para Gradle.
  • Plugin para IntelliJ IDEA.

En caso de utilizar sistemas de compilación autoescritas, tenemos la capacidad de ejecutar el analizador directamente, enumerando las fuentes y classpath .

Puede encontrar información detallada sobre todas las formas de ejecutar el analizador en la página de documentación " Cómo ejecutar PVS-Studio Java ".

No pudimos evitar la plataforma SonarQube del control de calidad del código, que es tan popular entre los desarrolladores de Java, por lo que agregamos compatibilidad con el lenguaje Java en nuestro complemento para SonarQube .

C, C ++


En 2018, nuestro equipo trabajó activamente en el desarrollo del analizador C ++. Aparecieron muchos diagnósticos nuevos junto con los algoritmos , que permiten recopilar y procesar los datos extraídos del árbol de sintaxis.

CWE, CERT

Las advertencias del analizador C ++ (y C #) se clasificaron según la enumeración de debilidad común ( CWE ). CWE es un sistema de clasificación de vulnerabilidades potenciales y confirmadas. Cuenta con el respaldo de la comunidad con el objetivo de identificar problemas de software y crear herramientas automatizadas que se puedan usar para identificar y resolver estos problemas.

Además, los mensajes se clasificaron según el estándar de codificación CERT C y el estándar de codificación CERT C ++. SEI CERT Coding Standards es un conjunto de estándares para escribir software en C, C ++, Java y Perl, desarrollado por el CERT (Centro de Coordinación CERT, CERT / CC) para mejorar la confiabilidad y seguridad del software.

La clasificación de los diagnósticos C y C ++ de acuerdo con estas advertencias permite utilizar PVS-Studio como una solución SAST .

Misra

En 2018, un analizador de código estático PVS-Studio pudo clasificar sus advertencias de acuerdo con los estándares MISRA C y MISRA C ++. Debido al soporte de estos estándares, es posible utilizar de manera efectiva el analizador para aumentar el nivel de seguridad, portabilidad y confiabilidad de los programas para sistemas integrados.

Leer más: " PVS-Studio: Soporte de los estándares de codificación MISRA C y MISRA C ++ ".

El soporte para MISRA se ha vuelto relevante en relación con el desarrollo de varios sistemas integrados, que se discutirán en la siguiente sección de este artículo.

Desarrollo integrado

En 2018, los siguientes compiladores integrados fueron compatibles con PVS-Studio:

  • Ventanas IAR Embedded Workbench, compilador C / C ++ para ARM C, C ++
  • Windows / Linux Keil µVision, DS-MDK, compilador ARM 5/6 C, C ++
  • Windows / Linux Texas Instruments Code Composer Studio, Herramientas de generación de código ARM C, C ++
  • Windows / Linux / macOS. GNU Arm Embedded Toolchain, compilador Arm Embedded GCC, C, C ++

Dos notas sobre el tema de soportar sistemas embebidos:

  1. El analizador de código estático PVS-Studio 6.22 ahora admite compiladores ARM (Keil, IAR) .
  2. PVS-Studio ahora es compatible con GNU Arm Embedded Toolchain .

Ampliación de anotaciones personalizadas

A veces, en los proyectos se utilizan implementaciones personalizadas de diversas funciones del sistema, como, por ejemplo, memcpy , malloc , etc. El analizador puede detectar errores en el código que utiliza funciones estándar bien, pero en un código personalizado, ha sido imposible aplicar tales algoritmos hasta hace poco. Ahora, usando la anotación V_FUNC_ALIAS , puede ingresar los nombres de sus funciones de acuerdo con las del sistema.

Formato de comentario:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c 

  • Clave de implementación : especifica el nombre de la función estándar para determinar el alias.
  • Tecla de función : especifica el nombre del alias. La firma de la función, cuyo nombre se especifica en esta clave, debe coincidir con la firma de la función, especificada en la clave de implementación.
  • La clave de clase es el nombre de la clase. Podría estar desaparecido.
  • La clave del espacio de nombres es el nombre del espacio de nombres. Podría estar desaparecido.

Veamos un ejemplo:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

Ahora el analizador manejará las llamadas de la función MyMemCpy de la misma manera que las llamadas de memcpy . Por ejemplo, para dicho código se emitirá una advertencia V512:

 int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int)); // Warning! 

C #


Este año no hubo cambios significativos en el analizador C #. Hubo algunas mejoras de diagnóstico y corrección de errores. Las advertencias del analizador C #, así como las advertencias del analizador C ++ se han clasificado de acuerdo con la enumeración de debilidad común ( CWE ). Aquí se proporciona la asignación de diagnósticos de C # con los identificadores de CWE (consulte los diagnósticos con los números 3xxx).

Estamos planeando volver a un desarrollo más activo del analizador C # en 2019. También estamos planeando desarrollar nuevos diagnósticos y mejorar el mecanismo de Análisis de flujo de datos.

Informar convertidores


Las utilidades PlogConverter.exe y plog-converter se incluyen en las distribuciones PVS-Studio para Windows y Linux / macOS, respectivamente. Además, el código fuente de estas utilidades está disponible en GitHub .

Con el advenimiento de PVS-Studio para Java, hemos rediseñado el resaltado de código para C, C ++, C # y hemos agregado Java en el formato FullHtml ( para un navegador web ).

Además, se agregó la columna MISRA para el informe en este formato.

Informar convertidores


Además de la ID de CWE, la columna MISRA es opcional y está habilitada por los revisores de la seguridad del código al investigar los resultados del análisis.

SonarQube Plugins


1. Actualización completa

Hemos reescrito nuestros complementos utilizando la nueva API. Esto nos permitió agregar nuevas funciones y proporcionar compatibilidad con SonarQube 7 x. La versión mínima admitida ahora es SonarQube 6.7 LTS .

2. PVS-Studio para Java

La nueva versión incluye el soporte de diagnósticos en el lenguaje Java. Ahora puede agregar PVS-Studio a otras herramientas de control de calidad de su proyecto Java.

3. Norma MISRA

Recientemente hemos anunciado el soporte de los estándares MISRA C y MISRA C ++. Los nuevos complementos también incluyen su soporte. Por ejemplo, se agregó el siguiente parámetro (además de CWE):

 sonar.pvs-studio.misra=active 

que incluye agregar el identificador MISRA a las advertencias del analizador:

PVS-Studio, MISRA


Independientemente de este parámetro, la búsqueda por etiquetas misra y pvs-studio # misra estará disponible en los resultados del análisis. También se agregó información sobre el número de advertencias MISRA encontradas en métricas, que se discutirán a continuación.

4. Nuevas métricas

En el menú Proyectos -> Su proyecto -> Medidas, hay diferentes métricas de código disponibles, entre las cuales ahora hay información diversa de PVS-Studio:

Sonarquube


Usando cada una de las métricas, puede crear gráficos y monitorear la dinámica de ocurrencia de varios grupos de advertencias.

4. Transiciones multilínea

Algunos diagnósticos del analizador emiten advertencias para varias líneas de código. A veces están muy lejos. En la nueva versión, agregamos transiciones multilínea:

Sonarquube


SonarQube también admite transiciones entre diferentes archivos. Más adelante agregaremos tales transiciones para diagnósticos, en las cuales hay un análisis intermodular.

6. Documentación

La documentación ha sufrido grandes cambios. PVS-Studio es un producto multiplataforma y multilingüe, por lo tanto, todos los procesamientos se han centrado en escribir instrucciones más comunes y fáciles de entender para trabajar en diferentes sistemas.

SAST


Hasta hace poco, en nuestros artículos hemos posicionado a PVS-Studio como una herramienta para detectar errores en el código. Si bien casi nunca hemos considerado PVS-Studio en un contexto de seguridad. Este año remediamos esta situación y consideramos la herramienta en términos de pruebas de aplicaciones de seguridad y prácticas de DevSecOps.

PVS-Studio es una herramienta de prueba de seguridad de aplicaciones estáticas (SAST). En otras palabras, el analizador PVS-Studio detecta no solo errores tipográficos, código muerto y otros errores, sino también vulnerabilidades potenciales.

Para la comodidad de los especialistas que utilizarán PVS-Studio como herramienta SAST, el analizador puede generar advertencias en los siguientes formatos: Enumeración de debilidad común , Estándares de codificación SEI CERT . Asignación de tablas de diagnósticos PVS-Studio a diferentes estándares:

  1. Mapeo CWE
  2. Mapeo cert SEI

Este tema se describió con más detalle en el artículo " PVS-Studio como solución SAST ".

También sugerimos ver estas publicaciones:

  1. ¿Cómo puede PVS-Studio ayudar en la detección de vulnerabilidades?
  2. Dispare en el pie cuando maneje datos de entrada .
  3. Entrega de licencias de PVS-Studio Analyzer a expertos en seguridad .

PVS-Studio gratis


En la víspera de Año Nuevo 2019, un equipo de PVS-Studio decidió hacer un buen regalo para todos los contribuyentes de proyectos de código abierto alojados en GitHub o Bitbucket. Se les da el uso gratuito del analizador estático PVS-Studio para el desarrollo de proyectos de código abierto.

Detalles: " PVS-Studio gratuito para quienes desarrollan proyectos de código abierto ".

macOS


En 2018, PVS-Studio comenzó a funcionar con macOS. Nuestro equipo decidió realizar una verificación del Kernel XNU para coincidir con este evento: " PVS-Studio ahora está disponible en macOS: 64 debilidades en el Kernel XNU de Apple ".

XNU es un núcleo de sistemas operativos informáticos desarrollado por Apple y utilizado en sistemas operativos OS X (macOS, iOS, tvOS, watchOS).

Source: https://habr.com/ru/post/es436332/


All Articles