Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
Интеграция результатов анализа PVS-Stud…
menu mobile close menu
Проверка проектов
Сообщения PVS-Studio
Диагностики общего назначения (General Analysis, C++)
Диагностики общего назначения (General Analysis, C#)
Диагностики общего назначения (General Analysis, Java)
Микрооптимизации (C++)
Диагностика 64-битных ошибок (Viva64, C++)
Реализовано по запросам пользователей (C++)
Cтандарт MISRA
Стандарт AUTOSAR
Стандарт OWASP (C++)
Стандарт OWASP (C#)
Проблемы при работе анализатора кода
Дополнительная информация
toggle menu Оглавление

Интеграция результатов анализа PVS-Studio в CodeChecker

31 Окт 2024

CodeChecker — это интерфейс для работы со статическими анализаторами для Linux и macOS. С помощью данного инструмента можно удобно просматривать результаты анализа PVS-Studio и управлять ими.

Установка CodeChecker

Для того, чтобы запустить CodeChecker нужно создать виртуальное окружение Python (версии >= 3.8) и установить инструмент с помощью пакетного менеджера pip:

python3 -m venv .venv
source ./.venv/bin/activate
pip3 install codechecker

Поддержка анализатора PVS-Studio во встроенном инструменте для преобразования отчётов report-converter появится в версии CodeChecker 6.25.0, однако использовать PVS-Studio с CodeChecker можно уже сейчас. Для этого нужно клонировать исходный код инструмента из репозитория на GitHub, а далее установить более свежую версию компонента report-converter из репозитория в виртуальное окружение, которое было создано этапом ранее:

cd tools/report-converter/
python setup.py install

Для корректного отображения severity у диагностических правил PVS-Studio необходимо скачать файл CodeChecker.json и положить его в этом виртуальном окружении Python, по пути .venv/share/codechecker/config/labels/analyzers с названием pvs-studio.json.

Теперь для запуска веб-сервера CodeChecker потребуется выполнить следующую команду:

CodeChecker server

По умолчанию веб-сервер CodeChecker доступен по адресу http://localhost:8001.

О других способах установки и развёртывания CodeChecker можно прочитать в специальном разделе документации самого инструмента.

Преобразование отчёта в совместимый с CodeChecker формат

Для работы с отчётом PVS-Studio в CodeChecker его нужно привести в нужный формат. Помочь нам с этим может встроенный инструмент CodeChecker — report-converter.

Важно, что report-converter может преобразовать только JSON-отчёт PVS-Studio. Для преобразования отчёта PVS-Studio другого формата в JSON или фильтрации предупреждений необходимо использовать утилиты PlogConverter.exe для Windows и plog-converter для Linux/macOS:

Пример команды конвертации отчёта PVS-Studio при помощи plog-converter (Linux/macOS):

plog-converter -t json -a 'GA:1,2;OWASP:1' 
   -o /home/user/Logs/PVS-Studio.json PVS-Studio.log

Пример команды конвертации отчёта PVS-Studio при помощи PlogConverter.exe (Windows):

PlogConverter.exe -t Json -a 'GA:1,2;OWASP:1' -o /home/user/Logs 
                  -n PVS-Studio PVS-Studio.plog

Для преобразования отчёта PVS-Studio в формат CodeChecker необходимо выполнить следующую команду:

report-converter -t pvs-studio -o ./pvs_studio_reports ./PVS-Studio.json

Флаг -t указывает формат входного отчёта, -o – директорию, в которую будут сохранены преобразованные предупреждения. Подробнее об остальных функциях report-converter можно прочитать в его документации.

Чтобы сохранить преобразованный отчёт на веб-сервере для дальнейшей работы с ним, необходимо выполнить следующую команду:

CodeChecker store ./codechecker_pvs_studio_reports -n default

После флага -n необходимо передать название запуска CodeChecker.

Просмотр отчёта PVS-Studio

После выполнения описанных выше действий в списке запусков для проекта появится запуск с указанным названием.

CodeChecker_ru/image1.png

Нажав на его название, можно увидеть список предупреждений для этого проекта:

CodeChecker_ru/image2.png

На данной странице можно фильтровать и сортировать предупреждения по определённым параметрам, например по уровню достоверности или названию диагностического правила.

Нажав на локацию конкретного срабатывания, можно увидеть место в коде, где это срабатывание произошло:

CodeChecker_ru/image3.png

На этой же странице можно поменять Review status открытого срабатывания. Эта функция может быть полезна при разметке предупреждений анализатора после проведения анализа. Каждому срабатыванию можно поставить один из следующих статусов:

  • Confirmed bug – срабатывание истинно и требует исправления
  • False positive – срабатывание ложно
  • Intentional – срабатывание истинно, но не требует исправления

При пометке срабатывания как False Positive оно будет исключено из отображения отчёта, в том числе при всех следующих запусках.

Срабатывания, которых не было при предыдущих запусках помечаются в списке специальным значком, а также есть возможность просматривать разницу между конкретными запусками:

CodeChecker_ru/image4.png

После нажатия кнопки Diff отобразится список только различающихся срабатываний:

CodeChecker_ru/image5.png

close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

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

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

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

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

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

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


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам