Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Инструменты для разработчиков игр и не только - 26.02

>
>
Использование PVS-Studio в SourceCraft
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

Использование PVS-Studio в SourceCraft

17 Фев 2026

SourceCraft — платформа, с помощью которой можно разрабатывать исходный код, управлять версиями, тестировать, собирать, развёртывать и сопровождать программные продукты. Сервис представляет собой систему управления репозиториями кода для Git с отслеживанием ошибок и пайплайном CI/CD.

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

Запуск анализа

Автоматический запуск анализа

Сначала необходимо включить сканирование кода. Для этого нужно перейти в раздел Настройки репозитория > Безопасность. Подробнее про настройку SourceCraft написано в документации.

После необходимо добавить новый Workflow. Для этого добавьте YAML-скрипт в директорию .sourcecraft/.workflows репозитория. После этого каждый коммит и каждый новый pull request в ветку по умолчанию будут автоматически проверяться.

Рассмотрим следующий пример скрипта ci.yaml, который позволяет полностью проверить проект с помощью PVS-Studio:

on:
  pull_request:
    - workflows: [ pvs-studio-pipeline ]
      filter:
        source_branches: [ "**" ]
        target_branches: [ "main", "develop" ]

  push:
    - workflows: [ pvs-studio-pipeline ]
      filter:
        branches: [ "main", "develop" ]

workflows:
  pvs-studio-pipeline:
    tasks:
      - name: pvs-studio-cpp-analysis
        cubes:
          - name: run-pvs-studio-analysis
            image:
              name: ubuntu:22.04
            script:
              - |
                # Устанавливаем необходимые зависимости
                apt-get update && apt-get install -y \
                  wget \
                  gnupg \
                  cmake \
                  git
            
                # Установка PVS-Studio
                wget -q -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 install -y pvs-studio
                
                # Ввод лицензии PVS-Studio
                pvs-studio-analyzer credentials $PVS_STUDIO_CREDENTIALS
                
                cd $SOURCECRAFT_WORKSPACE
                # Сборка проекта
                cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=On -B build .
                cmake --build build -j
                  
                # Запуск анализа PVS-Studio
                pvs-studio-analyzer analyze -f build/compile_commands.json -j
                
                
                # Конвертация отчет в SARIF формат
                plog-converter -t sarif -o $SOURCECRAFT_WORKSPACE/result.sarif 
PVS-Studio.log -r $SOURCECRAFT_WORKSPACE -R toRelative

            env:
              PVS_STUDIO_CREDENTIALS: ${{ secrets.PVS_STUDIO_CREDENTIALS }}

          # Загрузка результатов работы анализатора
          - name: upload-sarif-to-sourcecraft
            image:
              name: sourcecraft/scan-result-uploader:0.6.0
            script:
              - export APPSEC_CUSTOM_ENGINE_NAME="PVS-Studio"
              - export APPSEC_CUSTOM_ENGINE_TYPE="SAST"
              - /app/bin/scan-result-uploader

Поле workflows описывает, какие процессы будут запущены.

Поле target_branches хранит целевые ветки.

Поле pull_request означает, что анализ будет запускаться при открытии/обновлении pull request.

Поле push означает, что анализ запустится при прямом коммите в ветки. Также можно настроить, чтобы анализ осуществлялся по расписанию с помощью поля schedule.

Поле name задаёт название шага.

Далее идёт последовательность шагов script, которые выполняют некоторые действия или последовательность команд оболочки.

После установки нужно ввести лицензию PVS-Studio. Для её активации используется шифрованная переменная PVS_STUDIO_CREDENTIALS, которая содержит имя пользователя и ключ.

Чтобы создать секрет, перейдите во вкладку Настройки репозитория > Секреты и нажмите кнопку Новый секрет.

Шаг pvs-studio-cpp-analysis запускает анализатор PVS-Studio и сохраняет отчёт в формате SARIF в $SOURCECRAFT_WORKSPACE/result.sarif.

pvs-studio-analyzer analyze -f build/compile_commands.json -j               
                
plog-converter -t sarif -o $SOURCECRAFT_WORKSPACE/result.sarif PVS-Studio.log 
-r $SOURCECRAFT_WORKSPACE -R toRelative

Более подробно о параметрах запуска pvs-studio-analyzer описано в документации, а о параметрах plog-converter в этой документации.

Шаг upload-sarif-to-sourcecraft загружает результаты работы анализатора на платформу. Результат анализа можно посмотреть на вкладке Безопасность > Анализ кода.

Ручной запуск анализа

Для ручного запуска пайплайна нужно написать скрипт в файл ci.yaml или использовать скрипт, описанный выше. После этого перейти в раздел Автоматизации > CI/CD и нажать кнопку Новый запуск. После этого произойдёт запуск пайплайна.

Работа с SARIF-отчётами

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

  • открыт; 
  • решён; 
  • ложное срабатывание.

Важности:

  • критический;
  • высокий;
  • средний;
  • низкий.

И типу сканера. Для этого нужно выбрать необходимые параметры в строке фильтра.

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

Также здесь можно перейти к исправлению ошибки, нажав на кнопку Редактировать, и написать комментарий по работе со срабатыванием.

В случае, если срабатывание оказалось ложным, можно отметить его. Для этого нужно нажать на кнопку Решить и отметить срабатывание ложным.

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