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

Обзор

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

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

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

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

Операционная система: Windows, Linux, macOS;

Минимальная требуемая версия Java для запуска анализатора: Java 8 (64-битная). Примечание. Анализируемый проект может использовать любую версию Java;

Минимальная версия IntelliJ IDEA: 2017.2.

Плагин для Мавена

Если проект, над которым вы работаете, основан на системе сборки 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"

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

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

$ ./gradlew pvsAnalyze

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

Плагин для IntelliJ IDEA

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

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

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

1) Анализ -> PVS-Studio -> Настройки

2) Вкладка Регистрация:

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

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

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

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

Подавление ложных срабатываний

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

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

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

2. С помощью подавить файл.

3. Использование аннотаций @SuppressWarnings(….).

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

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

Вывод

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

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

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