Introdução ao PVS-Studio Static Analyzer for Java

Ao longo dos anos, a equipe PVS-Studio vem desenvolvendo o analisador estático com o mesmo nome. No momento, o analisador é uma solução de software complexa e oferece a capacidade de analisar linguagens de programação como C, C ++, C # e Java nas plataformas Windows, Linux e macOS. Mais recentemente, o Java foi adicionado a várias linguagens de programação suportadas. Se o analisador PVS-Studio já se estabeleceu entre os desenvolvedores de C ++ e C # por muitos anos, o PVS-Studio ainda é um novato para o público Java. Muitos nem ouviram falar do analisador e aqueles que o ouviram não estão muito familiarizados com todas as suas capacidades. Portanto, neste artigo, gostaria de apresentar o PVS-Studio Java, falar sobre métodos de inicialização e seus recursos.

Figura 2


Informação geral


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

Os plug-ins recebem a estrutura do projeto (conjuntos de arquivos de origem e caminho de classe), após o que eles transferem essas informações para o kernel. Além disso, os plugins são responsáveis ​​pela implantação do kernel para análise - ele será baixado automaticamente no primeiro lançamento.

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

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

  • Sistema operacional: Windows, Linux, macOS;
  • Versão mínima do Java para executar o analisador: Java 8 (64 bits). Nota: o projeto analisado pode usar qualquer versão do Java;
  • A versão mínima do IntelliJ IDEA é 2017.2.

Plugin para Maven


Se o projeto em que você estiver trabalhando for baseado no sistema de compilação Maven, você poderá usar o plugin pvsstudio-maven-plugin. Para fazer isso, adicione o seguinte ao arquivo pom.xml do projeto:

<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 iniciar a análise, você deve 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 ~ / .config / PVS-Studio-Java / PVS-Studio.lic no macOS e Linux.

Depois disso, você pode executar a análise:

 $ mvn pvsstudio:pvsAnalyze 

No bloco <analyzer> , 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ê estiver trabalhando for baseado no sistema de construção Gradle, você poderá usar o plugin pvsstudio-gradle-plugin. Para fazer isso, adicione o seguinte ao arquivo de projeto 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 iniciar a análise, você deve inserir os dados da licença:

 ./gradlew pvsCredentials "-Ppvsstudio.username=USR" "-Ppvsstudio.serial=KEY" 

Depois disso, as informações da licença, assim como o plug-in Maven, 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 é realizada 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 em:


Depois de instalar o plug-in, você deve inserir os dados da licença:

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

Quadro 26

2) guia Registro:

Quadro 28

Agora você pode iniciar a análise do projeto atual:

Quadro 30

Licenciamento


O analisador PVS-Studio é focado em equipes de desenvolvimento e é essencialmente um produto B2B proprietário. Para se familiarizar com os recursos do analisador, você pode solicitar uma chave de avaliação .

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

Supressão de falsos avisos


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

1. Usando comentários especiais no código:

 void f() { int x = 01000; //-V6061 } 

2. Usando o arquivo suprimir .

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

O analisador está ciente de algumas anotações e pode não gerar avisos sobre o código que já foi marcado. Por exemplo:

 @SuppressWarnings("OctalInteger") void f() { int x = 01000; } 

Conclusão


O que acabamos de examinar é apenas uma pequena parte do que poderia ser dito. Por exemplo, existe a possibilidade de integração com o SonarQube e assim por diante. O PVS-Studio Java é uma área jovem que está desenvolvendo ativamente:

  • nova funcionalidade é adicionada
  • expansão de oportunidades
  • regras de diagnóstico são adicionadas e aprimoradas,
  • e muito mais

Para explorar completamente os recursos existentes do analisador e não perder a aparência de novos no futuro, leia o blog do PVS-Studio.



Se você deseja compartilhar este artigo com um público que fala inglês, use o link para a tradução: Maxim Stefanov. Conheça o PVS-Studio Static Analyzer for Java

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


All Articles