Хмарні провайдери
Хмарні провайдери підключають Quality Hub у SnakeFlow до зовнішніх сервісів (SonarCloud, Snyk, GitHub Code Scanning тощо). Вони для команд, які вже запускають аналіз у CI або на SaaS-дашборді й хочуть бачити ці сигнали поруч із локальними перевірками в сайдбарі.
Як хмарні перевірки вписані в Quality Hub
- Як завжди, ви обираєте проєкт SnakeFlow (папку workspace).
- Для кожного потрібного провайдера вмикаєте
devManager.quality.<id>.enabledуtrueі заповнюєте обов’язкові токени чи ID (докладно в розділах нижче). - Запуск з Quality Hub (Run / Refresh) або з палітри (SnakeFlow: Run Quality Checks / шорткат
Ctrl+Alt+F, якщо налаштовано). - Увімкнені провайдери виконуються паралельно з вбудованими та CLI-перевірками. Кожен хмарний виклик має короткий HTTP-таймаут (близько 15 секунд) на запит до API.
- Результати з’являються в дереві після завершення кожної перевірки. Можна розгортати деталі, відкривати URL у браузері або Send to Chat для зведеного звіту.
Чого хмарні перевірки не роблять
Увімкнення та конфігурація (загальна схема)
- Відкрийте Налаштування і знайдіть
devManager.qualityабо назву провайдера (наприкладsonarcloud). - Установіть
devManager.quality.<id>.enabledуtrue. - Заповніть обов’язкові поля (у кожному розділі є таблиця). Опційні поля змінюють пороги, фільтри, текст запиту тощо.
- Переконайтеся, що той самий репозиторій підключений у веб-інтерфейсі вендора (проєкт Sonar, проєкт Snyk, репо Codecov…) і що CI або GitHub-додаток уже передав дані.
Безпека токенів: персональні токени — у User settings; спільні для команди — у Workspace (обережно з комітом .vscode/settings.json у git).
SonarCloud (sonarcloud)
Призначення: Показати SonarCloud (або self-hosted SonarQube через serverUrl) quality gate і ключові метрики: bugs, vulnerabilities, code smells, coverage %, duplication %, security hotspots.
Передумови: Проєкт SonarCloud з уже виконаними аналізами (зазвичай з CI). Потрібні user token і project key з Sonar.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.sonarcloud.enabled | Так | Увімкнути провайдер. |
devManager.quality.sonarcloud.token | Так | API token (SonarCloud: My Account → Security). |
devManager.quality.sonarcloud.projectKey | Так | Ключ проєкту з інформації про проєкт у Sonar. |
devManager.quality.sonarcloud.serverUrl | Ні | За замовчуванням https://sonarcloud.io. Вкажіть URL вашого SonarQube, якщо не використовуєте SonarCloud. |
Що відбувається під час запуску
- SnakeFlow перевіряє наявність
tokenіprojectKey; інакше результат — not configured. - Надсилає автентифікований GET до Sonar Web API
api/measures/componentз ключами метрик:alert_status,bugs,vulnerabilities,code_smells,coverage,security_hotspots,duplicated_lines_density. - Мапить Quality Gate
alert_statusна pass / warn / fail (OK→ pass,WARN→ warn, інакше fail). - Формує однорядковий summary (gate + лічильники + за потреби coverage і duplication). Якщо hotspots > 0, додається короткий рядок details.
- Open in browser веде на дашборд Sonar для цього проєкту.
Офіційна документація: SonarQube Cloud Web API
Snyk (snyk)
Призначення: Підсумувати відкриті issues у організації Snyk (залежності та code findings, які Snyk уже знає), згруповані за effective severity.
Передумови: Організація Snyk з моніторингом або сканом проєктів; REST API token і Organization ID.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.snyk.enabled | Так | Увімкнути провайдер. |
devManager.quality.snyk.token | Так | Personal API token з налаштувань акаунту Snyk. |
devManager.quality.snyk.orgId | Так | Organization ID (Org settings у Snyk UI). |
devManager.quality.snyk.baseUrl | Ні | За замовчуванням https://api.snyk.io; для регіональних орг використовуйте EU/AU endpoints. |
Що відбувається під час запуску
- SnakeFlow перевіряє
tokenіorgId; інакше not configured. - Викликає Snyk REST API
GET /rest/orgs/{orgId}/issues(пагінація до 1000, issues без ignore). - Рахує issues за severity (
critical,high,medium,low). - Status: будь-який critical → fail; будь-який high (без critical) → warn; інакше pass.
- Summary — лічильники за severity або «No vulnerabilities». Посилання відкриває вашу org у Snyk.
Примітка: Це не запускає новий snyk test чи monitor job; лише читає поточний список issues з API.
Офіційна документація: Snyk REST API
Codecov (codecov)
Призначення: Показати загальне покриття тестами % для репозиторію за останнім звітом Codecov і порівняти з порогом, який ви задаєте.
Передумови: Акаунт Codecov прив’язаний до репо; CI завантажує coverage (наприклад action codecov або CLI).
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.codecov.enabled | Так | Увімкнути провайдер. |
devManager.quality.codecov.token | Так | Codecov token (upload / API згідно з документацією Codecov). |
devManager.quality.codecov.owner | Так | Owner або org на GitHub/GitLab/Bitbucket. |
devManager.quality.codecov.repo | Так | Назва репозиторію. |
devManager.quality.codecov.service | Ні | github (за замовчуванням), gitlab або bitbucket. |
devManager.quality.codecov.threshold | Ні | За замовчуванням 80 (%). Нижче порогу → fail; між 90% і 100% від порогу → warn; на порозі або вище → pass. |
Що відбувається під час запуску
- SnakeFlow перевіряє обов’язкові поля.
- Виконує GET Codecov API v2:
/{service}/{owner}/repos/{repo}/. - Якщо немає
totals.coverage→ warn, summary на кшталт «No coverage data yet». - Інакше порівнює % покриття з
threshold, виставляє pass / warn / fail і числовий score (округлений відсоток).
Офіційна документація: Codecov API — repo
Coveralls (coveralls)
Призначення: Прочитати опубліковане покриття % для репо, дзеркаленого на GitHub, з публічного JSON badge Coveralls (те саме число, що часто на README).
Передумови: Репо підключено в Coveralls як github/{owner}/{repo}; CI хоча б раз завантажив coverage.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.coveralls.enabled | Так | Увімкнути провайдер. |
devManager.quality.coveralls.owner | Так | Користувач або org на GitHub. |
devManager.quality.coveralls.repo | Так | Назва репозиторію. |
devManager.quality.coveralls.threshold | Ні | За замовчуванням 80. Та сама логіка pass / warn / fail діапазонів, що в Codecov (відносно порогу). |
Що відбувається під час запуску
- SnakeFlow GET
https://coveralls.io/github/{owner}/{repo}.jsonзAccept: application/json. - Якщо немає
covered_percent→ warn («No coverage data»). - Інакше застосовує діапазон порогу й виставляє score як округлений відсоток.
Примітка: Шлях у розширенні лише для GitHub (/github/). Для приватних репо Coveralls може вимагати автентифікації; реалізація може надсилати Authorization: token …, якщо ви вручну додасте ключ у settings.json там, де підтримується — краще налаштуйте видимість за документацією Coveralls.
Офіційна документація: Coveralls API introduction
Codacy (codacy)
Призначення: Показати оцінку репозиторію Codacy (наприклад A–F) і загальну кількість issues з аналізу Codacy для репо.
Передумови: Репо проаналізовано в Codacy; API token, назви org і repo як у URL Codacy.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.codacy.enabled | Так | Увімкнути провайдер. |
devManager.quality.codacy.token | Так | Account API token (заголовок api-token). |
devManager.quality.codacy.org | Так | Назва організації в Codacy. |
devManager.quality.codacy.repo | Так | Назва репозиторію. |
devManager.quality.codacy.provider | Ні | gh (за замовчуванням), gl або bb для GitHub / GitLab / Bitbucket. |
Що відбувається під час запуску
- SnakeFlow GET Codacy API v3:
/analysis/organizations/{provider}/{org}/repositories/{repo}. - Читає
gradeіtotalIssues, мапить grade на pass / warn / fail (A/B pass; C/D warn; E/F fail). - Посилання відкриває дашборд Codacy для цього репо.
Офіційна документація: Codacy API
DeepSource (deepsource)
Призначення: Підсумувати issues на default branch у DeepSource: bugs, security, anti-patterns, performance з останнього run status, плюс опційні метрики в GraphQL payload.
Передумови: Репо активовано в DeepSource; personal access token; login (GitHub org або user, як відомо DeepSource) і коротка назва repo.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.deepsource.enabled | Так | Увімкнути провайдер. |
devManager.quality.deepsource.token | Так | Personal access token. |
devManager.quality.deepsource.login | Так | Slug акаунту / org у DeepSource. |
devManager.quality.deepsource.repo | Так | Назва репозиторію. |
devManager.quality.deepsource.provider | Ні | gh / gl / bb (або аліаси github / gitlab / bitbucket для URL). |
Що відбувається під час запуску
- SnakeFlow надсилає GraphQL POST на
https://api.deepsource.com/graphql/з запитомrepository(login, name)включно зdefaultBranch.runStatus(introduced occurrences + розподіл за категоріями). - Помилки GraphQL → результат error з повідомленням.
- Якщо
repositorynull → warn (не знайдено / не активовано). - Агрегує лічильники BUG, SECURITY, ANTIPATTERN, PERFORMANCE; fail, якщо security > 0 або bugs > 5, інакше warn, якщо є introduced issues, інакше pass.
- Deep link використовує префікс хоста (
gh,gl,bb) для URL застосунку.
Офіційна документація: DeepSource API
Qlty (qlty)
Призначення: Прочитати метрики проєкту Qlty (категорії maintainability, security, reliability) з Qlty HTTP API.
Передумови: Проєкт Qlty; token; ідентифікатори owner і project як у URL Qlty.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.qlty.enabled | Так | Увімкнути провайдер. |
devManager.quality.qlty.token | Так | Bearer token. |
devManager.quality.qlty.owner | Так | Користувач або org на GitHub (сегмент шляху gh/{owner}). |
devManager.quality.qlty.project | Так | Ключ / slug проєкту в Qlty. |
Що відбувається під час запуску
- SnakeFlow GET
https://qlty.sh/api/v1/gh/{owner}/projects/{project}/metrics. - Знаходить записи метрик з
categorymaintainability,security,reliability. - Status виводиться з рядка grade для maintainability (підтримуються літери A, B, XS, S, M, L, XL за вбудованим мапінгом).
- Посилання відкриває сторінку проєкту Qlty.
Офіційна документація: Qlty API overview
CodeQL (GitHub Code Scanning) (codeql)
Призначення: У SnakeFlow цей провайдер реалізовано як алерти GitHub Code Scanning з фільтром за tool name (за замовчуванням CodeQL). Показує відкриті (або стан з налаштувань) алерти з severity і шляхами до файлів з API GitHub.
Передумови: Репозиторій на GitHub; авторизація GitHub у VS Code з repo і security_events; увімкнено Code scanning і завантажено результати (зазвичай workflow CodeQL у GitHub Actions). Для приватних репо може знадобитися GitHub Advanced Security.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.codeql.enabled | Так | За замовчуванням true у маніфесті розширення — вимкніть, щоб пропускати. |
devManager.quality.codeql.owner | Ні | Авто з git remote, якщо порожньо. |
devManager.quality.codeql.repo | Ні | Авто з git remote, якщо порожньо. |
devManager.quality.codeql.state | Ні | open (за замовчуванням), dismissed або fixed. |
devManager.quality.codeql.tool | Ні | За замовчуванням CodeQL. Порожній рядок у UI налаштувань лише якщо підтримується — щоб включити усі інструменти code scanning. |
Що відбувається під час запуску
- SnakeFlow завжди вважає провайдер «налаштованим»; намагається отримати сесію GitHub. Без авторизації → skip з інструкцією увійти.
- Визначає
owner/repoз git remote або вручних налаштувань; якщо немає → skip. - GET
https://api.github.com/repos/{owner}/{repo}/code-scanning/alertsзstateі опційнимtool_name. - Порожній список → pass. Інакше рахує critical / high / medium (
security_severity_levelіseverity); fail при critical або high; warn при medium; інакше pass. До 15 алертів у details. - При 403/404 — skip з приміткою про public vs Advanced Security.
Офіційна документація: GitHub Code Scanning REST API
Aikido Security (aikido)
Призначення: Показати відкриті групи issues з Aikido (агреговані security / supply-chain знахідки) і за потреби звузити до репо з git remote.
Передумови: Акаунт Aikido; API token; репо підключені в Aikido.
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.aikido.enabled | Так | Увімкнути провайдер. |
devManager.quality.aikido.token | Так | API token. |
devManager.quality.aikido.repoName | Ні | Підказка для фільтра; авто з git remote, якщо порожньо. |
Що відбувається під час запуску
- SnakeFlow GET
https://app.aikido.dev/api/v2/open_issue_groups?per_page=1000. - Якщо git remote дає
owner/repo, фільтрує групи, деaffected_repositoriesзбігаються з назвою репо. Якщо фільтр прибрав усе — fallback на всі issues (щоб лишився сигнал на рівні org). - Кошики severity визначають pass / warn / fail (critical/high → fail; medium → warn). Топ issues у details.
Офіційна документація: Aikido API
Socket.dev (socket)
Призначення: Аналіз supply chain для npm-залежностей — виявляє malicious packages, install scripts, telemetry, typosquatting та підозрілу поведінку. Доповнює CVE-сканери (Snyk, Trivy), які фокусуються лише на відомих уразливостях.
Передумови: Socket.dev акаунт; API token; проєкт із package.json (npm/Yarn/pnpm).
Налаштування
| Налаштування | Обов’язково | Опис |
|---|---|---|
devManager.quality.socket.enabled | Так | Увімкнути провайдер. |
devManager.quality.socket.token | Так | API token з Org Settings → API Tokens. |
devManager.quality.socket.thresholdCritical | Ні | За замовчуванням 0. Понад поріг → fail. |
devManager.quality.socket.thresholdHigh | Ні | За замовчуванням 5. Понад поріг (без critical) → warn. |
Що відбувається під час запуску
- SnakeFlow перевіряє наявність токена; якщо немає — not configured.
- Читає
package.jsonіз кореня проєкту. Якщо файлу немає — skip (Socket.dev підтримує лише npm-проєкти). - Збирає прямі + dev-залежності (до 200 пакетів) і будує список PURL (
pkg:npm/<name>@<version>). Не-registry специфікатори (git:,file:,link:,workspace:) пропускаються. - Робить POST
https://api.socket.dev/v0/purl?actions=score,alertsіз Basic-авторизацією (token:) і JSON-тілом{ components: [{ purl }] }. - Агрегує alerts за severity (
critical,high,middle,low) і обчислює середній supplyChain score. - Status: critical >
thresholdCritical→ fail; high >thresholdHigh→ warn; інакше pass. - Summary містить кількість пакетів-порушників і розподіл за severity. Details — топ-15 пакетів із алертами.
Примітка: Provider не запускає окремий звіт через POST /report/upload; він робить швидкий бульк-запит до POST /v0/purl напряму з direct dependencies. Для повноцінного supply chain reporting (включно з transitive deps) використовуйте Socket CLI або GitHub-додаток.
Офіційна документація: Socket Public API
Зведена таблиця
У поточній версії розширення — десять хмарних інтеграцій (повний перелік — у таблиці нижче та в розділах цієї сторінки). Кожна опційна й типово вимкнена, окрім CodeQL (використовує GitHub-авторизацію IDE).
| ID | Що зчитує SnakeFlow | Звичайна «свіжість» |
|---|---|---|
sonarcloud | Quality gate + знімок метрик | Останній аналіз Sonar |
snyk | Список issues орга (REST) | Останній імпорт/скан Snyk |
codecov | Загальне покриття репо | Останнє завантаження в Codecov |
coveralls | JSON badge % покриття | Останнє завантаження в Coveralls |
codacy | Grade + кількість issues | Останній аналіз Codacy |
deepsource | Статус прогону default branch (GraphQL) | Останній прогін DeepSource |
qlty | JSON метрик проєкту | Останній розрахунок Qlty |
codeql | Алерти GitHub code scanning | Останній upload у GitHub |
aikido | Відкриті групи issues | Стан платформи Aikido |
socket | Supply-chain alerts по npm-залежностях (PURL bulk) | Поточний стан Socket.dev |
Пов’язані сторінки
- Огляд Quality Hub — запуск, таймаути, skip dirs, звіт у чат
- Вбудовані перевірки — локальні евристики
- CLI-інструменти — Semgrep, Trivy тощо
- Користувацькі перевірки — власні скрипти