Автоматизований аналіз якості коду: інтеграція Code Climate у CI/CD

Ручний контроль якості коду не встигає за швидкістю розробки: складні функції та дублювання прослизають у main непоміченими. Ми налаштовуємо Code Climate, щоб автоматичний аналіз метрик працював прямо в CI/CD і сигналізував про проблеми ще на етапі pull request. Наша команда реалізує інтеграцію під ключ — від конфігурації правил до навчання розробників, забезпечуючи прозору оцінку технічного боргу та подальшу підтримку.
Часті запитання

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 безкоштовний без обмежень.

Процес роботи

  1. Підключаємо репозиторій до Code Climate.
  2. Налаштовуємо .codeclimate.yml під стек проекту (встановлюємо пороги, підключаємо плагіни).
  3. Інтегруємо звіти про покриття тестами (LCOV/Clover).
  4. Вмикаємо Status Check для блокування PR при погіршенні якості.
  5. Проводимо первинний аналіз технічного боргу.
  6. Узгоджуємо з командою порогові значення та процес.

Що входить в роботу

  • Налаштований .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% за перші два місяці.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139