Перейти до вмісту

Хмарні провайдери

Хмарні провайдери підключають Quality Hub у SnakeFlow до зовнішніх сервісів (SonarCloud, Snyk, GitHub Code Scanning тощо). Вони для команд, які вже запускають аналіз у CI або на SaaS-дашборді й хочуть бачити ці сигнали поруч із локальними перевірками в сайдбарі.

Як хмарні перевірки вписані в Quality Hub

  1. Як завжди, ви обираєте проєкт SnakeFlow (папку workspace).
  2. Для кожного потрібного провайдера вмикаєте devManager.quality.<id>.enabled у true і заповнюєте обов’язкові токени чи ID (докладно в розділах нижче).
  3. Запуск з Quality Hub (Run / Refresh) або з палітри (SnakeFlow: Run Quality Checks / шорткат Ctrl+Alt+F, якщо налаштовано).
  4. Увімкнені провайдери виконуються паралельно з вбудованими та CLI-перевірками. Кожен хмарний виклик має короткий HTTP-таймаут (близько 15 секунд) на запит до API.
  5. Результати з’являються в дереві після завершення кожної перевірки. Можна розгортати деталі, відкривати URL у браузері або Send to Chat для зведеного звіту.

Чого хмарні перевірки не роблять

Увімкнення та конфігурація (загальна схема)

  1. Відкрийте Налаштування і знайдіть devManager.quality або назву провайдера (наприклад sonarcloud).
  2. Установіть devManager.quality.<id>.enabled у true.
  3. Заповніть обов’язкові поля (у кожному розділі є таблиця). Опційні поля змінюють пороги, фільтри, текст запиту тощо.
  4. Переконайтеся, що той самий репозиторій підключений у веб-інтерфейсі вендора (проєкт 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.

Що відбувається під час запуску

  1. SnakeFlow перевіряє наявність token і projectKey; інакше результат — not configured.
  2. Надсилає автентифікований GET до Sonar Web API api/measures/component з ключами метрик: alert_status, bugs, vulnerabilities, code_smells, coverage, security_hotspots, duplicated_lines_density.
  3. Мапить Quality Gate alert_status на pass / warn / fail (OK → pass, WARN → warn, інакше fail).
  4. Формує однорядковий summary (gate + лічильники + за потреби coverage і duplication). Якщо hotspots > 0, додається короткий рядок details.
  5. 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.

Що відбувається під час запуску

  1. SnakeFlow перевіряє token і orgId; інакше not configured.
  2. Викликає Snyk REST API GET /rest/orgs/{orgId}/issues (пагінація до 1000, issues без ignore).
  3. Рахує issues за severity (critical, high, medium, low).
  4. Status: будь-який critical → fail; будь-який high (без critical) → warn; інакше pass.
  5. 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.

Що відбувається під час запуску

  1. SnakeFlow перевіряє обов’язкові поля.
  2. Виконує GET Codecov API v2: /{service}/{owner}/repos/{repo}/.
  3. Якщо немає totals.coveragewarn, summary на кшталт «No coverage data yet».
  4. Інакше порівнює % покриття з 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 (відносно порогу).

Що відбувається під час запуску

  1. SnakeFlow GET https://coveralls.io/github/{owner}/{repo}.json з Accept: application/json.
  2. Якщо немає covered_percentwarn («No coverage data»).
  3. Інакше застосовує діапазон порогу й виставляє 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.

Що відбувається під час запуску

  1. SnakeFlow GET Codacy API v3: /analysis/organizations/{provider}/{org}/repositories/{repo}.
  2. Читає grade і totalIssues, мапить grade на pass / warn / fail (A/B pass; C/D warn; E/F fail).
  3. Посилання відкриває дашборд 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).

Що відбувається під час запуску

  1. SnakeFlow надсилає GraphQL POST на https://api.deepsource.com/graphql/ з запитом repository(login, name) включно з defaultBranch.runStatus (introduced occurrences + розподіл за категоріями).
  2. Помилки GraphQL → результат error з повідомленням.
  3. Якщо repository null → warn (не знайдено / не активовано).
  4. Агрегує лічильники BUG, SECURITY, ANTIPATTERN, PERFORMANCE; fail, якщо security > 0 або bugs > 5, інакше warn, якщо є introduced issues, інакше pass.
  5. 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.

Що відбувається під час запуску

  1. SnakeFlow GET https://qlty.sh/api/v1/gh/{owner}/projects/{project}/metrics.
  2. Знаходить записи метрик з category maintainability, security, reliability.
  3. Status виводиться з рядка grade для maintainability (підтримуються літери A, B, XS, S, M, L, XL за вбудованим мапінгом).
  4. Посилання відкриває сторінку проєкту 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.

Що відбувається під час запуску

  1. SnakeFlow завжди вважає провайдер «налаштованим»; намагається отримати сесію GitHub. Без авторизації → skip з інструкцією увійти.
  2. Визначає owner/repo з git remote або вручних налаштувань; якщо немає → skip.
  3. GET https://api.github.com/repos/{owner}/{repo}/code-scanning/alerts з state і опційним tool_name.
  4. Порожній список → pass. Інакше рахує critical / high / medium (security_severity_level і severity); fail при critical або high; warn при medium; інакше pass. До 15 алертів у details.
  5. При 403/404skip з приміткою про 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, якщо порожньо.

Що відбувається під час запуску

  1. SnakeFlow GET https://app.aikido.dev/api/v2/open_issue_groups?per_page=1000.
  2. Якщо git remote дає owner/repo, фільтрує групи, де affected_repositories збігаються з назвою репо. Якщо фільтр прибрав усе — fallback на всі issues (щоб лишився сигнал на рівні org).
  3. Кошики 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.

Що відбувається під час запуску

  1. SnakeFlow перевіряє наявність токена; якщо немає — not configured.
  2. Читає package.json із кореня проєкту. Якщо файлу немає — skip (Socket.dev підтримує лише npm-проєкти).
  3. Збирає прямі + dev-залежності (до 200 пакетів) і будує список PURL (pkg:npm/<name>@<version>). Не-registry специфікатори (git:, file:, link:, workspace:) пропускаються.
  4. Робить POST https://api.socket.dev/v0/purl?actions=score,alerts із Basic-авторизацією (token:) і JSON-тілом { components: [{ purl }] }.
  5. Агрегує alerts за severity (critical, high, middle, low) і обчислює середній supplyChain score.
  6. Status: critical > thresholdCritical → fail; high > thresholdHigh → warn; інакше pass.
  7. 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Звичайна «свіжість»
sonarcloudQuality gate + знімок метрикОстанній аналіз Sonar
snykСписок issues орга (REST)Останній імпорт/скан Snyk
codecovЗагальне покриття репоОстаннє завантаження в Codecov
coverallsJSON badge % покриттяОстаннє завантаження в Coveralls
codacyGrade + кількість issuesОстанній аналіз Codacy
deepsourceСтатус прогону default branch (GraphQL)Останній прогін DeepSource
qltyJSON метрик проєктуОстанній розрахунок Qlty
codeqlАлерти GitHub code scanningОстанній upload у GitHub
aikidoВідкриті групи issuesСтан платформи Aikido
socketSupply-chain alerts по npm-залежностях (PURL bulk)Поточний стан Socket.dev

Пов’язані сторінки