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, lanzamos PVS-Studio 7.00, donde la innovaci贸n clave es el soporte para el lenguaje Java. Sin embargo, en 2018 se han acumulado muchos otros cambios importantes con respecto a C ++, C #, infraestructura y soporte para est谩ndares de codificaci贸n. Por lo tanto, le presentamos una nota que resume los principales cambios ocurridos recientemente en PVS-Studio.

PVS-Studio es una herramienta para detectar errores y vulnerabilidades potenciales en el c贸digo fuente de programas escritos en C, C ++, C # y Java. Se ejecuta en Windows, Linux y macOS.

Las capacidades del analizador est谩n bien demostradas por la extensa colecci贸n de errores en el c贸digo que encontramos durante la verificaci贸n de varios proyectos de c贸digo abierto.

Comenzaremos con el cambio, debido a que, de hecho, se decidi贸 cambiar el n煤mero de versi贸n de 6.xa 7.x. Esto es compatible con el analizador de lenguaje Java, que hemos estado preparando durante mucho tiempo.

Java


Lo m谩s importante en el analizador de Java es que apareci贸 :). Invitamos a los desarrolladores de Java a descargar la herramienta y verificar los proyectos en los que est谩n trabajando.

Hemos puesto a disposici贸n de los usuarios las formas m谩s populares de integrar el analizador en el sistema de ensamblaje:

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

En el caso de utilizar sistemas de ensamblaje autoescritos, es posible ejecutar el analizador directamente enumerando las fuentes y classpath .

Puede encontrar informaci贸n detallada sobre todos los m茅todos para iniciar el analizador en la p谩gina de documentaci贸n " C贸mo iniciar PVS-Studio Java ".

No pod铆amos ignorar la plataforma de control de calidad del c贸digo SonarQube, tan popular entre los desarrolladores de Java, por lo que agregamos compatibilidad con el lenguaje Java a nuestro complemento SonarQube .

C, C ++


En 2018, nuestro equipo trabaj贸 activamente en el desarrollo del analizador C ++. Han aparecido muchos diagn贸sticos nuevos, as铆 como algoritmos mejorados que le permiten recopilar y procesar informaci贸n recuperada del 谩rbol de sintaxis.

CWE, CERT

Los mensajes del analizador C ++ (como el analizador C #) se clasificaron de acuerdo con la enumeraci贸n de debilidad com煤n ( CWE ). CWE es un sistema de clasificaci贸n para vulnerabilidades potenciales y confirmadas. Es compatible con la comunidad para identificar problemas de software y crear herramientas automatizadas que se pueden utilizar para identificar y solucionar estos problemas.

Adem谩s, los mensajes se han clasificado de acuerdo con 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 (software) en C, C ++, Java y Perl, desarrollado por el Centro de Coordinaci贸n CERT (Centro de Coordinaci贸n CERT, CERT / CC) para aumentar 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, el analizador de c贸digo est谩tico PVS-Studio comenz贸 a clasificar sus advertencias de acuerdo con los est谩ndares MISRA C y MISRA C ++. Gracias al soporte de estos est谩ndares, el analizador ha sido posible usarlo efectivamente para mejorar la seguridad, portabilidad y confiabilidad de los programas para sistemas integrados.

M谩s detalles: " PVS-Studio: soporte para los est谩ndares de codificaci贸n MISRA C y MISRA C ++ ".

El soporte de MISRA se ha vuelto relevante en relaci贸n con el desarrollo en el analizador de soporte para diversos sistemas integrados, que se discutir谩 en la siguiente secci贸n del art铆culo.

Desarrollo integrado

En 2018, los siguientes fueron compatibles con el analizador 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 soporte de sistemas integrados:

  1. El analizador de c贸digo est谩tico PVS-Studio 6.22 est谩 adaptado para compiladores ARM (Keil, IAR) .
  2. PVS-Studio present贸 soporte para GNU Arm Embedded Toolchain .

Extensi贸n de anotaci贸n personalizada

A veces, los proyectos usan sus propias implementaciones de diversas funciones del sistema, por ejemplo, memcpy , malloc , etc. El analizador es muy bueno en la b煤squeda de errores utilizando funciones est谩ndar, pero hasta hace poco era imposible usar dichos algoritmos en el c贸digo de usuario. Ahora, usando la anotaci贸n V_FUNC_ALIAS, puede hacer coincidir los nombres de sus funciones con las del sistema.

Formato de comentario:

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

  • Implementaci贸n clave: establece el nombre de una funci贸n est谩ndar para la que se define un alias.
  • Tecla de funci贸n : establece 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 clase clave es el nombre de la clase. Puede estar ausente
  • La clave del espacio de nombres es el nombre del espacio de nombres. Puede estar ausente

Considere un ejemplo:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

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

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

C #


No hubo cambios significativos en el analizador C # este a帽o. Hubo algunas mejoras en los diagn贸sticos y las correcciones de errores. Los mensajes del analizador C #, como el analizador C ++, se clasificaron seg煤n la enumeraci贸n de debilidad com煤n ( CWE ). Aqu铆 se proporciona la correspondencia de los diagn贸sticos de C # con los identificadores de CWE (consulte los diagn贸sticos con los n煤meros 3xxx).

Planeamos volver a un desarrollo m谩s activo del analizador C # en 2019. Est谩 previsto desarrollar nuevos diagn贸sticos y mejorar el mecanismo de an谩lisis de flujo de datos (An谩lisis de flujo de datos).

Report Converters


Las utilidades PlogConverter.exe y plog-converter se incluyen en las distribuciones PVS-Studio para Windows y Linux / macOS, respectivamente. El c贸digo fuente de estas utilidades tambi茅n est谩 disponible en GitHub .

Con la llegada de PVS-Studio para Java, redise帽amos el resaltado de c贸digo para C, C ++, C # y agregamos Java en formato FullHtml ( para un navegador web ).

Adem谩s, para el informe en este formato, se agreg贸 la columna MISRA:

PVS-Studio, MISRA

Al igual que el ID de CWE, la columna MISRA es opcional y los investigadores de seguridad de c贸digo la incluyen al examinar los resultados del an谩lisis.

SonarQube Plugins


1. Actualizaci贸n completa

Reescribimos nuestros complementos utilizando la nueva API. Esto permiti贸 agregar nuevas funcionalidades y garantizar la compatibilidad con SonarQube 7.x. La versi贸n m铆nima admitida ahora es SonarQube 6.7 LTS .

2. PVS-Studio para Java

Se ha agregado soporte de diagn贸stico para el lenguaje Java a la nueva versi贸n de complementos. Ahora puede agregar PVS-Studio a otras herramientas de control de calidad de su proyecto Java.

3. Norma MISRA

Recientemente anunciamos soporte para los est谩ndares MISRA C y MISRA C ++. Los nuevos complementos tambi茅n tienen su soporte. Por ejemplo, se agreg贸 un par谩metro (adem谩s de CWE):

 sonar.pvs-studio.misra=active 

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

Misra


Independientemente de este par谩metro, habr谩 una b煤squeda disponible para las etiquetas misra y pvs-studio # misra en los resultados del an谩lisis. La informaci贸n sobre el n煤mero de alertas MISRA encontradas tambi茅n se agreg贸 a las m茅tricas, que se discutir谩n m谩s adelante.

4. Nuevas m茅tricas

En el men煤 Proyectos -> Su proyecto -> Mide varias m茅tricas de c贸digo disponibles, entre las cuales ahora hay informaci贸n diversa de PVS-Studio:

Sonarquube


Para cada una de las m茅tricas, puede crear gr谩ficos y monitorear la din谩mica de la apariencia de varios grupos de advertencia del analizador.

4. Transiciones multil铆nea

Algunos diagn贸sticos del analizador emiten advertencias en varias l铆neas del archivo. 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 los 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 que todos los procesamientos ten铆an como objetivo escribir instrucciones m谩s generales y comprensibles para trabajar en un sistema en particular.

SAST


Hasta hace poco, en nuestros art铆culos, posicionamos a PVS-Studio como una herramienta para detectar errores en el c贸digo. Al mismo tiempo, casi no consideramos PVS-Studio en el contexto de seguridad. Este a帽o corregimos esta situaci贸n y analizamos la herramienta desde el punto de vista de probar la seguridad de las aplicaciones y las pr谩cticas de DevSecOps.

PVS-Studio es una herramienta para pruebas de seguridad de aplicaciones est谩ticas (Static Application Security Testing, 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 una herramienta SAST, el analizador muestra sus advertencias sobre la enumeraci贸n de debilidad com煤n , est谩ndares de codificaci贸n SEI CERT . Tablas de cumplimiento de diagn贸sticos de PVS-Studio a varios est谩ndares:

  1. Cumplimiento de CWE
  2. Cumplimiento SEI CERT

Este tema se describe con m谩s detalle en el art铆culo " PVS-Studio como una soluci贸n SAST ".

Tambi茅n ofrecemos conocer las publicaciones:

  1. 驴C贸mo puede ayudar PVS-Studio en la b煤squeda de vulnerabilidades?
  2. Disparamos en el pie, procesando los datos de entrada .
  3. Ofrecemos el analizador PVS-Studio a expertos en seguridad .

PVS-Studio gratis


En la v铆spera de la celebraci贸n del nuevo a帽o 2019, el equipo de PVS-Studio decidi贸 hacer un regalo agradable a todos los contribuyentes de proyectos de c贸digo abierto alojados en GitHub o Bitbucket. Se les da la oportunidad de utilizar el analizador est谩tico PVS-Studio de forma gratuita para desarrollar proyectos de c贸digo abierto.

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

macOS


En 2018, PVS-Studio aprendi贸 a trabajar bajo el control de macOS. Nuestro equipo dedic贸 la verificaci贸n del n煤cleo XNU a este evento: " Versi贸n PVS-Studio para macOS: 64 debilidades en el n煤cleo Apple XNU ".

XNU es el n煤cleo de los sistemas operativos inform谩ticos desarrollados por Apple y utilizados en la familia de sistemas operativos OS X (macOS, iOS, tvOS, watchOS).



Si desea compartir este art铆culo con una audiencia de habla inglesa, utilice el enlace a la traducci贸n: Andrey Karpov, Svyatoslav Razmyslov. PVS-Studio 7.00 .

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


All Articles