Инструкция по импорту результатов разметки предупреждений SVACE

В настоящей инструкции описывается как импортировать разметку предупреждений SVACE, подготовленную в рамках Технологического центра исследования безопасности ядра Linux, в собственный Svacer и применить её для своей ветки ядра. Также рассматривается вопрос что делать, если разметка предупреждений не применяется из-за разницы в путях к файлам.

Выгрузка и загрузка разметки Svacer осуществляется путем экспорта снимка с одного сервера и импорта в другой. Операции экспорта и импорта доступны только пользователю с правами администратора (ролью admin).

Получение разметки для ядра Linux

Снимки разметок предупреждений SVACE, подготовленные в рамках Технологического центра исследования безопасности ядра Linux, доступны для Партнёров по ссылке.

Конфигурация сервера (опционально)

В случае, если Svacer находится за reverse proxy (в частности – nginx), то для загрузки больших файлов требуется увеличить лимит в конфигурации reverse proxy. Для этого добавьте параметр client_max_body_size с соответствующим значением в секцию server конфигурационного файла nginx, где описана конфигурация для Svacer.

server {
   ...
   client_max_body_size 4096M;
   ...
}

Загрузка (import)

В другом Svacer, в Settings > Projects выберите Import snapshot в контекстном меню ветки, в которую планируете загрузить результаты.

Svace Import 4

Выберите скачанный файл и задайте имя снимка, нажмите Import.

Svace Import 5

Дождитесь завершения импорта.

Svace Import 6

Изменение путей

Разметка предупреждений наследуется между всеми снимками в ветке однако если у импортированного снимка пути к файлам в предупреждениях отличаются от путей в существующих снимках, Svacer не сможет сопоставить предупреждения и применить разметку из импортированного снимка к предупреждениям в существующих снимках (равно как и разметку в существующих снимках к предупреждениям в импортированном).

В качестве решения можно выполнить консольную команду svacer markup update для изменения путей в снимках.

Синтаксис:

svacer markup update --host --user --password --project --branch --pathPrefix [1, 2, …, N]

  • host – адрес сервера Svacer
  • user, password – имя пользователя и пароль учетной записи на сервере
  • project – проект на сервере Svacer, в котором будет обновлена разметка
  • branch – ветка в выбранном выше проекте (по умолчанию master), в которой будет обновлена разметка
  • pathPrefix – правило отображения для префиксов путей в формате prefix:replacement;prefix2:replacement2

В конце команды опционально могут быть указаны имена или идентификаторы снимков, в которых будет обновлена разметка в соответствии с указанными префиксами путей. Если они указаны не будут, изменения будут применены ко всей ветке. После запуска команды на сервер будет отправлен асинхронный запрос на обновление разметки, за дальнейшим прогрессом исполнения можно следить в журнале сервера (через пользовательский интерфейс он доступен пользователям с ролью admin в Settings > Server information).

Описание всех параметров команды можно посмотреть, выполнив команду svacer markup update --help

Пример:

В существующих снимках пути начинались с префикса /.build/, а импортированный снимок имеет префикс /.build/linux/, таким образом, чтобы разметка предупреждений сопоставилась, требуется привести все префиксы путей к виду /.build/. Для этого запустим команду для импортированного снимка следующим образом:

svacer markup update --user admin --password admin --project lvc-linux --branch linux-5.10.y --pathPrefix /.build/linux/:/.build/ snapshot-imported

  • поскольку не указаны порты и адрес сервера, предполагается, что команда выполняется с того же хоста, где запущен сервер Svacer, а порты используются по умолчанию
  • --pathPrefix /.build/linux/:/.build/ – указываем, что надо заменить префикс пути /.build/linux/ на /.build/
  • snapshot-imported – указываем имя импортированного снимка, чтобы заменить пути только в нем

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

Выгрузка (export)

Для самостоятельной выгрузки разметки в Settings > Projects выберите проект, ветку и снимок, который хотите экспортировать. В списке снимков, в колонке Actions нажмите кнопку Export.

Svace Import 1

Дождитесь завершения экспорта (на больших снимках может занимать несколько минут).

Svace Import 2

После чего скачайте архив по ссылке.

Svace Import 3