![Picture 12](https://habrastorage.org/getpro/habr/post_images/4bb/5ad/19c/4bb5ad19c25c54f3d01d46a82c8d83ab.png)
Релиз PVS-Studio 7.04 совпал c релизом плагина Warnings Next Generation 6.0.0 для Jenkins. Как раз в этом релизе Warnings NG Plugin добавил поддержку статического анализатора PVS-Studio. Этот плагин визуализирует данные о предупреждениях компилятора или других инструментов анализа в Jenkins. В этой статье будет подробно рассказано как установить и настроить данный плагин для использования с PVS-Studio, а также описано большинство его возможностей.
Установка Warning Next Generation Plugin в Jenkins
По умолчанию Jenkins находится по адресу http://localhost:8080. На главной странице Jenkins слева вверху выбираем пункт «Manage Jenkins»:
![Picture 1](https://habrastorage.org/getpro/habr/post_images/631/639/5d8/6316395d8f7727bb09674bc8e3550b85.png)
Далее выбираем пункт «Manage Plugins», открываем закладку «Available»:
![Picture 8](https://habrastorage.org/getpro/habr/post_images/f29/c2a/6e8/f29c2a6e8393413940763b124bf3e9e7.png)
В правом верхнем углу в поле фильтра вводим «Warnings Next Generation»:
![Picture 3](https://habrastorage.org/getpro/habr/post_images/209/4ca/7bc/2094ca7bc14d4940d1e7c3425ab5266f.png)
Находим плагин в списке, ставим слева галочку и жмем «Install without restart»:
![Picture 14](https://habrastorage.org/getpro/habr/post_images/d36/147/e39/d36147e398da704bf02d5b27ac4c49df.png)
Откроется страница установки плагинов. На ней мы увидим результаты установки плагина:
![Picture 5](https://habrastorage.org/getpro/habr/post_images/5cc/912/a9a/5cc912a9a511efe87d0d88abe0fb3302.png)
Создание новой задачи в Jenkins
Теперь создадим задачу со свободной конфигурацией. На главной странице Jenkins выберем «New Item». Введем имя проекта (например, WTM) и выберем пункт «Freestyle project».
![Picture 6](https://habrastorage.org/getpro/habr/post_images/60f/a42/2b1/60fa422b16cd99ca9074ea47f7261a4c.png)
Нажмем «Ок», после чего откроется страница настройки задачи. Внизу этой страницы в пункте «Post-build Actions» открываем список «Add post-build action». В списке выбираем «Record compiler warnings and static analysis results»:
![Picture 7](https://habrastorage.org/getpro/habr/post_images/037/88f/485/03788f485f6636cdfa6a9ea8ee7e8329.png)
В выпадающем списке поля «Tool» выбираем «PVS-Studio», после этого жмем кнопку сохранить. На странице задачи жмем «Build Now», чтобы создалась папка в workspace в Jenkins для нашей задачи:
![Picture 18](https://habrastorage.org/getpro/habr/post_images/f92/143/ec2/f92143ec21298bf3fc7f70557b10b2f7.png)
Получение результатов сборки проекта
Сегодня в трендах Github мне попался проект dotnetcore/WTM. Я загрузил его с Github, закинул в сборочную директорию WTM в Jenkins и проанализировал в Visual Studio при помощи анализатора PVS-Studio. Подробное описание использования PVS-Studio в Visual Studio представлено в одноименной статье: PVS-Studio для Visual Studio.
Запустил сборку проекта в Jenkins пару раз. В результате справа вверху на странице задачи WTM в Jenkins появился график, а слева появился пункт меню PVS-Studio Warnings:
![Picture 2](https://habrastorage.org/getpro/habr/post_images/223/0ba/fc8/2230bafc886db24b6666578c9993f26b.png)
При нажатии на график или этот пункт меню открывается страница с визуализацией отчета анализатора PVS-Studio плагином Warnings Next Generation:
![Picture 9](https://habrastorage.org/getpro/habr/post_images/6dd/86e/21f/6dd86e21f5b0c4bba855029368863baf.png)
Страница с результатами
На странице сверху расположены две круговые диаграммы. Справа от диаграмм расположено окно графиков. Внизу расположилась таблица.
![Picture 10](https://habrastorage.org/getpro/habr/post_images/b60/8c3/0d9/b608c30d977d9f30810a02ce53326e40.png)
На левой круговой диаграмме отображается соотношение предупреждений разного уровня опасности, на правой – соотношение новых, не исправленных и исправленных предупреждений. Имеется три графика. Выбор отображаемого графика происходит при помощи стрелок слева и справа. Первые два графика отображают ту же информацию, что и диаграммы, а третий — изменение количества предупреждений.
![Picture 26](https://habrastorage.org/getpro/habr/post_images/391/998/eec/391998eecbd50295cfd2e9b248d0c997.png)
В качестве точек графиков можно выбрать сборки или дни.
Также имеется возможность сужать и расширять временной диапазон графика, чтобы увидеть данные за определенный промежуток:
![Picture 27](https://habrastorage.org/getpro/habr/post_images/0fa/245/a1b/0fa245a1b9d235e01cc65b59957903ad.png)
Можно скрывать графики определенных метрик по нажатию на обозначение метрики в легенде графика:
![Picture 28](https://habrastorage.org/getpro/habr/post_images/9cd/4f7/516/9cd4f75167701064c12ab4e8110767a5.png)
График после сокрытия метрики «Normal»:
![Picture 29](https://habrastorage.org/getpro/habr/post_images/307/528/fc5/307528fc57a364ca2c914afd8fee8413.png)
Внизу расположена таблица, отображающая данные отчета анализатора. При нажатии на сектор круговой диаграммы происходит фильтрация таблицы:
![Picture 11](https://habrastorage.org/getpro/habr/post_images/145/822/adb/145822adbeeaf5671c3fc12df213319c.png)
В таблице имеется несколько закладок для фильтрации данных. В данном примере доступна фильтрация по namespace, файлу, категории (имя предупреждения). В таблице можно выбрать, какое количество предупреждений отображать на одну страницу (10, 25, 50, 100):
![Picture 32](https://habrastorage.org/getpro/habr/post_images/5d7/2e1/fee/5d72e1feee64882dc00108574c4b3fad.png)
Имеется возможность фильтрации данных по строке, введенной в поле «Search». Пример фильтрации по слову «Base»:
![Picture 33](https://habrastorage.org/getpro/habr/post_images/e29/e40/c61/e29e40c61ac2ebcf7c39a4e7e2aa3d1a.png)
На закладке «Issues» при нажатии на плюсик в начале строки таблицы отобразится краткое описание предупреждения:
![Picture 34](https://habrastorage.org/getpro/habr/post_images/654/ae1/3be/654ae13be05c0a9297a41a79c546bd31.png)
В кратком описании содержится ссылка на сайт с подробной информацией по данному предупреждению.
При нажатии на значения в столбцах «Package», «Category», «Type», «Severity» происходит фильтрация данных таблицы по выбранному значению. Фильтрация по категории:
![Picture 36](https://habrastorage.org/getpro/habr/post_images/5f1/63e/772/5f163e77250398638f3704c1ccedb443.png)
В столбце «Age» отображается сколько сборок пережило данное предупреждение. При нажатии на значение в столбце «Age» будет открыта страница сборки, в которой впервые появилось это предупреждение.
При нажатии на значение в столбце «File» будет открыт исходный код файла на строке с кодом, вызвавшим предупреждение. Если файл отсутствует в сборочной директории или был перемещен после создания отчета, открытие исходного кода файла окажется невозможным.
![Picture 37](https://habrastorage.org/getpro/habr/post_images/2a1/670/d31/2a1670d31ee20bdf09658ea9dfcadd58.png)
Заключение
Warnings Next Generation оказался очень удобным инструментом визуализации данных в Jenkins. Надеемся, что поддержка PVS-Studio этим плагином очень поможет тем, кто уже использует PVS-Studio, а также привлечет внимание к статическому анализу остальных пользователей Jenkins. И если в качестве статического анализатора ваш выбор падёт на PVS-Studio, мы будем очень рады. Приглашаем скачать и попробовать наш инструмент.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Valery Komarov. Configuration of the Warnings Next Generation plugin for integration into PVS-Studio.