Help:Introduction: Difference between revisions

From Svacer Wiki
m (change postgresql version)
(add info about postgres dependency and client/server features)
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Help]]
[[Category:Help]]
== Введение ==
== Введение ==
Сервер историй '''Svacer''' ('''''Svace Server''''') предназначен для хранения и обработки результатов работы статического анализатора Svace. Он разработан с целью заменить старый сервер историй, встроенный в анализатор Svace. Допускается одновременное использование старого и нового серверов.


Svacer предназначен для хранения и обработки результатов статического анализатора Svace и других анализаторов, поддерживающих формат [[Help:Sarif#Загрузка_на_сервер_из_SARIF|SARIF]].
Svacer состоит из единственного исполняемого файла, который можно запустить как в [[Help:Installation|режиме сервера]] для хранения и обработки результатов анализа (при этом требуется PostgreSQL с созданной для Svacer БД), так и использовать как клиент для взаимодействия с этим сервером (в этом случае никаких зависимостей не требуется). Будучи запущенным в качестве сервера, Svacer предоставляет [[Help:ServerClient#Вход_в_сервер|web-UI]] и [[Help:ServerClient#Публичные_REST_запросы|REST API]] для взаимодействия. При использовании Svacer как клиента доступны команды для [[Help:ServerClient#Процесс_импорта|импорта]] предупреждений, [[Help:ServerClient#Загрузка_данных_на_сервер|загрузки]] их на сервер и прочие.
 
Svacer состоит из двух исполняемых файлов: сервера и клиента
* Сервер используется для хранения и обработки результатов анализа, для [[Help:Installation|запуска]] нужен PostgreSQL с созданной БД
* Клиент — для взаимодействия с сервером, для него никакие зависимости не требуются
 
Запущенный сервер Svacer предоставляет [[Help:UI_manual#Авторизация_в_пользовательском_интерфейсе_сервера_Svacer|web-UI]] и [[Help:Public_API|REST API]] для взаимодействия.  
 
В клиенте Svacer доступны команды для [[Help:Import_from_Svace|импорта]] предупреждений, [[Help:Import_from_Svace#Загрузка_данных_на_сервер|загрузки]] их на сервер и прочего взаимодействия с сервером.


=== Термины ===
=== Термины ===
Line 16: Line 9:
{| class="wikitable"
{| class="wikitable"
|-
|-
| Project
| ''Project''
| Проект, подлежащий анализу. По умолчанию именем проекта считается имя директории, в которой был запущен ''svace build'' и ''svace analyze''.
| Проект, подлежащий анализу. По умолчанию именем проекта считается имя директории, в которой был запущен ''svace build'' и ''svace analyze''.
На сервере проект содержит в себе несколько веток с результатами работы анализатора
На сервере проект содержит в себе несколько '''branch''' с результатами работы анализатора
|-
|-
| Branch (ветка)
| ''Branch (ветка)''
| Ветка в проекте с результатами работы анализатора. По умолчанию — master
| Ветка в проекте с результатами работы анализатора. По умолчанию проект имеет одну ветку — master
|-
|-
| Snapshot (снимок)
| ''Snapshot (снимок)''
| Результат работы ''svace analyze'', импортированный в промежуточное хранилище или на сервер. Содержит:
| Результат работы ''svace analyze'', импортированный в промежуточное хранилище или на сервер. Содержит:
* имя проекта;
* имя проекта;
Line 31: Line 24:
* вспомогательная информация для навигации по исходникам;
* вспомогательная информация для навигации по исходникам;
* дополнительные данные;
* дополнительные данные;
Допускается импорт снимков без исходного кода и дополнительной информации
Допускается импортирование снимков без исходного кода и дополнительной информации
|-
| ''Marker (маркер, предупреждение)''
| Предупреждение от Svace с информацией о позиции в исходном файле
|-
|-
| Marker (маркер, предупреждение)
| ''Svacer''
| Предупреждение от статического анализатора с информацией о позиции в исходном файле
| Svace History Server, а также исполняемый файл, содержащий код сервера
|-
|-
| Разметка
| ''Разметка''
| Проставление статуса маркера с опциональным добавлением комментария
| Проставление статуса маркера с опциональным добавлением комментария
|}
|}
Line 44: Line 40:
{| class="wikitable"
{| class="wikitable"
|-  
|-  
| bin/svacer-server<br>bin/svacer-server.exe
| '''bin/svacer<br>bin/svacer.exe'''
| Бинарный файл сервера
| Бинарный файл сервера и утилита для импортирования результатов. Режим работы зависит от аргументов
|-
|-
| bin/svacer<br>bin/svacer.exe
| '''support/svace-migration/svace-migration.jar'''
| Бинарный файл клиента
| Утилита подготовки данных для импорта из старого сервера историй.
Требует JDK для запуска. Может использоваться JDK из состава дистрибутива Svace
|-
|-
| extra/docker-compose*.yml  
| '''extra/docker-compose*.yml''' || Docker-compose файлы для запуска БД PostgreSQL и Svacer в docker-контейнерах
| docker-compose файлы для запуска БД PostgreSQL и Svacer в docker-контейнерах
|-
| '''integrations/vscode''' || Расширение для Visual Studio Code и документация на него
|}
|}


Line 58: Line 56:
{| class="wikitable"
{| class="wikitable"
|-  
|-  
| PostgreSQL версии 15 и выше. Нужен только для сервера
| PostgreSQL версии 10 и выше. Требуется только при запуске Svacer в роли сервера
| Параметры подключения определяются при запуске сервера аргументом '''--pg''' или переменной окружения SVACER_PG_URL. По умолчанию: '''postgres://svace:svace@0.0.0.0:5432/svace'''<br/>
| Параметры подключения определяются аргументом при запуске сервера или переменной окружения SVACER_PG_URL. По умолчанию, используется следующий connect URL:
Можно запускать PostgreSQL в docker-контейнере, но в production мы рекомендуем использовать выделенный сервер
'''postgres://svace:svace@0.0.0.0:5432/svace'''<br>
Можно использовать PostgreSQL в docker-контейнере.<br>
'''Настоятельно рекомендуем''' использовать выделенный сервер для хранения БД, особенно в production
|-
|-
| libc.so<br>libpthread.so<br>libdl.so<br>linux-vdso.so
| libc.so<br>libpthread.so<br>libdl.so<br>linux-vdso.so
| Серверная часть написана на Go с CGO_ENABLED=1 ввиду необходимости читать sqlite-файлы из результатов работы анализатора Svace
| Серверная часть написана на Go с CGO_ENABLED=1 ввиду необходимости читать sqlite-файлы из результатов работы анализатора Svace
|-
|-
| Директория для хранения object storage
| Выделенная директория для хранения object storage
| Сервер использует встроенную key-value database для хранения информации об исходном коде: контент-файлов и вспомогательной информации для навигации
| Сервер использует встроенную key-value database для хранения информации об исходном коде: контент-файлов и вспомогательной информации для навигации
|-
|-
| Svace
| Svace
| Нужен для импорта результатов анализа из .svace-dir. При этом лицензия на Svace нужна только для анализа, для импорта она не требуется
| Для импорта данных на сервер историй требуется наличие Svace на хосте, откуда происходит импорт. Svace используется для получения информации из .svace-dir
|}
|}


Line 78: Line 78:
|-
|-
| 3002
| 3002
| Используется для предоставления gRPC API (внутренний API для загрузки данных на сервер)
| Используется для предоставления gRPC API.
gRPC API является внутренним и предназначен для загрузки данных на сервер
|-
|-
| 8080
| 8080
| Используется для REST API и web-сервера для предоставления web-UI
| Используется для предоставления REST API и web-сервера для предоставления web-UI
|}
|}


Line 88: Line 89:
|-
|-
| CPU
| CPU
| x86-64. Для больших проектов рекомендуется не менее 8 ядер
| x86-64. Для обработки больших проектов рекомендуется не менее 8 ядер
|-
|-
| RAM
| RAM
| От 4 ГБ. При обновлении между версиями лучше не меньше 8 ГБ. Для больших проектов 16+ ГБ
| От 4 Гб. Для обработки больших проектов рекомендуется не менее 16 Гб
|-
|-
| HDD
| HDD
| От 1 ГБ до нескольких ТБ при хранении множества снимков больших проектов
| От 1 Гб до нескольких Тб при хранении множества снимков больших проектов
|-
|-
| OS
| OS
Line 100: Line 101:
* Ubuntu 18 и выше
* Ubuntu 18 и выше
* Debian 10 и выше
* Debian 10 и выше
* RHEL/CentOS 8
* RHEL/CentOS 7 и 8
* Astra Linux Special Edition 1.7, базовый уровень защищенности
* Astra Linux Special Edition 1.7, базовый уровень защищенности
* Alt Linux p8 и выше
* Microsoft Windows 10 (build 19043.2130, build 19044.2130)
* Microsoft Windows 10
|-
| Browser
|
В качестве клиента для веб-интерфейса Svacer
* Chrome 103 и выше
* Firefox 100 и выше
* Opera 89 и выше
* Safari 16 и выше
* Edge 103 и выше
|}
|}

Revision as of 19:04, 26 January 2023

Введение

Сервер историй Svacer (Svace Server) предназначен для хранения и обработки результатов работы статического анализатора Svace. Он разработан с целью заменить старый сервер историй, встроенный в анализатор Svace. Допускается одновременное использование старого и нового серверов.

Svacer состоит из единственного исполняемого файла, который можно запустить как в режиме сервера для хранения и обработки результатов анализа (при этом требуется PostgreSQL с созданной для Svacer БД), так и использовать как клиент для взаимодействия с этим сервером (в этом случае никаких зависимостей не требуется). Будучи запущенным в качестве сервера, Svacer предоставляет web-UI и REST API для взаимодействия. При использовании Svacer как клиента доступны команды для импорта предупреждений, загрузки их на сервер и прочие.

Термины

Project Проект, подлежащий анализу. По умолчанию именем проекта считается имя директории, в которой был запущен svace build и svace analyze.

На сервере проект содержит в себе несколько branch с результатами работы анализатора

Branch (ветка) Ветка в проекте с результатами работы анализатора. По умолчанию проект имеет одну ветку — master
Snapshot (снимок) Результат работы svace analyze, импортированный в промежуточное хранилище или на сервер. Содержит:
  • имя проекта;
  • имя ветки;
  • результаты анализа (предупреждения);
  • исходники, которые были включены в build, на котором производился анализ;
  • вспомогательная информация для навигации по исходникам;
  • дополнительные данные;

Допускается импортирование снимков без исходного кода и дополнительной информации

Marker (маркер, предупреждение) Предупреждение от Svace с информацией о позиции в исходном файле
Svacer Svace History Server, а также исполняемый файл, содержащий код сервера
Разметка Проставление статуса маркера с опциональным добавлением комментария

Состав дистрибутива

bin/svacer
bin/svacer.exe
Бинарный файл сервера и утилита для импортирования результатов. Режим работы зависит от аргументов
support/svace-migration/svace-migration.jar Утилита подготовки данных для импорта из старого сервера историй.

Требует JDK для запуска. Может использоваться JDK из состава дистрибутива Svace

extra/docker-compose*.yml Docker-compose файлы для запуска БД PostgreSQL и Svacer в docker-контейнерах
integrations/vscode Расширение для Visual Studio Code и документация на него

Зависимости

PostgreSQL версии 10 и выше. Требуется только при запуске Svacer в роли сервера Параметры подключения определяются аргументом при запуске сервера или переменной окружения SVACER_PG_URL. По умолчанию, используется следующий connect URL:

postgres://svace:svace@0.0.0.0:5432/svace
Можно использовать PostgreSQL в docker-контейнере.
Настоятельно рекомендуем использовать выделенный сервер для хранения БД, особенно в production

libc.so
libpthread.so
libdl.so
linux-vdso.so
Серверная часть написана на Go с CGO_ENABLED=1 ввиду необходимости читать sqlite-файлы из результатов работы анализатора Svace
Выделенная директория для хранения object storage Сервер использует встроенную key-value database для хранения информации об исходном коде: контент-файлов и вспомогательной информации для навигации
Svace Для импорта данных на сервер историй требуется наличие Svace на хосте, откуда происходит импорт. Svace используется для получения информации из .svace-dir

Используемые порты

Приведены значения по умолчанию. Все значения могут быть переопределены.

3002 Используется для предоставления gRPC API.

gRPC API является внутренним и предназначен для загрузки данных на сервер

8080 Используется для предоставления REST API и web-сервера для предоставления web-UI

Системные требования

CPU x86-64. Для обработки больших проектов рекомендуется не менее 8 ядер
RAM От 4 Гб. Для обработки больших проектов рекомендуется не менее 16 Гб
HDD От 1 Гб до нескольких Тб при хранении множества снимков больших проектов
OS
  • Ubuntu 18 и выше
  • Debian 10 и выше
  • RHEL/CentOS 7 и 8
  • Astra Linux Special Edition 1.7, базовый уровень защищенности
  • Microsoft Windows 10 (build 19043.2130, build 19044.2130)