﻿# Быстрый запуск PVS\-Studio Java

В этой документации будет рассмотрен быстрый запуск анализа Java проекта через плагины для сборочных систем [Gradle](https://pvs-studio.ru/ru/docs/manual/6706/) и [Maven](https://pvs-studio.ru/ru/docs/manual/6705/)\.

Также PVS\-Studio Java предоставляет интеграцию с IDE IntelliJ IDEA через специальный плагин и интеграцию с Visual Studio Code через специальное расширение\. Подробнее можно прочитать в документации:

* [Использование расширения PVS\-Studio для Visual Studio Code](https://pvs-studio.ru/ru/docs/manual/6646/)\.
* [Работа PVS\-Studio в IntelliJ IDEA, Android Studio и OpenIDE](https://pvs-studio.ru/ru/docs/manual/6704/)\.

## Быстрый запуск PVS\-Studio через Gradle

### Интеграция в проект через скрипт сборки

Для интеграции плагина в проект, использующий **Groovy DSL**, добавьте следующий код в скрипт сборки `build.gradle`:

```cpp
buildscript {
  repositories {
    mavenCentral()
    maven {
      url uri('https://cdn.pvs-studio.ru/java/pvsstudio-maven-repository/')
    }
  }
  dependencies {
    classpath 'com.pvsstudio:pvsstudio-gradle-plugin:latest.release'
  }
}
apply plugin: com.pvsstudio.PvsStudioGradlePlugin
pvsstudio {
  outputType = 'json'
  outputFile = '.PVS-Studio/report.json'
  analysisMode = ['GA', 'OWASP']
}
```

Для **Kotlin DSL** добавьте следующий код в `build.gradle.kts`:

```cpp
import com.pvsstudio.WarningGroup

buildscript {
  repositories {
    mavenCentral()
    maven {
      url =
        uri("https://cdn.pvs-studio.ru/java/pvsstudio-maven-repository/")
    }
  }
  dependencies {
    classpath("com.pvsstudio:pvsstudio-gradle-plugin:latest.release")
  }
}

apply<com.pvsstudio.PvsStudioGradlePlugin>()

extensions.configure<com.pvsstudio.AnalyzerConfig>("pvsstudio") {
  outputType = "json"
  outputFile = ".PVS-Studio/report.json"
  analysisMode = setOf(WarningGroup.GA, WarningGroup.OWASP)
}
```

### Запуск анализа

Перед запуском анализа необходимо ввести лицензию\. Её активация происходит с помощью следующей команды:

```cpp
./gradlew pvsCredentials "-Ppvsstudio.userName=${USER_NAME}" \
                         "-Ppvsstudio.licenseKey=${LICENSE_KEY}"
```

Вместо переменной `USER_NAME` укажите имя пользователя анализатора, привязанное к ключу, а вместо `LICENSE_KEY` — лицензионный ключ\. 

Можно запускать анализ\. Для этого выполните следующую команду:

```cpp
./gradlew pvsAnalyze
```

**Обратите внимание:** при анализе проекта плагин запускает [ядро Java анализатора](https://pvs-studio.ru/ru/docs/manual/6703/), которое по умолчанию использует версию Java из переменной окружения `PATH`\. Задать другую версию можно с помощью настройки плагина `javaPath`\. Подробное описание находится в [документации](https://pvs-studio.ru/ru/docs/manual/6706/#IDD24CCCC7F4)\.

## Быстрый запуск PVS\-Studio через Maven

### Интеграция через файл конфигурации

Для интеграции плагина в проект добавьте следующий код в файл `pom.xml`:

```cpp
<pluginRepositories>
  <pluginRepository>
    <id>pvsstudio-maven-repo</id>
    <url>https://cdn.pvs-studio.ru/java/pvsstudio-maven-repository/</url>
  </pluginRepository>
</pluginRepositories>
<build>
  <plugins>
    <plugin>
      <groupId>com.pvsstudio</groupId>
      <artifactId>pvsstudio-maven-plugin</artifactId>
      <version>{{FULL_VERSION_PVS_JAVA}}</version>
      <configuration>
        <analyzer>
          <outputType>json</outputType>
          <outputFile>.PVS-Studio/report.json</outputFile>
          <analysisMode>GA, OWASP</analysisMode>
        </analyzer>
      </configuration>
    </plugin>
  </plugins>
</build>
```

### Запуск анализа

Перед запуском анализа необходимо ввести лицензию\. Её активация происходит с помощью следующей команды:

```cpp
mvn pvsstudio:pvsCredentials "-Dpvsstudio.userName=${USER_NAME}" \
                             "-Dpvsstudio.licenseKey=${LICENSE_KEY}"
```

Вместо переменной `USER_NAME` укажите имя пользователя анализатора, привязанное к ключу, а вместо `LICENSE_KEY` — лицензионный ключ\. 

Можно запускать анализ\. Для этого выполните следующую команду:

```cpp
mvn pvsstudio:pvsAnalyze
```

**Обратите внимание:** при анализе проекта плагин запускает [ядро Java анализатора](https://pvs-studio.ru/ru/docs/manual/6703/), которое по умолчанию использует версию Java из переменной окружения `PATH`\. Задать другую версию можно с помощью настройки плагина `javaPath`\. Подробное описание находится в [документации](https://pvs-studio.ru/ru/docs/manual/6705/#IDD24CCCC7F4)\.

### Запуск анализа без интеграции в скрипт сборки

Существует сценарий, при котором можно запускать анализ Maven\-проектов без модификации файла `pom.xml`\. В этом случае старт анализа осуществляется через запуск специальной команды в директории проекта:

Для PowerShell:

```cpp
$repo = "https://files.pvs-studio.com/java/pvsstudio-maven-repository/"

mvn -f ./pom.xml `
 "-Dmaven.repo.remote= $repo" `
 "-Dmaven.test.skip=true" `
 "-Dpvsstudio.outputType=json" `
 "-Dpvsstudio.outputFile=.PVS-Studio/report.json" `
 "-Dpvsstudio.analysisMode=GA,OWASP" `
 com.pvsstudio:pvsstudio-maven-plugin:{{FULL_VERSION_PVS_JAVA}}:pvsAnalyze
```

Для Bash:

```cpp
repo=https://files.pvs-studio.com/java/pvsstudio-maven-repository/ 

mvn -f ./pom.xml \
 -Dmaven.repo.remote= "$repo" \
 -Dmaven.test.skip=true \
 -Dpvsstudio.outputType=json \
 -Dpvsstudio.outputFile=.PVS-Studio/report.json \
 -Dpvsstudio.analysisMode=GA,OWASP \
 com.pvsstudio:pvsstudio-maven-plugin:{{FULL_VERSION_PVS_JAVA}}:pvsAnalyze
```

Для cmd:

```cpp
set REPO=https://files.pvs-studio.com/java/pvsstudio-maven-repository/

mvn -f ./pom.xml ^
 "-Dmaven.repo.remote=%REPO%" ^
 "-Dmaven.test.skip=true" ^
 "-Dpvsstudio.outputType=json" ^
 "-Dpvsstudio.outputFile=.PVS-Studio/report.json" ^
 "-Dpvsstudio.analysisMode=GA,OWASP" ^
 com.pvsstudio:pvsstudio-maven-plugin:{{FULL_VERSION_PVS_JAVA}}:pvsAnalyze
```

## Работа с результатами анализа

После завершения анализа в директории `.PVS-Studio` в корне проекта будет создан файл `report.json` — отчёт со срабатываниями анализатора PVS\-Studio Java\.

 Ознакомиться с результатами отчёта можно через:

* [плагин PVS\-Studio для IntelliJ IDEA](https://pvs-studio.ru/ru/docs/manual/6704/#ID900DC5D0FF);
* [расширение PVS\-Studio для Visual Studio Code](https://pvs-studio.ru/ru/docs/manual/6646/#ID7839E0A55B);
* [инструменты контроля качества кода](https://pvs-studio.ru/ru/docs/#ID82D66261D1);
* HTML\-формат отчёта\.

### Конвертация отчёта

Отчёт анализатора PVS\-Studio может быть представлен в различных форматах\. Для его конвертации из одного поддерживаемого формата в другой воспользуйтесь утилитой [PlogConverter](https://pvs-studio.ru/ru/docs/manual/0038/)\. Она входит в состав [дистрибутива PVS\-Studio](https://pvs-studio.ru/ru/pvs-studio/download/)\. Один из поддерживаемых форматов вывода — `FullHTML`, который позволяет изучать отчёт анализатора в браузере с возможностью сортировать предупреждения и просматривать исходный код, на который анализатор выдал предупреждение\.

По умолчанию утилита располагается в корневой директории анализатора\. Чтобы сконвертировать отчёт, выполните в директории с `json`\-отчётом следующую команду:

Для PowerShell:

```cpp
& "C:\Program Files (x86)\PVS-Studio\PlogConverter.exe" `
   -t FullHtml `
   -a "GA:1,2,3;OWASP:1,2,3" `
   -o . `
   report.json
```

Для Bash:

```cpp
plog-converter \
 -t FullHtml \
 -a GA:1,23;OWASP:1,2,3 \
 -o . \
 report.json
```

Для cmd:

```cpp
"C:\Program Files (x86)\PVS-Studio\PlogConverter.exe" ^
 -t FullHtml ^
 -a GA:1,2,3;OWASP:1,2,3 ^
 -o . ^
 report.json
```

В результате утилита создаст директорию `fullhtml`, где будет лежать набор файлов, представляющих собой веб\-страницу с отчётом анализатора\. Для его просмотра откройте файл `index.html` в вашем браузере\.

## Дополнительные ссылки

Более подробно про работу с PVS\-Studio Java через сборочные системы Gradle и Maven можно узнать в соответствующих разделах документации:

* [Интеграция PVS\-Studio Java в сборочную систему Gradle](https://pvs-studio.ru/ru/docs/manual/6706/)\.
* [Интеграция PVS\-Studio Java в сборочную систему Maven](https://pvs-studio.ru/ru/docs/manual/6705/)\.