Непрерывная интеграция (CI)
Непрерывная интеграция (Continuous Integration, CI) - это важный аспект разработки программного обеспечения, который подразумевает интеграцию изменений и их автоматическое тестирование. CI позволяет нам поддерживать высокое качество кода, отлавливая проблемы на ранних и частых этапах процесса разработки. В Ultralytics мы используем различные тесты CI, чтобы обеспечить качество и целостность нашей кодовой базы.
Действия информатора
Вот краткое описание наших действий в CI:
- CI: Это наш основной CI-тест, который включает в себя запуск юнит-тестов, проверку линтинга, а иногда и более комплексные тесты в зависимости от репозитория.
- Развертывание Docker: Этот тест проверяет развертывание проекта с помощью Docker, чтобы убедиться, что Dockerfile и связанные с ним скрипты работают правильно.
- Сломанные ссылки: Этот тест проверяет кодовую базу на наличие битых или мертвых ссылок в наших markdown или HTML-файлах.
- CodeQL: CodeQL - это инструмент с GitHub, который проводит семантический анализ нашего кода, помогая находить потенциальные уязвимости в безопасности и поддерживать высокое качество кода.
- PyPI Publishing: этот тест проверяет, можно ли упаковать и опубликовать проект на PyPi без каких-либо ошибок.
Результаты КИ
Ниже приведена таблица, показывающая статус этих CI-тестов для наших основных репозиториев:
Репозиторий | CI | Развертывание Docker | Сломанные ссылки | CodeQL | Публикация PyPI и Docs |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
Втулка | |||||
docs |
Каждый значок показывает статус последнего запуска соответствующего CI-теста на main
ветка соответствующего репозитория. Если тест провален, то на бейдже будет отображаться статус "failing", а если пройден, то "passing".
Если ты заметил, что тест не работает, будет очень полезно, если ты сообщишь об этом через GitHub issue в соответствующем репозитории.
Помни, что успешное CI-тестирование не означает, что все идеально. Всегда рекомендуется вручную просматривать код перед развертыванием или слиянием изменений.
Покрытие кодов
Покрытие кода - это метрика, которая представляет собой процент твоей кодовой базы, выполняемой при запуске тестов. Он дает представление о том, насколько хорошо твои тесты проверяют твой код, и может иметь решающее значение для выявления непроверенных частей твоего приложения. Высокий процент покрытия кода часто ассоциируется с меньшей вероятностью появления багов. Однако важно понимать, что покрытие кода не гарантирует отсутствие дефектов. Оно лишь показывает, какие части кода были выполнены тестами.
Интеграция с codecov.io
На сайте Ultralytics мы интегрировали наши репозитории с codecov.io, популярной онлайн-платформой для измерения и визуализации покрытия кода. Codecov предоставляет подробную информацию, сравнение покрытия между коммитами и визуальные наложения прямо на твой код, указывающие, какие строки были покрыты.
Интегрируясь с Codecov, мы стремимся поддерживать и улучшать качество нашего кода, фокусируясь на тех областях, которые могут быть подвержены ошибкам или нуждаются в дополнительном тестировании.
Результаты покрытия
Чтобы быстро получить представление о состоянии покрытия кода ultralytics
В пакет python мы включили значок и визуальное отображение солнечных лучей ultralytics
Результаты покрытия. Эти изображения показывают процент кода, охваченного нашими тестами, и дают наглядную метрику наших усилий по тестированию. За подробной информацией обращайся на сайт https://codecov.io/github/ultralytics/ultralytics.
Репозиторий | Покрытие кодов |
---|---|
ultralytics |
На графике в виде солнечного луча ниже самый внутренний круг - это весь проект, от центра отходят папки, затем, наконец, один файл. Размер и цвет каждого среза обозначают количество утверждений и охват, соответственно.