Conheça o PVS-Studio Static Analyzer for Java

Ao longo dos anos, a equipe PVS-Studio vem desenvolvendo o analisador estático de mesmo nome. Nesse ponto, o analisador representa uma solução de software complexa, que fornece a análise de linguagens de programação como C, C ++, C # e Java nas plataformas Windows, Linux e macOS. Recentemente, a linguagem Java se juntou às fileiras de idiomas suportados. O analisador PVS-Studio provou ser uma ferramenta confiável entre os desenvolvedores de C ++ e C # há algum tempo, enquanto para o público Java o PVS-Studio ainda é um novato. Muitos nem ouviram falar do analisador, e aqueles que o fizeram, não estão familiarizados com todas as suas habilidades. Portanto, neste artigo, eu gostaria de apresentar o PVS-Studio Java a você, falar sobre as maneiras de iniciá-lo e suas habilidades.

Figura 3



Visão geral


O analisador de código estático Java do PVS-Studio consiste em 2 partes principais: o kernel, que executa a análise, e plugins para integração em sistemas de construção (Gradle, Maven) e IDE (IntelliJ IDEA).

Os plug-ins obtêm a estrutura do projeto (uma coleção de arquivos de origem e caminho de classe) e depois passam essas informações para o núcleo do analisador. Além disso, os plug-ins são responsáveis ​​pela implantação do núcleo para análise - ele será carregado automaticamente na primeira execução.

Também é possível executar o analisador diretamente, listando as fontes e o caminho da classe.

A análise pode ser feita se o seu computador atender aos seguintes requisitos de sistema:

Sistema operacional: Windows, Linux, macOS;

Versão Java mínima necessária para executar o analisador com: Java 8 (64 bits). Nota: Um projeto que está sendo analisado pode usar qualquer versão Java;

Versão mínima do IntelliJ IDEA: 2017.2.

Plugin para maven


Se o projeto em que você está trabalhando for baseado no sistema de compilação Maven, você poderá usar o plugin pvsstudio-maven-plugin. Para fazer isso, você precisa adicionar o seguinte ao arquivo 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 executar a análise, você precisa inserir os dados da licença:
 mvn pvsstudio:pvsCredentials "-Dpvsstudio.username=USR" "-Dpvsstudio.serial=KEY" 

Depois disso, as informações da licença serão salvas em % APPDATA% / PVS-Studio-Java / PVS-Studio.lic no Windows ou em ~ / .config / PVS-Studio-Java / PVS-Studio.lic no macOS e Linux.

Depois disso, você pode executar a análise:
 $ mvn pvsstudio:pvsAnalyze 

No bloco <analisador>, você pode configurar o analisador. Uma lista de todas as configurações pode ser encontrada aqui .

Plugin for gradle


Se o projeto em que você está trabalhando for baseado no sistema de construção Gradle, você poderá usar o plugin pvsstudio-gradle-plugin. Para fazer isso, você precisa adicionar o seguinte no arquivo 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 executar a análise, você precisa inserir os dados da licença:
 ./gradlew pvsCredentials "-Ppvsstudio.username=USR" "-Ppvsstudio.serial=KEY" 

Depois disso, as informações da licença serão salvas em % APPDATA% / PVS-Studio-Java / PVS-Studio.lic no sistema operacional Windows ou em ~ / .config / PVS-Studio-Java / PVS-Studio.lic no macOS e Linux .

Depois disso, você pode executar a análise:
 $ ./gradlew pvsAnalyze 

No bloco 'pvsstudio' você pode configurar o analisador. Uma lista de todas as configurações pode ser encontrada aqui .

Plugin para IntelliJ IDEA


O analisador Java PVS-Studio também pode ser usado como um plug-in para o IntelliJ IDEA. Nesse caso, a análise da estrutura do projeto é feita por meio desse IDE e o plug-in fornece uma interface gráfica conveniente para trabalhar com o analisador.

O plug-in PVS-Studio para IDEA pode ser instalado:
Depois de instalar o plug-in, é necessário inserir os dados da licença:

1) Analisar -> PVS-Studio -> Configurações

Quadro 26


2) guia Registro:

Quadro 28


Você pode executar a análise do projeto atual:

Quadro 30


Licenciamento


O analisador PVS-Studio destina-se a equipes de desenvolvedores e representa essencialmente um produto B2B proprietário. Para brincar com todas as habilidades do analisador, você pode solicitar uma chave de avaliação .

Se você estiver desenvolvendo projetos abertos ou, por exemplo, for um estudante, poderá usar uma das opções de licenciamento gratuitas do PVS-Studio.

Supressão de falsos positivos


Para combater os falsos positivos, o analisador fornece um conjunto de mecanismos diferentes.

1. Usando comentários especiais no código:
 void f() { int x = 01000; //-V6061 } 

2. Usando o arquivo suprimir .

3. Usando as anotações @SuppressWarnings (....).

O analisador está ciente das anotações e pode não emitir avisos sobre o código que já foi marcado. Por exemplo:
 @SuppressWarnings("OctalInteger") void f() { int x = 01000; } 


Conclusão


O que acabamos de ver é apenas uma pequena parte do que poderia ser dito. Por exemplo, também é possível integrar-se ao SonarQube e muito mais. O PVS-Studio Java é uma nova direção que está desenvolvendo ativamente:
  • nova funcionalidade é adicionada,
  • habilidades estão se expandindo,
  • regras de diagnóstico são adicionadas e aprimoradas,
  • e muito mais

Para explorar completamente as capacidades existentes do analisador e não perder o surgimento de novas no futuro, siga o blog do PVS-Studio.

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


All Articles