Вбудовані перевірки
Вбудовані перевірки працюють у Node.js без зовнішніх інструментів. Усі увімкнені за замовчуванням.
Розмір і складність коду
| Перевірка | Що виявляє | Пороги за замовчуванням |
|---|---|---|
| Line Count | Занадто довгі файли | warn ≥ 300, fail ≥ 500 рядків |
| Function Length | Занадто довгі функції/методи | warn ≥ 40, fail ≥ 80 рядків |
| Cyclomatic Complexity | Багато гілок | warn ≥ 10, fail ≥ 20 |
| File Size | Перевищення розміру файлу | warn ≥ 50 КБ, fail ≥ 200 КБ |
| Long Lines | Рядки ширші за ліміт | warn, якщо >5% рядків довші за 120 символів |
| Import Depth | Глибокі ланцюги ../../../ | warn ≥ 4, fail ≥ 6 рівнів |
| Directory Depth | Занадто глибока вкладеність папок | warn ≥ 7, fail ≥ 10 |
| Dependency Count | Багато прямих залежностей | warn ≥ 50, fail ≥ 100 |
Якість і підтримуваність
| Перевірка | Що виявляє |
|---|---|
| TODO Count | Маркери TODO, FIXME, HACK, BUG, XXX, NOSONAR |
| Commented Code | Закоментовані блоки коду |
| Duplicate Files | Ідентичні за вмістом файли з різними іменами |
| Test Ratio | Співвідношення тестових і вихідних файлів |
| Mixed Indent | Змішані таби та пробіли |
| Encoding | Файли не в UTF-8 |
| Debug Leaks | console.log, print(), debugger, var_dump(), dd() |
| Secret Leaks | Хардкод ключів, токенів, паролів, приватних ключів |
| Gitignore Check | Файли в git, що збігаються з .gitignore |
| Magic Numbers | Числові літерали без іменованих констант |
| Parameter Count | Занадто багато параметрів у функції/методі |
| Barrel Files | Перевеликі index.ts/js з реекспортами — гірший tree-shaking |
Архітектура та дизайн
| Перевірка | Що виявляє |
|---|---|
| Coupling Metrics | Високий coupling; «god-файли», нестабільні модулі |
| Cross-Layer Imports | Заборонені напрямки імпортів (наприклад UI → Prisma) |
| Component Inventory | Схожі UI-компоненти/хуки — ідеї для консолідації |
| Heavy Imports | Імпорт цілих великих пакетів (lodash, moment, @mui/material) |
Типи та документація
| Перевірка | Що виявляє |
|---|---|
| Any Coverage | Використання TypeScript any, касти as any, дженерики |
| JSDoc Coverage | Частка експортованих сутностей з JSDoc |
Якість тестів
| Перевірка | Що виявляє |
|---|---|
| Test Ratio | Співвідношення тестів і коду |
| Empty Tests | Блоки it() / test() / def test_ / #[test] без assertions |
| LCOV Coverage | Читає lcov.info або coverage-summary.json — % рядків/гілок/функцій без запуску тестів |
Безпека CI/CD
| Перевірка | Що виявляє |
|---|---|
| GitHub Actions Audit | Незакріплені actions, pull_request_target, ін’єкції ${{ }}, секрети в workflow |
Пороги в налаштуваннях
Більшість перевірок підтримують enabled, warnAt / failAt:
"devManager.quality.builtin.lineCount.enabled": true,"devManager.quality.builtin.lineCount.warnLines": 300,"devManager.quality.builtin.lineCount.failLines": 500,
"devManager.quality.builtin.functionLength.warnLines": 40,"devManager.quality.builtin.functionLength.failLines": 80,
"devManager.quality.builtin.complexity.warnScore": 10,"devManager.quality.builtin.complexity.failScore": 20,
"devManager.quality.builtin.parameterCount.warnAt": 4,"devManager.quality.builtin.parameterCount.failAt": 7,
"devManager.quality.builtin.dependencyCount.warnAt": 50,"devManager.quality.builtin.dependencyCount.failAt": 100Повністю вимкнути перевірку:
"devManager.quality.builtin.magicNumbers.enabled": false