PVS-Studio.com logo
>
>
Запуск PVS-Studio в GitFlic


Запуск PVS-Studio в GitFlic

Запуск PVS-Studio в GitFlic

GitFlic — сервис для хранения исходного кода и работы с ним. Основан на системе контроля версий Git.

В данной документации рассматривается пример по интеграции PVS-Studio для анализа C и C++ кода. Команды запуска PVS-Studio для анализа C# или Java кода будут отличаться. Смотрите соответствующие разделы документации: "Проверка проектов Visual Studio / MSBuild / .NET из командной строки с помощью PVS-Studio" и "Работа с ядром Java анализатора из командной строки".

При запуске задачи CI/CD используется инструкция из файла 'gitflic-ci.yaml'. Его можно добавить, кликнув на ссылку 'создайте новый', либо создав в локальном репозитории и загрузив на сайт. Воспользуемся первым вариантом. Перейдя по ссылке, нажмём кнопку 'Использовать':

После этого откроется базовый шаблон, который мы отредактируем для интеграции статического анализатора PVS-Studio. Составим пример скрипта работы на примере С++ проекта:

Сперва нужно установить зависимости и утилиты для сборки проекта:

- apt install cmake
- apt-get install gcc
- apt-get install doxygen

Теперь установим анализатор PVS-Studio.

- wget -O - https://files.pvs-studio.com/etc/pubkey.txt 
| apt-key add -
- wget -O /etc/apt/sources.list.d/viva64.list 
https://files.pvs-studio.com/etc/viva64.list
- apt-get update && apt-get -y install pvs-studio
- pvs-studio-analyzer credentials $PVS_NAME $PVS_KEY

Здесь PVS_NAME и PVS_KEY — переменные для имени пользователя и лицензионного ключа PVS-Studio, значения которых задаются в настройках репозитория. Чтобы установить их, перейдём в Настройки -> Настройки CI/CD -> Переменные для задачи.

Сборка проекта осуществляется с cmake:

- cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=On .

Далее запускается анализатор:

- pvs-studio-analyzer analyze -o report.log

Чтобы отобразить результаты анализа во вкладке Безопасность, их необходимо сконвертировать в формат .sarif при помощи утилиты plog-converter. Также необходимо перевести пути к файлам в относительные, чтобы файлы корректно отображались в разделе ошибок. Для этого нужно использовать флаг ‑‑pathTransformationMode (или -R) и ‑‑srcRoot (или -r). Подробнее о параметрах утилиты plog-converter можно прочитать здесь.

- plog-converter report.log -t json -n relative -R toRelative -r $PWD
- plog-converter relative.json -t sarif -n PVSSarif -r file://

Отчёт можно выгрузить при помощи артефактов, он сразу отобразится в разделе Безопасность.

artifacts:
    reports:
      sast:
        paths:
          - 'PVSSarif.sarif'

Полное содержание файла gitflic-ci.yaml:

analyze-job:
  stage: build
  scripts:
    - apt install cmake
    - apt-get install gcc
    - apt-get install doxygen
    - wget -O - https://files.pvs-studio.com/etc/pubkey.txt | apt-key add -
    - wget -O /etc/apt/sources.list.d/viva64.list 
https://files.pvs-studio.com/etc/viva64.list
    - apt-get update && apt-get -y install pvs-studio
    - pvs-studio-analyzer credentials ${USER_NAME} ${LICENSE_KEY}
    - cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=On .
    - pvs-studio-analyzer analyze -o report.log
    - plog-converter report.log -t json -n relative -R toRelative -r $PWD
    - plog-converter relative.json -t sarif -n PVSSarif -r file://
  artifacts:
    reports:
      sast:
        paths:
          - 'PVSSarif.sarif'

После этого в разделе Безопасность откроется отчёт об ошибках.

В данном разделе можно выбрать необходимое срабатывание и подробнее изучить его.

При нажатии на кнопки Подробнее можно увидеть полную информацию о срабатывании.