На протяжении многих лет команда 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 можно установить:
- из официального репозитория плагинов JetBrains;
- из репозитория на сайте viva64.com;
- через установщик PVS-Studio для Windows, доступный на странице загрузки.
После того, как вы установили плагин, вам необходимо ввести данные лицензии:
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.