Oops... your message was not sent

Your message has been successfully sent

тематические истории, основанные на опыте компании JetRuby
Веб-разработка

Code Climate: особенности использования в разработке

Code Climate (СС) используется с единственной целью: помочь команде программистов писать чистый код. Переоценить его значимость для разработки очень сложно.  CC производит статический и автоматизированный анализ кода для Ruby on Rails, JavaScript, PHP (в бета-версии) или Python (в бета-версии), а затем предоставляет легко читаемые и действительно значимые выводы.

Как это работает

  • Шаг 1: Пуш коммита в репозиторий (поддерживаются Git репозитории).
  • Шаг 2: СС автоматически клонирует/вытягивает из хранилища и анализирует каждый коммит.
  • Шаг 3: Результаты анализа дают возможность отслеживать изменения в фиде, умные оповещения по электронной почте и интеграции уведомлений.

Хуки

CC узнает о новом событии в репозитории при помощи хуков, навешанных на git сервер. Они, в свою очередь, делятся на две категории:

  • Вебхуки — запросы от git сервера на СС endpoint url после пуша коммита в default branch.
  • Сервисные хуки — предназначены сугубо для Github. Они предоставляют более расширенный набор нотификаций для CC — события о пуше новой ветки, об открытии ПР и т.д.

Для репозитория без хуков, но с подключенным СС возможно активизировать автополлинг изменений. Его производит непосредственно Code Climate.

На примере гитхаба

  1. Получаем API токен из профайла в СС;
    code-climate-1
  2. Добавляем айдишник репозитория из фида на CC

code-climate-2

  1. Создаем вебхук на github (админ справа в репозитории)

code-climate-3

Понятие оценок качества кода (ABC Metrics)

ABC метрика — часто используемая методика измерения размера программного обеспечения. Этот показатель является одним (хотя и не обязательно единственным) из способов, используемых CC для оценки сложности кода. Он показывает характеристику накапливания технического долга приложения.

Чем выше значение, тем сложнее оценить заданный кусок кода для чтения, тестирования и поддержки. Итоговый показатель складывается из:

  • количества присвоений в методе;
  • количества выходов из процедурного потока выполнения кода для выполнения кода, определенного в другом месте;
  • количества условных ветвлений if/elses, cases, try/catches, boolean tests, less than or equal to evaluations

Специально для Ruby используется модифицированный Flog gem:

  • оценка мета-кода
  • анализ дублирующихся фрагментов кода;

Понятие оценок качества кода (GPA)

GPA (grade point average) — система школьной оценки качества знаний. Демонстрирует общий уровень кода на основе средневзвешенных ABC-метрик всех существующих классов и методов приложения. При этом каждый отдельный issue (например: дублирование, сложности метода) имеет свой собственный вес, позволяющий нам вычислить их общую “стоимость”. Она демонстрируется на дэшборде приложения и может быть вынесена на гитхаб в качестве виджета.

code-climate-4

CC в качестве CI

СС способен интегрироваться с рядом CI продуктов: Semaphore, Solano Labs, Travis C., Jenkins. Он агрегирует данные о тестовом покрытии и отражает текущий статус билда проекта. Code Climate производит переоценку ABC-значений кода в ту или иную сторону, в зависимости от репорта CI-сервера. В итоге даже грамотно продуманный код может заслужить желтый флаг, как продукт, не прошедший тестирование в полном объеме.

department
Статью подготовил
Отдел веб-разработки
Профессиональная разработка сайтов и приложений на стороне сервера и клиента. Проектирование дизайна, верстка страниц и техническое обслуживание реализованных проектов.