Инструкция по импорту результатов разметки предупреждений Svace
В настоящей инструкции описывается как импортировать разметку предупреждений Svace, подготовленную в рамках Центра исследования безопасности ядра Linux, в собственный Svacer и применить её для своей ветки ядра. Также рассматривается вопрос что делать, если разметка предупреждений не применяется из-за разницы в путях к файлам.
Выгрузка и загрузка разметки Svacer осуществляется путем экспорта снимка с одного сервера и импорта в другой. Операции экспорта и импорта доступны только пользователю с правами администратора (ролью admin).
Получение разметки для ядра Linux
Снимки разметок предупреждений Svace, подготовленные в рамках Центра исследования безопасности ядра Linux, доступны для Партнёров по ссылке для версии ядра 5.10, 6.1 и 6.12.
Конфигурация сервера (опционально)
В случае, если 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 в контекстном меню ветки, в которую планируете загрузить результаты.

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

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

Изменение путей
Разметка предупреждений наследуется между всеми снимками в ветке однако если у импортированного снимка пути к файлам в предупреждениях отличаются от путей в существующих снимках, Svacer не сможет сопоставить предупреждения и применить разметку из импортированного снимка к предупреждениям в существующих снимках (равно как и разметку в существующих снимках к предупреждениям в импортированном).
В качестве решения можно выполнить консольную команду svacer markup update для изменения путей в снимках.
Синтаксис:
svacer markup update --host <host> --user <user> --password <password> \
--project <project id; or name> --branch <branch id or name> \
--pathPrefix <prefix:replacement; prefix:replacement> \
[<snapshot id or name>1, <snapshot id or name>2, …, <snapshot id or name>N]
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.

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

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