Codacy — это онлайн-сервис, который автоматически добавляет ревью и выполняет статический анализ кода для большинства код-репозиториев, например, GitHub. Codacy помогает выявить ошибки в коде и проблемы с безопасностью используемых конструкций, даёт подсказки по их устранению. Также он может оценить покрытие кода тестами и дать общую оценку качества проекта. В код-репозиториях можно ссылаться на анализ Codacy и добавлять статус ревью и оценку качества.
Codacy похож на известный инструмент для анализа кода SonarQube, но более прост в использовании и интеграции с проектами. Сервис легко встраивается в существующий процесс continuous integration и не требует особых заморочек с настройками. Для разработчиков опенсорс проектов он бесплатен.
- Ссылка на сервис: https://www.codacy.com/
- Пример дашборда с оценкой качества одного из наших опенсорс проектов:
https://app.codacy.com/project/devopshq/crosspm/dashboard - А вот, как выглядит ссылка на оценку кода в самом проекте (значок code quality):
https://github.com/devopshq/crosspm
Интеграция с GitHub
Если у вас есть проект на GitHub, то интегрировать его с Codacy можно по инструкции (en):
Базовая интеграция очень простая, с ней не должно возникнуть трудностей.
Предположим, что ваш проект на python. Рассмотрим, как добавить на дашборд Codacy информацию о покрытии кода проекта тестами — code coverage. Эти данные можно собирать в процессе сборки кода и отправлять их в Codacy. Для этого нужно добавить следующие команды в файл конфигурации .travis.yml (если у вас сборка проекта настроена в Travis CI) или в аналогичные сборочные файлы:
- Устанавливаем утилиту coverage для python: https://pypi.python.org/pypi/coverage — она будет собирать информацию о покрытии кода тестами:
pip install coverage - Устанавливаем утилиту python-codacy-coverage: https://github.com/codacy/python-codacy-coverage — она будет пушить результаты покрытия тестами в проект на codacy:
pip install codacy-coverage - Находясь в корне своего проекта запустите сбор статистики. Команда в простейшем случае будет такая:
coverage run -m py.test tests
— если ваши тесты находятся в каталоге tests. Дополнительные опции и команды можно изучить, набрав команду:
coverage help [command] - После сбора статистики формируется служебный файл .coverage. Преобразуйте его:
coverage xml
— для дальнейшей отправки в codacy, либо
coverage html
— для изучения отчёта человеком. - Отправьте в Codacy информацию о покрытии кода тестами командой:
python-codacy-coverage -r coverage.xml
Профит: получите красивый дашборд в Codacy, где отображена вся информация о покрытии тестами.
Примеры
После базовой интеграции и настройки code coverage вы получите примерно вот такой дашборд (на картинке изображёна оценка качества и статус нашего опенсорс проекта CrossPM):
С дашборда можно сразу перейти на список обнаруженных проблем, либо кликнув на вкладку Issues. Для каждой проблемы будут даны объяснения, к чему она может привести, указаны способы решения проблемы и даже примерное время на её исправление:
Также можно добавить оценку качества кода в README.md файл вашего проекта на GitHub:
Для этого в начале вашего README.md файла добавьте так называемый "badge". Код для badge у каждого будет свой, посмотреть его можно в настройках проекта на Codacy (подробнее в инструкции). В нашем случае, это была строка:
[![codacy](https://api.codacy.com/project/badge/Grade/7a9ed2e6bb3e445f9e4a776e9b7f7886)](https://www.codacy.com/app/devopshq/crosspm/dashboard)
На этом всё. Смотрите больше примеров в официальном FAQ: https://support.codacy.com/hc/en-us
Желаю вам отличного кода!