﻿# Использование PVS\-Studio в SolidLab SDP

SolidLab SDP — это платформа, которая поддерживает процессы безопасной разработки на всех этапах жизненного цикла программного обеспечения\.

В подсистеме статического анализа платформы есть возможность использования PVS\-Studio для выполнения сканирования в составе CI/CD\-конвейеров, централизованного сканирования репозиториев без интеграции в процессы сборки и доставки, а также запуска анализа по расписанию или событию\.

У SolidLab SDP есть подсистемы динамического и композиционного анализа, что позволяет использовать PVS\-Studio вместе с другими инструментами безопасной разработки\.

## Ввод лицензии


> \*\*Примечание\*\*\\\. Настройка лицензии производится администратором однократно и не требует дополнительных действий от разработчиков или других пользователей\\\.



Лицензия для использования PVS\-Studio хранится в системе управления секретами SolidLab SDP и передаётся инструменту автоматически во время запуска анализа\.

Для загрузки и обновления лицензии воспользуйтесь SDP API\. Для этого выполните следующий запрос:

```cpp
curl -X 'PUT' \ 
  'https://$URL/api/v3/user/secret?user=$user' \ 
  -H 'accept: application/json' \ 
  -H 'Content-Type: application/json' \ 
  -H 'Authorization: Bearer $SDP_API_TOKEN' \ 
  -d '{ 
    "secret_name": "pvs_studio_licence", 
    "secret_value": "$PVS_STUDIO_LICENCE" 
  }'
```

## Создание запроса на сканирование

Для запуска анализа отправьте запрос в SDP API\. В нём укажите шаблон сканирования, источник исходного кода и параметры выполнения анализа:

```cpp
curl -s -X POST \ 
  "https://$URL/api/v3/scan/start" \ 
  -H "Authorization: Bearer $SDP_API_TOKEN" -d ' 
  { 
    "template": "sast-subsystem", 
    "template_version": "X.X.X", 
    "user": "$CLIENT", 
    "project": "$PROJECT", 
    "scan_plan": { 
      "scanners_configs": { 
        "pvs": "--errorCodes V501,V1001,V3001 -e /path/to/tests"
      }, 
      "code_mode": { 
        "source_type": "git", 
        "git": { 
          "repo_url": "$REPO_URL", 
          "repo_type": "public", // "private" 
          "repo_branch": "$REPO_BRANCH" 
        }, 
        "results_correlation": { 
          "enable": "true" 
        }, 
        "code_snippet": { 
          "enable": "true" 
        } 
      } 
    } 
  }'
```

Источник исходного кода может быть представлен Git\-репозиторием или архивом, передаваемым в S3\-совместимое хранилище через SDP\-API\.

В поле `scanners_configs` можете указать параметры, с которыми будет запущен анализатор PVS\-Studio: 

* `pvs` для [анализатора кроссплатформенных C и C\+\+ проектов](https://pvs-studio.ru/ru/docs/manual/6615/);
* `pvsdotnet` для [анализатора MSBuild проектов](https://pvs-studio.ru/ru/docs/manual/0035/);
* `pvsjava` для [анализатора Java\-проектов](https://pvs-studio.ru/ru/docs/manual/6703/)\.

После запуска сканирования в ответ возвращается параметр `Workflow ID`, который можно использовать для отслеживания статуса процесса:

```cpp
curl -s -X "GET" \ 
  -H "Authorization: Bearer $SDP_API_TOKEN" \ 
  -H 'Content-Type: application/json' \ 
  https://$URL/api/v3/scan/status/{$WORKFLOW_ID}
```

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

Результаты проверки Quality Gate в CI/CD процессе можно получить с помощью следующего запроса:

```cpp
сurl -s -X "GET" \ 
  -H "Authorization: Bearer $SDP_API_TOKEN" \ 
  https://$URL/api/v3/scan/${workflow_id}/results/${PROJECT}/secgate
```

Выгрузить SARIF\-отчёт с результатами анализа можно с помощью запроса:

```cpp
сurl -s -X "GET" \ 
  -H "Authorization: Bearer $SDP_API_TOKEN" \ 
  https://$URL/api/v3/scan_info/${workflow_id}/results/${PROJECT}/correlated
```

## Интеграция с внешними системами

SolidLab SDP также поддерживает передачу результатов анализа во внешние инструменты:

* в системы управления недостатками;
* в системы отслеживания задач;
* в GitLab Merge Request;
* в другие внешние системы через API\-интеграции\.

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

Подробнее об этом написано [в документации SolidLab SDP](https://solidlab.ru/products/sdp.html)\.