to the top
close form
Для получения триального ключа
заполните форму ниже
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
>
Знакомство со статическим анализатором …

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

02 Авг 2019

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

0649_PVS_Studio_for_Java_Mini_ru/image1.png

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

Статический анализатор кода 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.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

Если проект, над которым Вы работаете, основан на сборочной системе 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' можно производить настройку анализатора. Список всех настроек можно посмотреть здесь.

Плагин для IntelliJ IDEA

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

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

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

1) Analyze -> PVS-Studio -> Settings

0649_PVS_Studio_for_Java_Mini_ru/image2.png

2) Вкладка Registration:

0649_PVS_Studio_for_Java_Mini_ru/image3.png

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

0649_PVS_Studio_for_Java_Mini_ru/image5.png

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

Анализатор 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.

Популярные статьи по теме
Проверка JavaScript-движка Rhino, или как встретились единорог с носорогом

Дата: 15 Сен 2022

Автор: Валерий Комаров

Имеется большое разнообразие языков программирования, но больше всего наши пользователи хотят, чтобы анализатор PVS-Studio поддержал один из самых популярных языков – Javascript. Одним из проектов, к…
Атака Trojan Source: скрытые уязвимости

Дата: 15 Апр 2022

Автор: Гость

Мы представляем новый тип атаки для внедрения в исходный код вредоносных изменений, по-разному выглядящих для компилятора и человека. Такая атака эксплуатирует тонкости стандартов кодирования символо…
Как PVS-Studio ELKI в январе проверяли

Дата: 22 Янв 2021

Автор: Ирина Полынкина

Если вам кажется, что Новый год наступил только вчера, и вы не заметили, как прошла уже большая половина января – значит, все это время вы были заняты поиском трудноуловимых багов в поддерживаемом ва…
Топ 10 ошибок в проектах Java за 2020 год

Дата: 28 Дек 2020

Автор: Максим Стефанов

Новый год неумолимо приближается - а, значит, настало время подводить итоги. Продолжая традицию, мы прошлись по нашим статьям о проверках Java-проектов из мира open-source за этот год и составили рей…
Big/Bug Data: анализируем исходный код Apache Flink

Дата: 15 Дек 2020

Автор: Валерий Комаров

Приложения, использующиеся в области Big Data, обрабатывают огромные объемы информации, причем часто это происходит в реальном времени. Естественно, такие приложения должны обладать высокой надежност…

Комментарии (0)

Следующие комментарии next comments
close comment form
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо