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

Вебинар: Понять себя как тимлида: привычки, роли и стили управления - 21.10

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

Отправка результатов анализа на сервер

23 Сен 2026

Утилита Atlas Scanner

Для отправки результатов анализа на сервер используется утилита Atlas Scanner. Она распространяется в готовом образе Docker:

pull viva64/atlas-scanner

Загружается последняя стабильная версия утилиты. Для загрузки конкретной версии используйте систему тегов Docker:

pull viva64/atlas-scanner:8.0

Рекомендуется использовать все сервисы PVS-Studio Atlas одной версии.

Быстрый старт

Перед запуском сканнера введите лицензию PVS-Studio на сервере и подготовьте два параметра, значения которых можно найти в настройках сервера:

  • API-ключ для доступа к серверу;
  • ID ветки проекта, куда будут загружены результаты.

Подробнее об этих настройках можно узнать в документации "Управление проектами и ветками".

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

docker run --rm viva64/atlas-scanner --help

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

docker run --rm -v "/Users/nickname/Downloads/BotSharp":"/mnt/project" viva64/atlas-scanner --reportPaths /mnt/project/BotSharp.json --sourceTreeRoot /mnt/project/ --serverUrl http://atlas-server:8080 --apiKey 49931204-56e0-4cbf-b87a-29c94735cc9e --branchId 85c6129f-0097-466a-9e48-466a7b74d75f --logDir /mnt/project/scanner_logs

Для быстрого старта замените выделенные жирным фрагменты на свои.

Если Atlas Server и Atlas Scanner запускаются на одном компьютере, то результаты анализа необходимо отправить по адресу http://host.docker.internal:8080. Если DNS-имя host.docker.internal по умолчанию не разрешается автоматически при использовании нативного Docker на Linux, то добавьте параметр --add-host=host.docker.internal:host-gateway.

Аргументы запуска

Используемые аргументы командной строки Docker:

  • run (обязательный) — создаёт и запускает новый контейнер на основе указанного образа.
  • -v (обязательный) — монтирует каталог с проектом к контейнеру Docker, чтобы Atlas Scanner в контейнере мог обработать отчёт анализатора и исходные файлы.
  • --rm — указывает Docker удалить контейнер после завершения работы.

Основные аргументы командной строки Atlas Scanner:

  • --version — выводит информацию о текущей версии сканнера.
  • --help — выводит в консоль справку со всеми аргументами командной строки.
  • --reportPaths (обязательный) — пути до отчётов анализаторов в форматах .plog, .json и .sarif (в разработке). Можно перечислить несколько путей, если в одну ветку проекта нужно загрузить отчёты от разных анализаторов кода.
  • --sourceTreeRoot (обязательный) — путь до каталога с проектом, где расположены файлы с исходным кодом.
  • --serverUrl (обязательный) — адрес сервера, где развёрнут принимающий результаты Atlas Server.
  • --apiKey (обязательный) — ключ авторизации, допускающий Atlas Scanner к подключению. API-ключи создаются в настройках Atlas Server сотрудником, имеющим право Управление проектами.
  • --branchId (обязательный) — идентификатор ветки в проекте, куда необходимо загрузить результаты анализа.
  • --gitBlame — аргумент включает режим сбора информации о коммитерах и её объединения с результатами анализа.
  • --logDir — каталог, который содержит различные логи работы Atlas Scanner. Логи работы анализатора или отчёты анализатора в сохраняемую информацию не входят.
  • --sourceMask — маска, по которой файлы исходного кода запаковываются и отправляются на сервер. Значение по умолчанию: .c.cpp.hpp.h.cc.cxx.cs.csx.razor.java.ts.js.go.
  • --uploadMode — аргумент задаёт режим работы с файлами исходного кода:
    • ReportSources (по умолчанию) запаковывает только те файлы исходного кода, на которые указывает отчёт анализатора. Игнорирует аргумент sourceMask.
    • MaskSources — запаковывает все исходные файлы по маске, указанной в аргументе sourceMask, а также файлы, на которые указывает отчёт анализатора.
    • WithoutSources — файлы с исходным кодом не отправляются на сервер.
  • --quietMode — режим без вывода информации в консоль. В сочетании с аргументом logDir будет сохранять весь вывод в отдельном файле.

Коды возврата сканнера

Описание кодов возврата утилиты:

  • 0 — успешное завершение работы сканера;
  • 1 — внутренняя ошибка во время работы сканера, следует сообщить об этом разработчикам через форму обратной связи;
  • 2 — запуск сканера с неверным аргументом;
  • 3 — ошибка при загрузке отчёта PVS-Studio в формате .plog;
  • 4 — ошибка при загрузке отчёта PVS-Studio в формате .json;
  • 5 — ошибка при загрузке отчёта PVS-Studio в формате .sarif;
  • 6 — ошибка при запаковке отчёта .pvsmap перед отправкой;
  • 7 — не удалось подключиться к серверу из-за проблем с сетью;
  • 8 — сервер не доступен для приёма отчёта анализатора;
  • 9 — проблема с лицензией на сервере;
  • 10 — указанная ветка проекта не найдена на сервере;
  • 11 — указанная ветка проекта архивирована и не принимает результаты анализа;
  • 12 — проблема с загрузкой отчёта .pvsmap на сервере.

Возможные проблемы и их решение

Ошибка "The SSL connection could not be established"

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

Если в вашей компании для внутренних сервисов используется самоподписанный (самозаверенный) сертификат, его необходимо передать в контейнер с Atlas Scanner с помощью параметра -v:

-v "/path/to/rootCA.crt":"/etc/ssl/certs/my-server-cert.crt:ro"

Ошибка "Connection refused" на macOS

Если ваш Atlas Server развёрнут в локальной сети, то могут возникнуть проблемы при загрузке результатов анализа на macOS. В одной из версий Docker Desktop появился регрессионный баг (подтверждён официально), который ломает доступ из контейнера к локальным IP.

На момент весны 2026 он продолжает воспроизводиться в macOS Tahoe. Рекомендуем рассмотреть альтернативы Docker Desktop, например OrbStack.

После установки OrbStack проверьте, какой движок Docker является активным:

docker context ls

Если это не OrbStack, то поставьте рядом с ним звёздочку с помощью команды:

docker context use orbstack