Я давно пользуюсь соц. сетью для программистов github. Для него существует множество сервисов которые дополняют статическую информацию о проекте динамической статистикой. Которая автоматически собирается и выводит полезную информацию для разработчика и для людей которые планируют использовать код из этого репозитория.
Для локальных pet проектов которые не хочется публиковать в os тоже было бы не плохо иметь подобный спектор услуг. Предупреждаю сразу, все ниже изложенное будет иметь отношение к проектам написанным на ЯП PHP и сопутствующим технологиям, но возможно применимо и к другим конфигурациям.
Комплекс должен будет собирать инфорацию о проектке и на главной странице проекта выводить необходимую информацию. Генерировать обновление статистики для комита и для каждого MR/PR(merge/pull request). Для MR статистика выводится в разделе комментарии. Перечень сторонних обработчиков:
- Прогон тестов после каждого камита в активную ветку или при PR(pull request). Популярный и бесплатный для Open Source это Travis CI, позволяет запускать код в разном окружении, собирать отчеты для других инструментов. (локальный аналог Jenkins, gitlab ci);
- Статический анализ кода по покрытию тестами кода. Я использовал CodeClimate, он понимает отчеты от PHPUnit иведет статистику по развитию проекта, но недавно узнал о SonarQube и решил остановиться на нем;
- Сложность кода, которая тоже собирается при помощи статических анализаторов. С генерацией GUI для оценки текущего остояния можно использовать PhpMetrics. Для истории буду использовать тот же SonarQube;
- Copy/Paste анализ кода на дублирование кода с отображением подозрительных мест. Для хранения истории будет использоваться тот-же SonarQube или для текущего состояния можно использовать phpcpd)
Управление репозиториями будем осуществлять средствами GitLab CE.
Композиция поднятия всего этого добра будет состоять из:
- Поднятие nGinx в Docker контейнерах и шифрование трафика при помощи Let’s encrypt сертификатов;
- Поднятие и настройка GitLab за nGinx в Docker;
- Настройка Jenkins для запуска заданий;
- Настройка GitLab CI для запуска заданий;
- Парсинг и агрегирование данных из статического анализатора кода на сложность;
- Вывод информации из базы данных статического анализатора кода на сложность в красивом формате с временным прогрессом состояния проекта;
- Парсинг и агрегирование Данных из статического анализатора кода на Copy/Paste;
- Вывод истории из базы данных статического анализатора кода на Copy/Paste в красивом формате с временным прогрессом состояния проекта;
- Агрегирование и парсинг результатов запуска авто тестов и сохранение результатов в БД;
- Вывод статуса проекта относительно прогона теста и определенного комита;
- Агрегирование и парсинг данных покрытия кода тестами с последующим сохранением в БД;
- Вывод хронологической истории о покрытии тестами кода в зависимости от коммита.
- Генерация виджетов для данных из анализаторово по номеру комита
По мере развития комплекса ссылки на проделанные работы и иструкции будет размещаться в выше стоящем списке.