Conozca el analizador estático PVS-Studio para Java

Con los años, el equipo de PVS-Studio ha estado desarrollando el analizador estático del mismo nombre. En este punto, el analizador representa una solución de software compleja, que proporciona el análisis de dichos lenguajes de programación, como C, C ++, C # y Java en plataformas Windows, Linux y macOS. Recientemente, el lenguaje Java se unió a las filas de los idiomas admitidos. El analizador PVS-Studio ha demostrado ser una herramienta confiable entre los desarrolladores de C ++ y C # en bastante tiempo, mientras que para la audiencia de Java PVS-Studio todavía es un recién llegado. Muchos ni siquiera han oído hablar del analizador, y aquellos que sí lo están, no están muy familiarizados con todas sus habilidades. Entonces, en este artículo, me gustaría presentarles PVS-Studio Java, hablar sobre las formas de iniciarlo y sus habilidades.

Figura 3



Resumen


El analizador de código estático Java PVS-Studio consta de 2 partes principales: el núcleo, que realiza el análisis, y complementos para la integración en sistemas de construcción (Gradle, Maven) e IDE (IntelliJ IDEA).

Los complementos obtienen la estructura del proyecto (una colección de archivos fuente y classpath), luego pasan esta información al núcleo del analizador. Además, los complementos son responsables de implementar el núcleo para el análisis: se cargará automáticamente en la primera ejecución.

También es posible ejecutar el analizador directamente, enumerando las fuentes y classpath.

El análisis se puede hacer si su computadora cumple con los siguientes requisitos del sistema:

Sistema operativo: Windows, Linux, macOS;

Versión mínima requerida de Java para ejecutar el analizador con: Java 8 (64 bits). Nota: Un proyecto que se analiza podría usar cualquier versión de Java;

Versión mínima de IntelliJ IDEA: 2017.2.

Plugin para maven


Si el proyecto en el que está trabajando se basa en el sistema de compilación Maven, puede usar el complemento pvsstudio-maven-plugin. Para hacer esto, debe agregar lo siguiente al archivo pom.xml:
<pluginRepositories> <pluginRepository> <id>pvsstudio-maven-repo</id> <url>http://files.viva64.com/java/pvsstudio-maven-repository/</url> </pluginRepository> </pluginRepositories> <build> <plugins> <plugin> <groupId>com.pvsstudio</groupId> <artifactId>pvsstudio-maven-plugin</artifactId> <version>{VERSION_PVS_JAVA}</version> <configuration> <analyzer> <outputType>text</outputType> <outputFile>path/to/output.txt</outputFile> .... </analyzer> </configuration> </plugin> </plugins> </build> 

Antes de ejecutar el análisis, debe ingresar los datos de la licencia:
 mvn pvsstudio:pvsCredentials "-Dpvsstudio.username=USR" "-Dpvsstudio.serial=KEY" 

Después de eso, la información de la licencia se guardará en % APPDATA% / PVS-Studio-Java / PVS-Studio.lic en Windows o en ~ / .config / PVS-Studio-Java / PVS-Studio.lic en macOS y Linux.

Después de eso, puede ejecutar el análisis:
 $ mvn pvsstudio:pvsAnalyze 

En el bloque <analizador> puede configurar el analizador. Puede encontrar una lista de todas las configuraciones aquí .

Plugin para gradle


Si el proyecto en el que está trabajando se basa en el sistema de compilación Gradle, puede usar el complemento pvsstudio-gradle-plugin. Para hacer esto, debe agregar lo siguiente en el archivo build.gradle:
 buildscript { repositories { mavenCentral() maven { url uri('http://files.viva64.com/java/pvsstudio-maven-repository/') } } dependencies { classpath group: 'com.pvsstudio', name: 'pvsstudio-gradle-plugin', version: '{VERSION_PVS_JAVA}' } } 

 apply plugin: com.pvsstudio.PvsStudioGradlePlugin pvsstudio { outputType = 'text' outputFile = 'path/to/output.txt' .... } 

Antes de ejecutar el análisis, debe ingresar los datos de la licencia:
 ./gradlew pvsCredentials "-Ppvsstudio.username=USR" "-Ppvsstudio.serial=KEY" 

Después de eso, la información de la licencia se guardará en % APPDATA% / PVS-Studio-Java / PVS-Studio.lic en el sistema operativo Windows o en ~ / .config / PVS-Studio-Java / PVS-Studio.lic en macOS y Linux .

Después de eso, puede ejecutar el análisis:
 $ ./gradlew pvsAnalyze 

En el bloque 'pvsstudio' puede configurar el analizador. Puede encontrar una lista de todas las configuraciones aquí .

Plugin para IntelliJ IDEA


El analizador PVS-Studio Java también se puede usar como complemento para IntelliJ IDEA. En este caso, el análisis de la estructura del proyecto se realiza mediante este IDE y el complemento proporciona una interfaz gráfica conveniente para trabajar con el analizador.

El complemento PVS-Studio para IDEA se puede instalar:
Una vez que instaló el complemento, debe ingresar los datos de la licencia:

1) Analizar -> PVS-Studio -> Configuración

Cuadro 26


2) Pestaña de registro:

Cuadro 28


Luego puede ejecutar el análisis del proyecto actual:

Cuadro 30


Licencia


El analizador PVS-Studio está destinado a equipos de desarrolladores y representa esencialmente un producto B2B propietario. Para jugar con todas las habilidades del analizador, puede solicitar una clave de prueba .

Si está desarrollando proyectos abiertos o, por ejemplo, si es un estudiante, puede utilizar una de las opciones de licencia gratuita de PVS-Studio.

Supresión de falsos positivos


Para luchar contra los falsos positivos, el analizador proporciona un conjunto de mecanismos diferentes.

1. Usando comentarios especiales en el código:
 void f() { int x = 01000; //-V6061 } 

2. Usando el archivo de supresión .

3. Usando las anotaciones @SuppressWarnings (....).

El analizador está al tanto de las anotaciones y podría no emitir advertencias sobre el código que ya ha sido marcado. Por ejemplo:
 @SuppressWarnings("OctalInteger") void f() { int x = 01000; } 


Conclusión


Lo que acabamos de ver es solo una pequeña parte de lo que podría contarse. Por ejemplo, también es posible integrarse con SonarQube y mucho más. PVS-Studio Java es una nueva dirección que se está desarrollando activamente:
  • Se agrega nueva funcionalidad,
  • las habilidades se están expandiendo,
  • se agregan y mejoran las reglas de diagnóstico,
  • y mucho mas

Para explorar completamente las capacidades existentes del analizador y no perderse la aparición de otras nuevas en el futuro, siga el blog PVS-Studio.

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


All Articles