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

CLI-перевірки

Більшість перевірок на цій сторінці потребують встановлених програм. Якщо інструменту немає — статус skip, не помилка. Встановлюйте лише те, що потрібно вашому стеку.

Розділ Лінт схеми БД в кінці сторінки — вбудований чистий Node.js провайдер, жодного зовнішнього встановлення не потрібно.


Semgrep — SAST

semgrep scan --config auto — вразливості, OWASP Top 10, антипатерни у 30+ мовах.

Встановлення:

Terminal window
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 тощо.

Встановлення:

Terminal window
winget install AquaSecurity.Trivy

Налаштування:

"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-провайдер підхопить правила автоматично.

Terminal window
npm i -D eslint-plugin-security
.eslintrc.json
{ "extends": ["plugin:security/recommended-legacy"] }

Bandit — безпека Python

Статичний аналіз: паролі в коді, SQL injection, небезпечна десеріалізація, subprocess тощо.

Встановлення:

Terminal window
pip install bandit

Налаштування:

"devManager.quality.builtin.bandit.enabled": true,
"devManager.quality.builtin.bandit.path": "bandit"

Без Python-файлів у проєкті — skip.


Bearer — потоки чутливих даних

SAST: як рухаються PII, credentials, токени; витоки, небезпечне зберігання, compliance.

Встановлення (macOS/Linux):

Terminal window
brew install bearer/tap/bearer
# Linux
curl -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+ мовах.

Terminal window
npm i -D jscpd
"devManager.quality.builtin.jscpd.enabled": true,
"devManager.quality.builtin.jscpd.threshold": 5,
"devManager.quality.builtin.jscpd.minLines": 5

threshold — відсоток дублювання для попередження.


Knip — мертвий код

Невикористані експорти, файли, залежності в JS/TS.

Через npx — ручне встановлення не обов’язкове.

"devManager.quality.builtin.knip.enabled": true

dependency-cruiser — циклічні імпорти

Цикли імпортів у JS/TS; підтримує .dependency-cruiser.js.

Через npx.

"devManager.quality.builtin.dependencyCruiser.enabled": true

Package Audit — CVE через менеджери пакетів

МоваКоманда
Node.jsnpm audit / pnpm audit / yarn audit
Pythonpip-audit
Rustcargo audit
Rubybundle audit
Gogovulncheck
PHPcomposer 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": true

Hadolint — Dockerfile

Terminal window
winget install hadolint
"devManager.quality.builtin.hadolint.enabled": true

Усі Dockerfile та Dockerfile.* у дереві проєкту.


ShellCheck — shell-скрипти

Terminal window
winget install koalaman.shellcheck
"devManager.quality.builtin.shellcheck.enabled": true

golangci-lint — Go

Лише якщо є go.mod.

Terminal window
brew install golangci-lint
"devManager.quality.builtin.golangciLint.enabled": true,
"devManager.quality.builtin.golangciLint.warnAt": 5,
"devManager.quality.builtin.golangciLint.failAt": 20

Stryker — мутаційне тестування

JS/TS. За замовчуванням вимкнено — може бути повільно.

Terminal window
npm i -D @stryker-mutator/core @stryker-mutator/jest-runner
"devManager.quality.builtin.stryker.enabled": false

TypeScript Check — tsc

Запускає npx tsc --noEmit у каталозі з tsconfig.json (корінь або безпосередня підпапка). Парсить діагностику компілятора.

Встановлення: додайте TypeScript у проєкт (або переконайтеся, що npx бачить typescript).

Terminal window
npm i -D typescript

Налаштування:

"devManager.quality.builtin.tscCheck.enabled": true

skip, якщо немає tsconfig.json.


YAMLlint — YAML

yamllint -f parsable для всіх .yml / .yaml з урахуванням виключень Quality Hub.

Terminal window
pip install yamllint
"devManager.quality.builtin.yamllint.enabled": true

Spectral — OpenAPI / AsyncAPI

Лінтить файли, чиє ім’я починається з openapi, swagger або asyncapi і розширення .yaml / .yml / .json.

Terminal window
npm i -g @stoplight/spectral-cli
"devManager.quality.builtin.spectral.enabled": true

Checkov — безпека IaC

checkov -d <проєкт> -o json, якщо знайдено Terraform, Kubernetes YAML, CloudFormation, Dockerfile тощо.

Terminal window
pip install checkov
"devManager.quality.builtin.checkov.enabled": true

SQLFluff — SQL

sqlfluff lint --format json для .sql. Якщо є .sqlfluff у корені — використовує його; інакше --dialect ansi.

Terminal window
pip install sqlfluff
"devManager.quality.builtin.sqlfluff.enabled": true

Markdownlint — Markdown

Спочатку markdownlint-cli2 для **/*.md; якщо немає — markdownlint зі списком файлів.

Terminal window
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

Правила:

ПравилоЩо перевіряє
floatForMoneyFloat/Real/Double у полях price, amount, total тощо — потрібен Decimal
missingFkIndexFK-колонки без покривного індексу
namingConventionНепослідовне іменування таблиць/колонок (snake_case vs camelCase) або відсутній @@map у Prisma
largeModelМоделі з більше ніж maxFieldsPerModel не-relation полями (за замовчуванням: 30) — поля зв’язків не враховуються
missingTimestampsМоделі без createdAt / updatedAt
missingIdDefaultPK без автогенерації (uuid(), autoincrement() тощо)
reservedWordsНазви таблиць/колонок, що є зарезервованими словами SQL
stringAsFkString або UUID поля із суфіксами Id, _id, ById, _by_id, Ref, _ref без оголошеного зв’язку або FK-обмеження — можливі orphan-записи
jsonWithoutDocsJSON/JSONB-колонки без коментаря-документації
cascadeWithoutSoftDeleteonDelete: 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 відсутній.

СтекЩо встановити
Drizzledrizzle-kit (зазвичай npm i -D drizzle-kit) — основний шлях: npx drizzle-kit generate у tmp out і diff з репо; fallback — drizzle-kit check + журнал
Prismaprisma (зазвичай npm i -D prisma) — npx prisma migrate diff (підтримка schema.prisma або папки prisma/schema/)
AtlasCLI 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.

Встановлення:

Terminal window
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 тощо.

Встановлення:

Terminal window
npm i -g squawk-cli

Налаштування:

"devManager.quality.builtin.squawk.enabled": true,
"devManager.quality.builtin.squawk.postgresVersion": "14",
"devManager.quality.builtin.squawk.dataRisk": "warn",
"devManager.quality.builtin.squawk.requireDownMigration": false

skip, якщо немає SQL-файлів міграцій. postgresVersion — версія PostgreSQL для правил.

Додаткові правила (без окремого бінарника для цих евристик): після Squawk SnakeFlow додає Node-прохід для ризикованого DML, таймаутів і опційної пари up/down — див. Вбудовані перевірки — Squawk extras.


Atlas — лінтер міграцій

atlas migrate lint з 50+ аналізаторами: деструктивні зміни, незворотні операції, зворотна сумісність, блокування таблиць. Підтримує PostgreSQL, MySQL, SQLite, SQL Server.

Встановлення:

Terminal window
winget install ariga.atlas

Налаштування:

"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.