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

[GitFlic](https://files.pvs-studio.ru/certificates/gitflic.pdf) — сервис для хранения исходного кода и работы с ним\. Основан на системе контроля версий Git\. 


> В данной документации рассматривается пример по интеграции PVS\\\-Studio для анализа C и C\\\+\\\+ кода\\\. Команды запуска PVS\\\-Studio для анализа C\\\# или Java кода будут отличаться\\\. Смотрите соответствующие разделы документации: "\[Проверка проектов Visual Studio / MSBuild / \\\.NET из командной строки с помощью PVS\\\-Studio\]\(https://pvs\-studio\.ru/ru/docs/manual/0035/\)" и "\[Работа с ядром Java анализатора из командной строки\]\(https://pvs\-studio\.ru/ru/docs/manual/6703/\)"\\\.

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

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

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

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

```cpp
- apt install cmake
- apt-get install gcc
- apt-get install doxygen
```

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

```cpp
- 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** \-\> **Переменные для задачи**\.

![GitFlic_ru/image2.png](https://import.viva64.com/docx/blog/GitFlic_ru/image2.png)

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

```cpp
- cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=On .
```

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

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

Чтобы отобразить результаты анализа во вкладке **Безопасность**, их необходимо сконвертировать в формат `.sarif` при помощи утилиты `plog-converter`\. Также необходимо перевести пути к файлам в относительные, чтобы файлы корректно отображались в разделе ошибок\. Для этого нужно использовать флаг `--pathTransformationMode (или -R)` и `--srcRoot (или -r)`\. Подробнее о параметрах утилиты `plog-converter` можно прочитать [здесь](https://pvs-studio.ru/ru/docs/manual/0038/)\.

```cpp
- plog-converter report.log -t json -n relative -a \
"GA:1,2,3;OP:1,2,3,;OWASP:1,2,3" -R toRelative -r $PWD
- plog-converter relative.json -t sarif -a \
"GA:1,2,3;OP:1,2,3,;OWASP:1,2,3" -n PVSSarif -r file://
```

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

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

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

```cpp
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'
```

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

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

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

![GitFlic_ru/image4.png](https://import.viva64.com/docx/blog/GitFlic_ru/image4.png)

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