На протяжении многих лет команда PVS-Studio развивает одноименный статический анализатор. На данный момент анализатор представляет собой сложное программное решение и предоставляет возможность анализа таких языков программирования, как C, C++, C# и Java на платформах Windows, Linux и macOS. Совсем недавно в ряд поддерживаемых языков программирования была добавлена поддержка языка Java. Если анализатор PVS-Studio за долгие годы уже зарекомендовал себя среди C++ и C# разработчиков, то для Java-аудитории PVS-Studio еще новичок. Многие даже не слышали про анализатор, а кто слышал, тот мало знаком со всеми его возможностями. Поэтому в этой статье хотелось бы познакомить вас с PVS-Studio Java, рассказать о способах запуска и его возможностях.
Статический анализатор кода PVS-Studio Java состоит из двух основных частей: ядра, выполняющего анализ, и плагинов для интеграции в сборочные системы (Gradle, Maven) и IDE (IntelliJ IDEA).
Плагины получают структуру проекта (наборы исходных файлов и classpath), после чего передают эту информацию в ядро. Кроме того, плагины отвечают за развёртывание ядра для анализа - оно будет автоматически скачано при первом запуске.
Также есть возможность запускать анализатор напрямую, перечислив исходники и classpath.
Анализ можно проводить, если ваш компьютер удовлетворяет следующим системным требованиям:
Если проект, над которым Вы работаете, основан на сборочной системе Maven, то можно воспользоваться плагином pvsstudio-maven-plugin. Для этого необходимо добавить в проектный файл pom.xml следующее:
<pluginRepositories>
<pluginRepository>
<id>pvsstudio-maven-repo</id>
<url>http://files.pvs-studio.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, то можно воспользоваться плагином pvsstudio-gradle-plugin. Для этого необходимо добавить в проектный файл build.gradle следующее:
buildscript {
repositories {
mavenCentral()
maven {
url uri('http://files.pvs-studio.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' можно производить настройку анализатора. Список всех настроек можно посмотреть здесь.
Анализатор PVS-Studio Java можно также использовать в виде плагина к IntelliJ IDEA. В таком случае разбор структуры проекта производится средствами этой IDE, а плагин предоставляет удобный графический интерфейс для работы с анализатором.
Плагин PVS-Studio для IDEA можно установить из:
После того, как Вы установили плагин, необходимо ввести лицензионные данные:
1) Analyze -> PVS-Studio -> Settings
2) Вкладка Registration:
Теперь можно запустить анализ текущего проекта:
Анализатор 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.