CLI-перевірки
Більшість перевірок на цій сторінці потребують встановлених програм. Якщо інструменту немає — статус skip, не помилка. Встановлюйте лише те, що потрібно вашому стеку.
Розділ Лінт схеми БД в кінці сторінки — вбудований чистий Node.js провайдер, жодного зовнішнього встановлення не потрібно.
Semgrep — SAST
semgrep scan --config auto — вразливості, OWASP Top 10, антипатерни у 30+ мовах.
Встановлення:
pip install semgrepНалаштування:
"devManager.quality.semgrep.enabled": true,"devManager.quality.semgrep.config": "auto"config: "auto" | "p/security-audit" | шлях до власних правил.
Trivy — CVE
Скан залежностей, Dockerfile, IaC, секретів. npm, pip, cargo, go.mod, composer, gem тощо.
Встановлення:
winget install AquaSecurity.Trivybrew install trivycurl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/binНалаштування:
"devManager.quality.builtin.trivy.enabled": true,"devManager.quality.builtin.trivy.failOnSeverity": "HIGH","devManager.quality.builtin.trivy.warnOnSeverity": "MEDIUM"ESLint Security — JS/TS (видалено)
Окремий провайдер eslintSecurity видалено — встановіть eslint-plugin-security і додайте його у власний ESLint-конфіг; основний builtin-eslint-провайдер підхопить правила автоматично.
npm i -D eslint-plugin-security{ "extends": ["plugin:security/recommended-legacy"] }Bandit — безпека Python
Статичний аналіз: паролі в коді, SQL injection, небезпечна десеріалізація, subprocess тощо.
Встановлення:
pip install banditНалаштування:
"devManager.quality.builtin.bandit.enabled": true,"devManager.quality.builtin.bandit.path": "bandit"Без Python-файлів у проєкті — skip.
Bearer — потоки чутливих даних
SAST: як рухаються PII, credentials, токени; витоки, небезпечне зберігання, compliance.
Встановлення (macOS/Linux):
brew install bearer/tap/bearer# Linuxcurl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | shНалаштування:
"devManager.quality.builtin.bearer.enabled": true,"devManager.quality.builtin.bearer.path": "bearer"Windows (WSL2):
"devManager.quality.builtin.bearer.path": "wsl bearer"jscpd — копіпаста
Дублікати коду у 50+ мовах.
npm i -D jscpd"devManager.quality.builtin.jscpd.enabled": true,"devManager.quality.builtin.jscpd.threshold": 5,"devManager.quality.builtin.jscpd.minLines": 5threshold — відсоток дублювання для попередження.
Knip — мертвий код
Невикористані експорти, файли, залежності в JS/TS.
Через npx — ручне встановлення не обов’язкове.
"devManager.quality.builtin.knip.enabled": truedependency-cruiser — циклічні імпорти
Цикли імпортів у JS/TS; підтримує .dependency-cruiser.js.
Через npx.
"devManager.quality.builtin.dependencyCruiser.enabled": truePackage Audit — CVE через менеджери пакетів
| Мова | Команда |
|---|---|
| Node.js | npm audit / pnpm audit / yarn audit |
| Python | pip-audit |
| Rust | cargo audit |
| Ruby | bundle audit |
| Go | govulncheck |
| PHP | composer audit |
"devManager.quality.builtin.pkgAudit.enabled": trueІнструмент визначається за lockfile.
Застарілі залежності
"devManager.quality.builtin.outdatedDeps.enabled": trueЛіцензії — license-checker
Список ліцензій залежностей; попередження для GPL, AGPL, LGPL, unknown.
Через npx.
"devManager.quality.builtin.licenseCheck.enabled": trueHadolint — Dockerfile
winget install hadolintbrew install hadolintcurl -sL https://github.com/hadolint/hadolint/releases/latest/download/hadolint-Linux-x86_64 \ -o /usr/local/bin/hadolint && chmod +x /usr/local/bin/hadolint"devManager.quality.builtin.hadolint.enabled": trueУсі Dockerfile та Dockerfile.* у дереві проєкту.
ShellCheck — shell-скрипти
winget install koalaman.shellcheckbrew install shellchecksudo apt install shellcheck"devManager.quality.builtin.shellcheck.enabled": truegolangci-lint — Go
Лише якщо є go.mod.
brew install golangci-lintwinget install golangci-lintgo install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"devManager.quality.builtin.golangciLint.enabled": true,"devManager.quality.builtin.golangciLint.warnAt": 5,"devManager.quality.builtin.golangciLint.failAt": 20Stryker — мутаційне тестування
JS/TS. За замовчуванням вимкнено — може бути повільно.
npm i -D @stryker-mutator/core @stryker-mutator/jest-runner"devManager.quality.builtin.stryker.enabled": falseTypeScript Check — tsc
Запускає npx tsc --noEmit у каталозі з tsconfig.json (корінь або безпосередня підпапка). Парсить діагностику компілятора.
Встановлення: додайте TypeScript у проєкт (або переконайтеся, що npx бачить typescript).
npm i -D typescriptНалаштування:
"devManager.quality.builtin.tscCheck.enabled": trueskip, якщо немає tsconfig.json.
YAMLlint — YAML
yamllint -f parsable для всіх .yml / .yaml з урахуванням виключень Quality Hub.
pip install yamllint"devManager.quality.builtin.yamllint.enabled": trueSpectral — OpenAPI / AsyncAPI
Лінтить файли, чиє ім’я починається з openapi, swagger або asyncapi і розширення .yaml / .yml / .json.
npm i -g @stoplight/spectral-cli"devManager.quality.builtin.spectral.enabled": trueCheckov — безпека IaC
checkov -d <проєкт> -o json, якщо знайдено Terraform, Kubernetes YAML, CloudFormation, Dockerfile тощо.
pip install checkov"devManager.quality.builtin.checkov.enabled": trueSQLFluff — SQL
sqlfluff lint --format json для .sql. Якщо є .sqlfluff у корені — використовує його; інакше --dialect ansi.
pip install sqlfluff"devManager.quality.builtin.sqlfluff.enabled": trueMarkdownlint — Markdown
Спочатку markdownlint-cli2 для **/*.md; якщо немає — markdownlint зі списком файлів.
npm i -g markdownlint-cli2"devManager.quality.builtin.markdownlint.enabled": trueЛінт схеми БД (вбудований — встановлення не потрібне)
Чистий Node.js-провайдер: автовизначає ORM або формат схеми і запускає 10 універсальних правил архітектури. Жодних зовнішніх бінарників.
Підтримувані стеки: Prisma · Drizzle ORM · Django · SQLAlchemy · Rails (schema.rb) · Laravel (migrations) · EF Core (C#) · Go (GORM / ent / xorm) · Сирий SQL
Правила:
| Правило | Що перевіряє |
|---|---|
floatForMoney | Float/Real/Double у полях price, amount, total тощо — потрібен Decimal |
missingFkIndex | FK-колонки без покривного індексу |
namingConvention | Непослідовне іменування таблиць/колонок (snake_case vs camelCase) або відсутній @@map у Prisma |
largeModel | Моделі з більше ніж maxFieldsPerModel не-relation полями (за замовчуванням: 30) — поля зв’язків не враховуються |
missingTimestamps | Моделі без createdAt / updatedAt |
missingIdDefault | PK без автогенерації (uuid(), autoincrement() тощо) |
reservedWords | Назви таблиць/колонок, що є зарезервованими словами SQL |
stringAsFk | String або UUID поля із суфіксами Id, _id, ById, _by_id, Ref, _ref без оголошеного зв’язку або FK-обмеження — можливі orphan-записи |
jsonWithoutDocs | JSON/JSONB-колонки без коментаря-документації |
cascadeWithoutSoftDelete | onDelete: Cascade у моделі, яка не має поля soft-delete (isDeleted/deletedAt) — видалені записи неможливо відновити |
Налаштування:
"devManager.quality.builtin.schemaLint.enabled": true,"devManager.quality.builtin.schemaLint.floatForMoneySeverity": "fail","devManager.quality.builtin.schemaLint.namingConventionSeverity": "warn","devManager.quality.builtin.schemaLint.maxFieldsPerModel": 30,"devManager.quality.builtin.schemaLint.requireTimestamps": true,"devManager.quality.builtin.schemaLint.requireIdDefault": true,"devManager.quality.builtin.schemaLint.checkReservedWords": true,"devManager.quality.builtin.schemaLint.moneyFieldPatterns": ["turnover", "proceeds"],"devManager.quality.builtin.schemaLint.disabledRules": []No Manual Migrations
Вбудована перевірка, яка виявляє міграційний SQL, написаний або змінений вручну, для Drizzle, Prisma та Atlas. Працює в повному прогоні Quality Hub і, за увімкненого realtime, — після збереження та при зміні відстежуваних файлів. Кожен адаптер дає skip, якщо стек не знайдено або CLI відсутній.
| Стек | Що встановити |
|---|---|
| Drizzle | drizzle-kit (зазвичай npm i -D drizzle-kit) — основний шлях: npx drizzle-kit generate у tmp out і diff з репо; fallback — drizzle-kit check + журнал |
| Prisma | prisma (зазвичай npm i -D prisma) — npx prisma migrate diff (підтримка schema.prisma або папки prisma/schema/) |
| Atlas | CLI Atlas (наприклад winget install ariga.atlas на Windows) — atlas migrate validate |
Налаштування:
"devManager.quality.builtin.noManualMigrations.enabled": true,"devManager.quality.builtin.noManualMigrations.severity": "error","devManager.quality.builtin.noManualMigrations.adapters": ["drizzle", "prisma", "atlas"],"devManager.quality.builtin.noManualMigrations.checkRemoved": true,"devManager.quality.builtin.noManualMigrations.gitLookback": 50Детальніше: Вбудовані перевірки — No Manual Migrations →.
prisma-lint — конвенції Prisma-схеми
Запускає npx prisma-lint для Prisma-специфічних перевірок: іменування моделей, порядок полів, обов’язкові індекси, кастомні правила з .prismalintrc.
Встановлення:
npm i -D prisma-lintНалаштування:
"devManager.quality.builtin.prismaLint.enabled": true,"devManager.quality.builtin.prismaLint.configPath": ""skip, якщо проєкт не визначено як Prisma-проєкт (немає prisma/@prisma/client в deps і не знайдено .prisma-файлів). configPath — шлях до кастомного .prismalintrc.
Squawk — безпека міграцій PostgreSQL
Перевіряє SQL-файли міграцій: missing CONCURRENTLY при створенні індексів, ексклюзивні блокування, backward-несумісні ALTER TABLE тощо.
Встановлення:
npm i -g squawk-clicargo install squawkНалаштування:
"devManager.quality.builtin.squawk.enabled": true,"devManager.quality.builtin.squawk.postgresVersion": "14","devManager.quality.builtin.squawk.dataRisk": "warn","devManager.quality.builtin.squawk.requireDownMigration": falseskip, якщо немає SQL-файлів міграцій. postgresVersion — версія PostgreSQL для правил.
Додаткові правила (без окремого бінарника для цих евристик): після Squawk SnakeFlow додає Node-прохід для ризикованого DML, таймаутів і опційної пари up/down — див. Вбудовані перевірки — Squawk extras.
Atlas — лінтер міграцій
atlas migrate lint з 50+ аналізаторами: деструктивні зміни, незворотні операції, зворотна сумісність, блокування таблиць. Підтримує PostgreSQL, MySQL, SQLite, SQL Server.
Встановлення:
winget install ariga.atlasbrew install ariga/tap/atlascurl -sSf https://atlasgo.sh | shНалаштування:
"devManager.quality.builtin.atlas.enabled": true,"devManager.quality.builtin.atlas.path": "atlas"skip, якщо не знайдено директорію міграцій. Перевіряються: migrations/, migration/, prisma/migrations/, db/migrations/, database/migrations/, src/migrations/, app/migrations/ (і один рівень підпапок для монорепо). path — шлях до бінарника atlas.