Знакомство со статическим анализатором PVS-Studio для Java

от автора

На протяжении многих лет команда PVS-Studio развивает одноименный статический анализатор. На данный момент анализатор представляет собой сложное программное решение и предоставляет возможность анализа таких языков программирования, как C, C++, C# и Java на платформах Windows, Linux и macOS. Совсем недавно в ряд поддерживаемых языков программирования была добавлена поддержка языка Java. Если анализатор PVS-Studio за долгие годы уже зарекомендовал себя среди C++ и C# разработчиков, то для Java-аудитории PVS-Studio еще новичок. Многие даже не слышали про анализатор, а кто слышал, тот мало знаком со всеми его возможностями. Поэтому в этой статье хотелось бы познакомить вас с PVS-Studio Java, рассказать о способах запуска и его возможностях.

Рисунок 2

Общие сведения

Статический анализатор кода PVS-Studio Java состоит из двух основных частей: ядра, выполняющего анализ, и плагинов для интеграции в сборочные системы (Gradle, Maven) и IDE (IntelliJ IDEA).

Плагины получают структуру проекта (наборы исходных файлов и classpath), после чего передают эту информацию в ядро. Кроме того, плагины отвечают за развёртывание ядра для анализа — оно будет автоматически скачано при первом запуске.

Также есть возможность запускать анализатор напрямую, перечислив исходники и classpath.

Анализ можно проводить, если ваш компьютер удовлетворяет следующим системным требованиям:

  • Операционная система: Windows, Linux, macOS;
  • Минимальная версия Java для запуска анализатора: Java 8 (64-битная). Примечание: анализируемый проект может использовать любую версию Java;
  • Минимальная версия IntelliJ IDEA: 2017.2.

Плагин для Maven

Если проект, над которым Вы работаете, основан на сборочной системе Maven, то можно воспользоваться плагином pvsstudio-maven-plugin. Для этого необходимо добавить в проектный файл 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>

Перед тем, как запустить анализ, необходимо ввести лицензионные данные:

mvn pvsstudio:pvsCredentials "-Dpvsstudio.username=USR" "-Dpvsstudio.serial=KEY"

После этого информация о лицензии будет сохранена в %APPDATA%/PVS-Studio-Java/PVS-Studio.lic в ОС Windows или в ~/.config/PVS-Studio-Java/PVS-Studio.lic в macOS и Linux.

После этого можно запустить анализ:

$ mvn pvsstudio:pvsAnalyze

В блоке <analyzer> можно производить настройку анализатора. Список всех настроек можно посмотреть здесь.

Плагин для Gradle

Если проект, над которым Вы работаете, основан на сборочной системе Gradle, то можно воспользоваться плагином pvsstudio-gradle-plugin. Для этого необходимо добавить в проектный файл 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'   .... }

Перед тем, как запустить анализ, необходимо ввести лицензионные данные:

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

После этого информация о лицензии, также, как и с Maven плагином, будет сохранена в %APPDATA%/PVS-Studio-Java/PVS-Studio.lic в ОС Windows или в ~/.config/PVS-Studio-Java/PVS-Studio.lic в macOS и Linux.

После этого можно запустить анализ:

$ ./gradlew pvsAnalyze

В блоке ‘pvsstudio’ можно производить настройку анализатора. Список всех настроек можно посмотреть здесь.

Плагин для IntelliJ IDEA

Анализатор PVS-Studio Java можно также использовать в виде плагина к IntelliJ IDEA. В таком случае разбор структуры проекта производится средствами этой IDE, а плагин предоставляет удобный графический интерфейс для работы с анализатором.

Плагин PVS-Studio для IDEA можно установить из:

После того, как Вы установили плагин, необходимо ввести лицензионные данные:

1) Analyze → PVS-Studio → Settings

Picture 26

2) Вкладка Registration:

Picture 28

Теперь можно запустить анализ текущего проекта:

Picture 30

Лицензирование

Анализатор PVS-Studio ориентирован на команды разработчиков и по сути является проприетарным B2B продуктом. Чтобы ознакомиться с возможностями анализатора, вы можете запросить триальный ключ.

Если вы развиваете открытые проекты, или, например, являетесь студентом, то вы можете воспользоваться одним из бесплатных вариантов лицензирования PVS-Studio.

Подавление ложных предупреждений

Для борьбы с ложными срабатываниями в анализаторе предусмотрен набор различных механизмов:

1. При помощи специальных комментариев в коде:

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

2. При помощи suppress файла.

3. При помощи аннотаций @SuppressWarnings(….)

Анализатор знает о некоторых аннотациях и может не выдавать предупреждения на код, который уже был размечен. Например:

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

Заключение

То, что мы сейчас рассмотрели — только малая часть того, о чем можно было рассказать. Например, существует возможность интеграции с SonarQube и так далее. PVS-Studio Java — молодое направление, которое активно развивается:

  • добавляется новая функциональность,
  • расширяются возможности,
  • добавляются и совершенствуются диагностические правила,
  • и многое другое.

Чтобы полностью изучить существующие возможности анализатора и в дальнейшем не упустить появление новых, читайте блог PVS-Studio.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Maxim Stefanov. Get to Know the PVS-Studio Static Analyzer for Java


ссылка на оригинал статьи https://habr.com/ru/company/pvs-studio/blog/462275/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *