El verano no es solo una temporada de vacaciones, sino también un tiempo de trabajo fructífero. Los días soleados son tan inspiradores que hay suficiente energía tanto para caminatas tardías como para grandes compromisos de código. El segundo lanzamiento de verano de PVS-Studio 7.04 resultó ser bastante grande, por lo que le sugerimos este comunicado de prensa, en el que le informaremos sobre todo.
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 #, 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.
Aquí hay una descripción general de las nuevas características que vienen con la versión PVS-Studio 7.04.
Buscar archivos con licencias Copyleft
Al trabajar en una tarea, los desarrolladores toman código de tantos lugares diferentes. Una fuente popular de código Copy-Paste es el sitio web de Stackoverflow y otros similares. Hay casos en que un desarrollador toma el código de un proyecto de código abierto y no verifica los requisitos de licencia. Por lo tanto, un proyecto de código cerrado puede obtener accidentalmente algunos archivos de un proyecto de código abierto con una licencia Copyleft, que obliga a que todo el código del proyecto sea de código abierto. En las empresas con una gran cantidad de empleados, es difícil hacer un seguimiento de esto, mientras que tales acciones pueden causar riesgos y problemas adversos. Entonces, PVS-Studio ahora tiene un diagnóstico, que ayudará a encontrar dichos archivos. Se relaciona con todos los lenguajes compatibles (C, C ++, C #, Java).
Números de diagnóstico para diferentes idiomas:
Echemos un vistazo más de cerca a estos diagnósticos y descubramos para qué están hechos. Un ejemplo de un comentario que el analizador emitirá una advertencia para:
Para proyectos cerrados
Si agrega un archivo con dicha licencia (en este caso, GPL3) en un proyecto cerrado, tendrá que abrir el código de descanso debido a los detalles de esta licencia.
Este tipo de licencias se llama "
viral " debido a su capacidad de extenderse al resto de los archivos del proyecto. El problema es que el uso de al menos un archivo con dicha licencia en un proyecto cerrado abre automáticamente todo el código fuente y obliga a distribuirlo junto con los archivos binarios.
El diagnóstico está buscando las siguientes licencias de "virus":
- AGPL-3.0
- GPL-2.0
- GPL-3.0
- LGPL-3.0
Estas son las opciones de lo que puede hacer en caso de que detecte el uso de archivos con una licencia copyleft en un proyecto cerrado:
- Abstenerse de usar dicho código (biblioteca) en su proyecto;
- Sustituir la biblioteca utilizada;
- Haz que el proyecto sea de código abierto.
Para proyectos abiertos
Entendemos que este diagnóstico es inapropiado para proyectos de código abierto. El equipo de PVS-Studio contribuye al desarrollo de proyectos de código abierto, ayuda a corregir
errores en ellos y proporciona
opciones de licencia gratuitas . Sin embargo, nuestro producto es una solución B2B y, por lo tanto, este diagnóstico está habilitado de forma predeterminada.
Si su código se distribuye bajo una de las licencias copyleft anteriores, puede deshabilitar este diagnóstico de las siguientes maneras (para C \ C ++ es V1042):
- Si está utilizando el complemento PVS-Studio para Visual Studio, puede deshabilitar este diagnóstico yendo a Opciones> PVS-Studio> Errores detectables> 1. Análisis general> V1042. Después de esto, no se mostrará en el informe del analizador. La desventaja de este método es que el error aún se escribirá en el registro del analizador al guardarlo (o si el análisis se ejecutó desde la línea de comandos). Por lo tanto, cuando abre dicho registro en otra máquina o convierte los resultados del análisis a otro formato, los mensajes que se deshabilitaron de esta manera pueden reaparecer.
- Si no está utilizando el complemento y desea bloquear la regla para todo el equipo, o eliminarla del informe del analizador, puede agregar el comentario "// - V :: 1042" al archivo de configuración (.pvsconfig) o a uno de los archivos de encabezado global. Para los desarrolladores, que usan Visual C ++, una buena opción sería agregar este comentario en "stdafx.h". archivo. Este comentario le dice al analizador que desactive el diagnóstico V1042. La documentación brinda información más detallada sobre cómo deshabilitar los diagnósticos mediante los comentarios.
- Si está utilizando la utilidad Plog Converter para convertir informes, puede deshabilitar el diagnóstico con la tecla "-d".
Para C # V3144 es un número correspondiente de un diagnóstico, V6071, para Java.
Ampliación de la lista de licencias peligrosas
En caso de que conozca otros tipos de licencias de "virus" que PVS-Studio no detecta en este momento, puede informarnos a través de nuestro formulario de comentarios. Los agregaremos en la próxima versión.
Nuevos diagnósticos
C, C ++ (general)
- V1040 . Posible error tipográfico en la ortografía de un nombre de macro predefinido.
- V1041 . El miembro de la clase se inicializa con una referencia colgante.
- V1042 . Este archivo está marcado con licencia copyleft, que requiere que abra el código fuente derivado.
- V1043 . Una variable de objeto global se declara en el encabezado. Se crearán varias copias en todas las unidades de traducción que incluyen este archivo de encabezado.
Me gustaría prestar especial atención al diagnóstico con el número
V1040 . Logramos encontrar un error interesante en la biblioteca del conocido proyecto CMake incluso en la etapa beta:
V1040 Posible error tipográfico en la ortografía de un nombre de macro predefinido. La macro '__MINGW32_' es similar a '__MINGW32__'. winapi.h 4112
#if !defined(__UNICODE_STRING_DEFINED) && defined(__MINGW32_) #define __UNICODE_STRING_DEFINED #endif
Hay un error tipográfico hecho en el nombre
__MINGW32_ . Al final, falta un carácter subrayado. Si busca el código con este nombre, puede ver que la versión con dos caracteres subrayados en ambos lados se utiliza en el proyecto:
Puede consultar todos los errores encontrados en el proyecto CMake en el artículo: "
CMake: el caso cuando la calidad del proyecto es imperdonable ".
C, C ++ (MISRA)
- V2551 . Misra La variable debe declararse en un ámbito que minimice su visibilidad.
- V2552 . Misra Las expresiones con el tipo subyacente enum deben tener valores correspondientes a los enumeradores de la enumeración.
- V2553 . Misra El operador unario menos no debe aplicarse a una expresión del tipo sin signo.
- V2554 . Misra La expresión que contiene incremento (++) o decremento (-) no debería tener otros efectos secundarios.
- V2555 . Misra Expresión de desplazamiento incorrecta.
- V2556 . Misra Uso de un puntero a ARCHIVO cuando la secuencia asociada ya se ha cerrado.
- V2557 . Misra El operador del operador de sizeof () no debería tener otros efectos secundarios.
C #
- V3140 Los accesos de propiedad utilizan diferentes campos de respaldo.
- V3141 . La expresión bajo 'throw' es un nulo potencial, que puede conducir a NullReferenceException.
- V3142 . Código inalcanzable detectado. Es posible que haya un error presente.
- V3143 . El parámetro 'valor' se reescribe dentro de un establecedor de propiedades, y no se usa después de eso.
- V3144 . Este archivo está marcado con licencia copyleft, que requiere que abra el código fuente derivado.
- V3145. Desreferencia insegura de un objetivo WeakReference. El objeto podría haberse recolectado como basura antes de acceder a la propiedad 'Destino'.
En cuanto al analizador C #, agregamos la evaluación de los valores leídos \ escritos de los captadores y establecedores de propiedades, así como de los métodos asíncronos.
Actualmente estamos trabajando para mejorar el monitoreo de los valores de los campos y las propiedades de los objetos a medida que se pasan a los métodos, así como el monitoreo del contenido de las torres. Estas mejoras estarán disponibles en la próxima versión del analizador.
Java
- V6068 Uso sospechoso de la clase BigDecimal.
- V6069 Asignación de desplazamiento a la derecha sin signo del valor negativo 'byte' / 'short'.
- V6070 Sincronización insegura en un objeto.
- V6071 Este archivo está marcado con licencia copyleft, que requiere que abra el código fuente derivado.
SonarQube 7.9 LTS
Lanzamiento tan esperado
Han pasado casi 2 años desde el último lanzamiento de la versión LTS de SonarQube 6.7. Se esperaba ansiosamente la nueva versión comenzando con el SQ 7.xy cuando se lanzó LTS, los usuarios comenzaron a cambiarlo activamente, lo que causó varios problemas. Pronto, SQ 7.9.1 LTS salió con correcciones menores y los desarrolladores de complementos de terceros también hicieron parches.
Afortunadamente, el complemento PVS-Studio solo tenía un problema, relacionado con el cambio a Java 11, que se solucionó rápidamente y nuestros clientes cambiaron inmediatamente a una versión viable.
También se mantiene la compatibilidad con las versiones antiguas de SonarQube y la lista de versiones compatibles ahora se ve de la siguiente manera:
SonarQube 6.7 LTS y posteriorComplementos de idiomas más compatibles
El complemento PVS-Studio solo convierte los resultados del análisis al formato de la base de datos SonarQube. En otras palabras, solo descarga los resultados del análisis PVS-Studuio en SQ. Para que la utilidad SonarScanner funcione completamente, debe tener instalados complementos para los lenguajes de programación. No comenzamos a desarrollar lo que ya existe, por lo que solo agregamos compatibilidad con complementos populares ya existentes. En esta versión, hemos agregado compatibilidad con los complementos de lenguaje Sonar C Community y SonarCFamily.
La lista completa de complementos de idiomas compatibles se ve así:
Para cargar los resultados del análisis PVS-Studio es suficiente instalar al menos un complemento de esta lista. La mayoría de los usuarios instalan solo Sonar C ++ Community, SonarC # o SonarJava. El resto de complementos pueden ser necesarios para proyectos más específicos.
Al elegir complementos, tenga en cuenta el hecho de que los complementos de la comunidad no son compatibles con SonarCFamily. Pero si usa solo SonarQube Community Edition, no habrá tal problema.
Nueva página de configuración
Anteriormente, se podía configurar el analizador solo a través del archivo de configuración
sonar-project.properties . No hay quejas sobre este método. Es muy conveniente y se usa el 99% del tiempo, pero hemos creado una página de configuración adicional en
Administración> Configuración> PVS-Studio en el lado del servidor de SonarQube, ya que puede usarse preferiblemente para algunos escenarios.
La página de configuración se ve así:
Al establecer configuraciones de dos maneras, las especificadas en el archivo
sonar-project.properties son de máxima prioridad.
Plugin para IntelliJ IDEA
Los lanzamientos de las nuevas versiones IntelliJ IDEA y PVS-Studio difieren en fechas. Recientemente hemos tenido una situación en la que se lanzó IntelliJ IDEA 192. * pero no se pudo instalar el complemento PVS-Studio. En esta versión, hemos agregado soporte para las últimas versiones de IntelliJ IDEA, así como mejoras para evitar problemas similares en el futuro.
Complementos para jenkins
PVS-Studio PluginPVS-Studio Plugin está diseñado para publicar informes de los resultados del analizador PVS-Studio en el sistema de integración continua Jenkins en formato HTML. Anteriormente, este complemento solo estaba disponible para usuarios de Windows porque llamaba al convertidor de informes automáticamente y solo lo hacía para Windows. En PVS-Studio 7.04, el complemento solo admite informes HTML que deben generarse en un solo paso, pero esta medida hizo que el complemento sea multiplataforma.
Advertencias NG PluginPara Jenkins, hay un complemento útil
Warnings Next Generation Plugin para ver los resultados de análisis de varias herramientas. Recientemente hemos agregado soporte para PVS-Studio. La capacidad de cargar los resultados del análisis PVS-Studio usando este complemento se hizo disponible en
6.0.0 , su lanzamiento coincidió accidentalmente con el lanzamiento de PVS-Studio 7.04:
Otras mejoras
PVS-Studio_CmdPVS-Studio_Cmd.exe ahora tiene un modo operativo especial: credenciales. Este modo le permite crear un archivo de configuración e ingresar información de licencia sin usar una interfaz GUI (por ejemplo, el complemento de Visual Studio o la utilidad de UI de monitoreo de compilador C y C ++). Este modo es especialmente relevante cuando se usa en un servidor de compilación (donde las utilidades GUI pueden estar ausentes), en contenedores, cuando se integra con soluciones en la nube.
Análisis de proyectos de motor irrealAgregamos la opción
AutoloadUnrealEngineLog en el complemento PVS-Studio para Visual Studio que le permite cargar automáticamente el informe del analizador en la ventana de salida de PVS-Studio después del análisis. Sin esta opción, el registro debe cargarse manualmente a través del menú del complemento.
Además, la sección de documentación "
Análisis de proyectos de Unreal Engine " describe los cambios de los scripts de compilación estándar que le permiten compilar y analizar en una sola acción. Sin modificaciones en los scripts (al agregar el indicador
-StaticAnalyzer = PVSStudio para iniciar argumentos), el proyecto solo se analiza, no se construye.
CLMonitorPara la utilidad CLMonitor, hemos agregado la capacidad de monitorear las ejecuciones del compilador para un proceso específico. Esto le permitirá supervisar las ejecuciones del compilador, relacionadas solo con un proyecto específico, incluso durante las compilaciones paralelas de varios proyectos. Para trabajar en este modo, se
utilizan los indicadores
--parentProcessID% PID% (CLMonitor supervisa los procesos relacionados con el hijo del especificado) y
--attach (CLMonitor supervisa los procesos relacionados con el hijo en una consola actual).
pvs-studio-analyzerEl indicador
--ignore-ccache se agrega en la utilidad
pvs-studio-analyzer , que está diseñada para verificar proyectos en Linux y macOS:
pvs-studio-analyzer analyze ... --ignore-ccache ...
Si la utilidad
ccache se usa en la construcción de un proyecto, PVS-Studio está operando en el modo de análisis incremental. Para verificar todo el proyecto sin restablecer el caché de la utilidad
ccache , elija este indicador.
Enlaces adicionales
Suscríbase para recibir información sobre nuestras nuevas publicaciones:
- Twitter: @Code_Analysis
- Youtube: PVS-Studio
- Facebook: @StaticCodeAnalyzer
- Instagram: @pvsstudio
- Telegrama: PVS-Studio
- RSS: viva64-blog-es
PVS-Studio:
- Página del producto PVS-Studio
- Descargar
- Documentación
- Clientes