Использование PVS-Studio в SolidLab SDP
SolidLab SDP — это платформа, которая поддерживает процессы безопасной разработки на всех этапах жизненного цикла программного обеспечения.
В подсистеме статического анализа платформы есть возможность использования PVS-Studio для выполнения сканирования в составе CI/CD-конвейеров, централизованного сканирования репозиториев без интеграции в процессы сборки и доставки, а также запуска анализа по расписанию или событию.
У SolidLab SDP есть подсистемы динамического и композиционного анализа, что позволяет использовать PVS-Studio вместе с другими инструментами безопасной разработки.
Ввод лицензии
Примечание. Настройка лицензии производится администратором однократно и не требует дополнительных действий от разработчиков или других пользователей.
Лицензия для использования PVS-Studio хранится в системе управления секретами SolidLab SDP и передаётся инструменту автоматически во время запуска анализа.
Для загрузки и обновления лицензии воспользуйтесь SDP API. Для этого выполните следующий запрос:
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. В нём укажите шаблон сканирования, источник исходного кода и параметры выполнения анализа:
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++ проектов;pvsdotnetдля анализатора MSBuild проектов;pvsjavaдля анализатора Java-проектов.
После запуска сканирования в ответ возвращается параметр Workflow ID, который можно использовать для отслеживания статуса процесса:
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 процессе можно получить с помощью следующего запроса:
сurl -s -X "GET" \
-H "Authorization: Bearer $SDP_API_TOKEN" \
https://$URL/api/v3/scan/${workflow_id}/results/${PROJECT}/secgate
Выгрузить SARIF-отчёт с результатами анализа можно с помощью запроса:
с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.