Анализ покрытия тестами с помощью Codecov

4 авг. 2022 г.

Всем привет! Сегодня хотел бы рассказать об использовании сервиса Codecov. А также интеграции с Github Actions. Сервис предназначен для отслеживания покрытия кода тестами.

Расчет покрытия

Само покрытие считается с помощью специализированных инструментов, в зависимости от стека проекта. К примеру, для PHP проекта это может быть xdebug, pcov либо phpdbg.

В результате получается файл со статистикой покрытия в формате .xml, либо визуальный отчет в формате html. Расчет покрытия тестами для PHP проекта подробно описан в отдельном посте.

Отчет в формате html можно просматривать локально. Для CI/CD можно выгружать отчет на сторонний сервер и просматривать там. Выглядит примерно так: https://antonshell.me/post/php-code-coverage.

Сам процесс загрузки отчетов требует настройки, к тому же нужно поддерживать отдельный сервер. Codecov позволяет визуализировать отчет в формате .xml и упрощает настройку.

Настройка Codecov + Github Actions

1 . Создать аккаунт: https://about.codecov.io/sign-up/. Можно зарегистрироваться с помощью github, gitlab или bitbucket.

2 . В настройках сгенерировать токен и добавить в github secrets CODECOV_TOKEN.

3 . Добавить в workfow для запуска тестов загрузку результатов в codecov. Пример кода:

- name: Upload report to codecov
  uses: codecov/codecov-action@v2
  with:
    token: ${{ secrets.CODECOV_TOKEN }}
    files: ./coverage.xml
    flags: tests
    name: codecov-placeholder-service
    fail_ci_if_error: true
    verbose: true

4 . Подключить приложение codecov к Github

Пример pull request для настройки codecov: https://github.com/antonshell/placeholder-service/pull/12

Документация codecov: https://docs.codecov.com/docs.

На этом пока все. Спасибо за внимание!