Help:Introduction: Difference between revisions

From Svacer Wiki
Jump to navigation Jump to search
No edit summary
(update due to client/server binaries split)
 
(37 intermediate revisions by 5 users not shown)
Line 1: Line 1:
__FORCETOC__
[[Category:Help]]
 
== Введение ==
<big>'''Svace History Server'''<br>
''Version 6.0.0''</big><br>


Svacer предназначен для хранения и обработки результатов статического анализатора Svace и других анализаторов, поддерживающих формат [[Help:Sarif#Загрузка_на_сервер_из_SARIF|SARIF]].


__TOC__
Svacer состоит из двух исполняемых файлов: сервера и клиента
* Сервер используется для хранения и обработки результатов анализа, для [[Help:Installation|запуска]] нужен PostgreSQL с созданной БД
* Клиент — для взаимодействия с сервером, для него никакие зависимости не требуются


== Введение ==
Запущенный сервер Svacer предоставляет [[Help:UI_manual#Авторизация_в_пользовательском_интерфейсе_сервера_Svacer|web-UI]] и [[Help:Public_API|REST API]] для взаимодействия.  
Сервер историй '''Svacer''' ('''''Svace Server''''') предназначен для хранения и обработки результатов работы статического анализатора Svace. Он разработан с целью заменить старый сервер историй, встроенный в анализатор Svace.
Допускается одновременное использование старого и нового серверов.


В клиенте Svacer доступны команды для [[Help:Import_from_Svace|импорта]] предупреждений, [[Help:Import_from_Svace#Загрузка_данных_на_сервер|загрузки]] их на сервер и прочего взаимодействия с сервером.


=== Термины ===
=== Термины ===
Line 16: Line 16:
{| 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 31:
* вспомогательная информация для навигации по исходникам;
* вспомогательная информация для навигации по исходникам;
* дополнительные данные;
* дополнительные данные;
Допускается импортирование снимков без исходного кода и дополнительной информации
Допускается импорт снимков без исходного кода и дополнительной информации
|-
| ''Marker (маркер, предупреждение)''
| Предупреждение от Svace с информацией о позиции в исходном файле
|-
|-
| ''Svacer''
| Marker (маркер, предупреждение)
| Svace History Server, а также исполняемый файл, содержащий код сервера
| Предупреждение от статического анализатора с информацией о позиции в исходном файле
|-
|-
| ''Разметка''
| Разметка
| Проставление статуса маркера с опциональным добавлением комментария
| Проставление статуса маркера с опциональным добавлением комментария
|}
|}


=== Состав дистрибутива ===
=== Состав дистрибутива ===
Line 48: Line 44:
{| class="wikitable"
{| class="wikitable"
|-  
|-  
| '''bin/svacer<br>bin/svacer.exe'''
| bin/svacer-server<br>bin/svacer-server.exe
| Бинарный файл сервера и утилита для импортирования результатов. Режим работы зависит от аргументов
| Бинарный файл сервера
|-
| '''support/svace-migration/svace-migration.jar'''
| Утилита подготовки данных для импорта из старого сервера историй.
Требует JDK для запуска. Может использоваться JDK из состава дистрибутива Svace
|-
|-
| '''extra/docker-compose*.yml''' || Docker-compose файлы для запуска БД PostgreSQL и Svacer в docker-контейнерах
| bin/svacer<br>bin/svacer.exe
| Бинарный файл клиента
|-
|-
| '''integrations/vscode''' || Расширение для Visual Studio Code и документация на него
| extra/docker-compose*.yml || Docker-compose файлы для запуска БД PostgreSQL и Svacer в docker-контейнерах
|}
|}


=== Зависимости ===
=== Зависимости ===
Line 65: Line 57:
{| class="wikitable"
{| class="wikitable"
|-  
|-  
| PostgreSQL
| PostgreSQL версии 10 и выше. Нужен только для сервера
версии не ниже 10
| Параметры подключения определяются при запуске сервера аргументом '''--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
Line 78: Line 67:
| Сервер использует встроенную key-value database для хранения информации об исходном коде: контент-файлов и вспомогательной информации для навигации
| Сервер использует встроенную key-value database для хранения информации об исходном коде: контент-файлов и вспомогательной информации для навигации
|-
|-
| svace
| Svace
| Для импорта данных на сервер историй требуется наличие Svace на хосте, откуда происходит импорт. Svace используется для получения информации из .svace-dir
| Svace используется для получения информации из .svace-dir, поэтому для импорта его результатов анализа нужно, чтобы он был на хосте. При импорте результатов из SARIF Svace не нужен
|}
|}


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


 
=== Системные требования ===
[[Category:Help|Разделы]]
{| class="wikitable"
|-
| CPU
| x86-64. Для больших проектов рекомендуется не менее 8 ядер
|-
| RAM
| От 4 Гб. Для больших проектов рекомендуется не менее 16 Гб
|-
| HDD
| От 1 Гб до нескольких Тб при хранении множества снимков больших проектов
|-
| OS
|
* Ubuntu 18 и выше
* Debian 10 и выше
* RHEL/CentOS 7 и 8
* Astra Linux Special Edition 1.7, базовый уровень защищенности
* Alt Linux p8 и выше
* Microsoft Windows 10
|-
| Browser
|
В качестве клиента для веб-интерфейса Svacer
* Chrome 103 и выше
* Firefox 100 и выше
* Opera 89 и выше
* Safari 16 и выше
* Edge 103 и выше
|}

Latest revision as of 14:48, 7 May 2024

Введение

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

Svacer состоит из двух исполняемых файлов: сервера и клиента

  • Сервер используется для хранения и обработки результатов анализа, для запуска нужен PostgreSQL с созданной БД
  • Клиент — для взаимодействия с сервером, для него никакие зависимости не требуются

Запущенный сервер Svacer предоставляет web-UI и REST API для взаимодействия.

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

Термины

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

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

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

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

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

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

bin/svacer-server
bin/svacer-server.exe
Бинарный файл сервера
bin/svacer
bin/svacer.exe
Бинарный файл клиента
extra/docker-compose*.yml Docker-compose файлы для запуска БД PostgreSQL и Svacer в docker-контейнерах

Зависимости

PostgreSQL версии 10 и выше. Нужен только для сервера Параметры подключения определяются при запуске сервера аргументом --pg или переменной окружения SVACER_PG_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-dir, поэтому для импорта его результатов анализа нужно, чтобы он был на хосте. При импорте результатов из SARIF Svace не нужен

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

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

3002 Используется для предоставления gRPC API (внутренний 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, базовый уровень защищенности
  • Alt Linux p8 и выше
  • Microsoft Windows 10
Browser

В качестве клиента для веб-интерфейса Svacer

  • Chrome 103 и выше
  • Firefox 100 и выше
  • Opera 89 и выше
  • Safari 16 и выше
  • Edge 103 и выше