﻿# Запуск PVS\-Studio в Jenkins

## Автоматизирование запуска анализатора

Для автоматизации процедуры анализа в CI \(Continuous Integration\) необходимо запускать анализатор как консольное приложение\.

В Jenkins Вы можете создать один из следующих шагов сборки:

* Execute Windows batch command
* Windows PowerShell
* Execute shell

и вписать команду анализа \(и команду конвертации отчёта в нужный формат\)\.

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

* [Как запустить PVS\-Studio в Linux и macOS](https://pvs-studio.ru/ru/docs/manual/0036/);
* [Как запустить PVS\-Studio в Windows](https://pvs-studio.ru/ru/docs/manual/0035/);
* [Как запустить PVS\-Studio Java](https://pvs-studio.ru/ru/docs/manual/6703/)\.

## Warnings Next Generation Plugin

[Warnings NG Plugin](https://plugins.jenkins.io/warnings-ng/) поддерживает отчёты анализатора PVS\-Studio, начиная с версии плагина **6\.0\.0**\. Этот плагин предназначен для визуализации результатов работы различных анализаторов\.

Установить плагин можно из стандартного репозитория Jenkins в меню **Manage Jenkins \> Manage Plugins \> Available \> Warnings Next Generation Plugin**:

![Jenkins_ru/image1.png](https://import.viva64.com/docx/blog/Jenkins_ru/image1.png)

Для публикации результатов анализа в настройках проекта необходимо добавить послесборочный шаг \(секция _Post\-build Actions_\) _Record compiler warnings and static analysis results_\. Далее необходимо раскрыть список _Tool_ и выбрать _PVS\-Studio_\. В поле _Report File Pattern_ можно указать маску или путь к отчёту анализатора\. Поддерживаются отчёты с расширением **\.plog** и **\.xml**\.

В поле _Report Encoding_ указывается кодировка, в которой будет считан файл отчета\. Если поле пустое, то будет использована кодировка операционной системы, в которой запущен Jenkins\. Поля _Custom ID_ и _Custom Name_ переопределяют отображаемые в интерфейсе идентификатор и имя выбранной утилиты соответственно\.

Для публикации результатов анализа через _pipeline_ скрипты добавьте следующее:

```cpp
recordIssues enabledForFailure: true,sourceCodeEncoding:'UTF-8',
 tool: PVSStudio(pattern: 'report.plog')
```

где report\.plog отчет анализатора\.

Сгенерировать отчёт в нужном формате можно следующими способами\.

**Windows: C, C\+\+, C\#**

Отчёты с расширением \.plog являются стандартными для Windows\.

**Linux/macOS: C, C\+\+**

```cpp
plog-converter ... --renderTypes xml ...
```

**Windows/Linux/macOS: Java**

В настройках плагинов для Maven и Gradle в поле _outputType_ указать значение _xml_\.

После сборки проекта слева в списке появится новый элемент меню _PVS\-Studio Warnings_\. По нажатию на него открывается страница, где представлена визуализация данных отчета, созданного анализатором PVS\-Studio:

![Jenkins_ru/image3.png](https://import.viva64.com/docx/blog/Jenkins_ru/image3.png)

Также при нажатии на значение в столбце _File_ в браузере будет открыт файл с исходным кодом на строчке, где была найдена ошибка\.

**Примечание\.** Просмотр предупреждений из загруженного отчёта анализатора в файлах исходного кода в Jenkins \(ссылки в столбце _File_\) работает, только если в момент запуска шага _Record compiler warnings and static analysis results_ \(секция _Post\-build Actions_\) в рабочей директории Jenkins задачи расположены файлы проекта, пути до которых указываются в отчёте анализатора \(\*\.plog файл\)\. Файлы исходного кода, на которые были выданы предупреждения анализатора, кэшируются для каждой сборки Jenkins задачи\. Поэтому после прохождения шага _Record compiler warnings and static analysis results_ \(секция _Post\-build Actions_\) можно очищать рабочую директорию Jenkins задачи без потери возможности просмотра предупреждений в файлах исходного кода в Jenkins\. Если открытие файла не работает, значит отчёт был сформирован вне рабочей директории Jenkins задачи или кэшированные файлы исходного кода из в директории сборки Jenkins задачи, участвовавшие в составлении отчёта, перемещены или удалены\.

![Jenkins_ru/image5.png](https://import.viva64.com/docx/blog/Jenkins_ru/image5.png)

В других CI настройка запуска анализатора и работа с отчётом выполняются аналогичным образом\.

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

* [Warnings NG Plugin Documentation \(GitHub\)](https://github.com/jenkinsci/warnings-ng-plugin/blob/master/doc/Documentation.md);
* [Запуск PVS\-Studio в TeamCity](https://pvs-studio.ru/ru/docs/manual/0049/);
* [PVS\-Studio и Continuous Integration](https://pvs-studio.ru/ru/docs/manual/0005/);
* [Интеграция результатов анализа PVS\-Studio в SonarQube](https://pvs-studio.ru/ru/docs/manual/0037/)\.