Повышение качества кода с минимальными затратами

Posted on

Continuous Integration

При появлении нового проекта некоторые разработчики начинают не задумываясь устанавливать Jenkins/TeamCity/buildbot etc для использования Continuous Integration. В то время когда эту задачу можно решить более эффективно.

Сегодня я расскажу про SaaS сервисы для Continuous Integration. Да, локальная система может дать больше возможностей для настройки. Но это не всегда оправданно.

Какие задачи можно решать?

  • проверка сборки
  • проверка синтаксиса
  • статический анализ
  • запуск тестов
  • измерение покрытие кода тестами
  • подсчёт строк кода (SLOC)


Какие варианты есть?

Travis CI - один из самых популярных сервисов такого рода. Используется для проверки сборки и тестирования проектов, расположенных на Github. Сервис конфигурируется с помощью добавления в репозиторий файла с именем .travis.yml, который является обычным текстовым файлом в YAML формате. Сервис автоматически обнаруживает коммит в репозиторий и запускает сборку и запуск тестов. Например так - https://github.com/Parallels/pcs-nova-driver/blob/master/.travis.yml Сервис бесплатен для открытых проектов.

Coverity - сервис, который выполняет статический анализ кода проектов, написанных на Java, C#, C/C++, что позволяет находить баги и проблемы в безопасности на ранней стадии. Сервис бесплатен для открытых проектов и им уже воспользовались многие известные открытые проекты. Поддерживает интеграцию с Github и Travis CI.

Coveralls - сервис позволяет выполнять тестирование и измерение покрытия кода тестами. Интеграция с Github поддерживается.

Coviolations - проверка Python кода на соответствие PEP8, измерение покрытия кода тестами, запуск юнит-тестов, подсчёт количества строк кода в проекта. Конфигурируется с помощью YAML файла, который нужно добавить в репозиторий.

Drone - задание нужно описывать на странице проекта в самом сервисе. Сервис бесплатен для открытых проектов, для закрытых — использование за ежемесячную плату. Сервис сделан на базе Docker.

Из более-менее известных есть ещё Buildhive, Circle CI, GitLab CI, Semaphore и Codeship, но я их не пробовал и знакомство с ними оставляю на ваше усмотрение. Все они более-менее похожи друг на друга.

Нужно заметить, что описанные выше сервисы подойдут не всем проектам. Например с помощью Travis CI можно проверять компиляцию для проекта trinity (linux syscall fuzzer), написанного на Си, но нельзя проверять компиляцию для проекта criu, который тоже написан на Си, но требует наличия ванильного Linux ядра.

Среди таких сервисов хотелось бы видеть такие, которые бы использовали больше инструментов для выявления проблем в коде, как например AddressSanitizer, LeakSanitizer или даже библиотеки для fault-injection и т.д. Может это просто вопрос времени?

Добавлено: Ещё есть Testling для автоматического тестирования JavaScript кода в браузерах.

Добавлено: Не совсем правильно было писать пост об этом в блоге. Поэтому позднее я сделал сравнительную таблицу для таких сервисов.