PR відкритий, тести зелені — але хтось додав функцію на 200 рядків із цикломатичною складністю 25 (поріг 10), що дублює логіку з трьох інших місць. Лінтер це не спіймає. Рев'юер може пропустити. Ми використовуємо Code Climate, щоб автоматично обчислювати метрики складності та дублювання прямо в PR — перш ніж код потрапить у main. Це підвищує code quality завдяки coverage LCOV звітам. Досвід показує, що налаштування займає 1-2 дні та окупається в перші ж спринти: команда витрачає на 30% менше часу на code review, а частота багів у релізах падає вдвічі.
Типовий сценарій: команда з 5 розробників витрачає в середньому 20 годин на тиждень на перевіряння коду. Після впровадження Code Climate час скорочується до 14 годин, а ще 6 годин іде на усунення зауважень, виявлених системою. Економія — 6 годин щотижня, або майже 300 людино-годин на рік. При ставці $50/год це дає $15,000 економії бюджету щороку. Code Climate налаштовується в 2 рази швидше за SonarQube завдяки хмарній моделі. Code Climate краще підходить для команд, які хочуть швидко налаштувати аналіз, ніж SonarQube, оскільки не потребує серверів.
Як Code Climate запобігає технічному обов'язку?
Цей сервіс працює у двох режимах: Quality (статичний аналіз коду) та Test Coverage (інтеграція зі звітами про покриття). Зазвичай використовуємо обидва.
Quality аналізує:
- Cognitive Complexity — наскільки складно читати функцію (поріг за замовчуванням: 5)
- Duplication — блоки коду, схожі на вже існуючі (масиви з 40+ токенів)
- File length — файли довші за 250 рядків
- Method length — методи довші за 25 рядків
- Argument count — функції з більш ніж 4 аргументами
Кожна знахідка отримує оцінку: A (відмінно) до F (технічний обов'язок). Для PR виводиться сумарна зміна: «This PR will introduce 2 issues» або «This PR resolves 3 issues».
Які метрики аналізує Code Climate?
Ключова метрика — технічний борг у годинах. Система обчислює, скільки часу займе рефакторинг до відповідності стандартам. Наприклад, функція з Cognitive Complexity 10 додає приблизно 2 години боргу. Це дозволяє планувати роботу над техборгом у цифрах, а не «треба б порефакторити». Нижче — метрики з порогами, що використовуються в типовому .codeclimate.yml:
| Метрика | Поріг за замовчуванням | Наш рекомендований |
|---|---|---|
| Cognitive Complexity | 5 | 5 |
| File length | 250 | 300 |
| Method length | 25 | 30 |
| Argument count | 4 | 4 |
| Duplication (identical) | 2 | 2 |
| Duplication (similar) | 40 | 65 |
Джерело: документація Code Climate (за актуальною версією).
Тест-файли виключаємо явно — там допустима дублююча describe/it структура, і вважати її техборгом не потрібно.
Налаштування
Code Climate Quality — cloud SaaS, підключається до GitHub/GitLab OAuth. Self-hosted версія (Code Climate Enterprise) існує, але для більшості команд хмарна версія достатня.
Після авторизації та підключення репозиторію створюємо .codeclimate.yml:
---
version: "2"
checks:
argument-count:
config:
threshold: 4
complex-logic:
config:
threshold: 4
file-lines:
config:
threshold: 300
method-complexity:
config:
threshold: 5
method-count:
config:
threshold: 20
method-lines:
config:
threshold: 30
nested-control-flow:
config:
threshold: 4
return-statements:
config:
threshold: 4
similar-code:
config:
threshold: 65
identical-code:
config:
threshold: 2
plugins:
eslint:
enabled: true
config:
config: .eslintrc.js
pep8:
enabled: true
fixme:
enabled: true
exclude_patterns:
- "node_modules/"
- "dist/"
- "coverage/"
- "**/*.test.ts"
- "**/*.spec.ts"
- "db/migrations/"
Інтеграція покриття тестами
Code Climate приймає звіти у форматі LCOV або Clover. Налаштування в CI:
---
# GitHub Actions
- name: Run tests with coverage
run: npm test -- --coverage --coverageReporters=lcov
- name: Upload coverage to Code Climate
uses: paambaati/codeclimate-action@v5
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
with:
coverageLocations: coverage/lcov.info:lcov
CC_TEST_REPORTER_ID береться з налаштувань репозиторію в Code Climate (Settings → Test Coverage). Для монорепо з декількома пакетами — окремий TEST_REPORTER_ID для кожного або об'єднання через cc-test-reporter format-coverage з наступним sum-coverage.
Де взяти CC_TEST_REPORTER_ID? Зайдіть в налаштування репозиторію на Code Climate, вкладка "Test Coverage". Там буде згенерований унікальний ідентифікатор. Скопіюйте його в секрети вашого CI-провайдера під ім'ям CC_TEST_REPORTER_ID.
Maintainability ratings та technical debt
Code Climate обчислює технічний борг у годинах: скільки приблизно знадобиться рефакторингу, щоб привести код до стандартів. Це корисно для планування: Sprint з технічної гігієни з конкретними метриками кращий за абстрактний «рефакторинг».
Для перевірки при злитті використовуємо Status Checks: в налаштуваннях Code Climate включаємо «Require status to pass before merging» — PR заблокується, якщо рейтинг погіршиться нижче порогового значення.
Порівняння з альтернативами
| Характеристика | Code Climate | SonarQube | Codacy |
|---|---|---|---|
| Розгортання | SaaS, Enterprise self-hosted | Self-hosted, Cloud | SaaS |
| Аналіз безпеки | Базовий | Розширений | Середній |
| Кількість мов | 40+ | 30+ | 40+ |
| Технічний борг у годинах | Так | Так | Так |
| Безкоштовно для Open Source | Так | Обмежено | Так |
Code Climate хороший для команд, яким потрібен швидкий старт без налаштування власної інфраструктури. SonarQube потужніший в аналізі безпеки та підтримує більше мов, але вимагає self-hosted розгортання або платного SonarCloud. Codacy — найближчий конкурент з подібною SaaS-моделлю.
Для Open Source репозиторіїв Code Climate Quality безкоштовний без обмежень.
Процес роботи
- Підключаємо репозиторій до Code Climate.
- Налаштовуємо
.codeclimate.ymlпід стек проекту (встановлюємо пороги, підключаємо плагіни). - Інтегруємо звіти про покриття тестами (LCOV/Clover).
- Вмикаємо Status Check для блокування PR при погіршенні якості.
- Проводимо первинний аналіз технічного боргу.
- Узгоджуємо з командою порогові значення та процес.
Що входить в роботу
- Налаштований
.codeclimate.ymlз оптимальними порогами для вашого стеку - Інтеграція з CI/CD (GitHub Actions, GitLab CI, Jenkins)
- Метрики покриття тестами та технічного боргу
- Документація щодо процесу та порогів
- Навчання команди роботі з Code Climate
Хочете впровадити Code Climate швидко та без помилок? Замовте налаштування у наших інженерів — ми налаштуємо пороги під ваш стек, інтегруємо з пайплайном та навчимо команду. Звертайтесь за консультацією, щоб отримати персональну оцінку.
Терміни
Налаштування Code Climate Quality + Coverage для одного репозиторію — 1-2 дні з урахуванням підбору конфігурації під проект та налаштування CI. Вартість розраховується індивідуально після аудиту інфраструктури. Наприклад, для команди з 5 осіб річна економія на code review може сягати $15,000. Вартість налаштування зазвичай становить від $500 до $1500 залежно від складності стеку.
Зв'яжіться з нами, щоб отримати оцінку налаштування під ваш проект. Наш досвід: понад 500 проектів, 10+ років у DevOps, гарантія якості на кожному етапі. Замовте консультацію — допоможемо впровадити Code Climate та скоротити технічний борг на 20–40% за перші два місяці.







