Go Draw.io Exporter
Автор: Алексей Бадяев aleksei.badiaev@mousesoft.ru
Экспортирует все диаграммы из файла формата Draw.io.
Для работы необходимо наличие приложения drawio-desktop.
Разработка
В проекте приняты (не строго обязательные) соглашения Uber Go Style Guide.
Структура проекта
Структура дерева файлов проекта соответствует рекомендациям в Standard Go Project Layout:
build- Сборка и непрерывная интеграция (Continuous Integration, CI).cmd- Основные приложения проекта. Имя директории для каждого приложения должно совпадать с именем исполняемого файла, который вы хотите собрать.internal- Внутренний код приложения и библиотек.pkg- Код библиотек, пригодных для использования в сторонних приложениях.scripts- Скрипты для сборки, установки, анализа и прочих операций над проектом.
Линтеры
Отформатировать все исходные тексты проекта в соответствии со стандартом Go можно командой:
go fmt ./...
В проекте используются следующие линтеры:
- go vet
- errcheck
Команда установки линтера:go install github.com/kisielk/errcheck@latest. - staticcheck
Команда установки линтера:go install honnef.co/go/tools/cmd/staticcheck@latest. - usestdlibvars
Команда установки линтера:go install github.com/sashamelentyev/usestdlibvars@latest
Все линтеры проекта можно запустить командой:
make lint
Компиляция
Все зависимости устанавливаются в папку vendor командой:
make vendor
Собрать исполняемый файл сервиса можно командой:
make build
После успешного выполнения команды в папке out/bin в корне проекта появится
исполняемые бинарные файлы.
Версия продукта
Проект версионируется в соответствии с документом
Семантическое Версионирование 2.0.0.
Наименование версии продукта считывается во время сборки проекта из переменной
окружения VERSION. Если при сборке переменная окружения VERSION не задана,
то номер версии формируется автоматически из системы контроля версий на основании
последнего тэга, наличия коммитов после него и текущего состояния репозитория
командой:
git describe --always --tags --dirty
При этом если проект собирается из ветки выпуска вида release/1.2.3, то
то версия принимает вид v1.2.3RC (что означает "Release Candidate").
Для получения версии приложения необходимо запустить его с параметром --version:
drawio-export --version
Тестирование
Статический анализ всех исходных текстов проекта можно выполнить командами:
go vet ./...
Модульные тесты проекта можно запустить командой:
make test
Отчёт о тестировании
Отчёт о выполнении тестов можно получить, запустив в папке программы команду:
make test
Для получения отчёта о выполнении тестов в формате JUnit XML необходимо установить инструмент:
go install github.com/jstemmer/go-junit-report@latest
Получить отчёт можно командой:
EXPORT_RESULT=true make test
После успешного выполнения команды появится файл out/junit-report.xml
с отчётом в формате JUnit.
Покрытие кода тестами
Для получения отчётов о покрытии кода тестами необходимо установить следующие инструменты:
go install github.com/axw/gocov/gocov@latest
go install github.com/matm/gocov-html/cmd/gocov-html@latest
go install github.com/AlekSi/gocov-xml@latest
Для получения отчёта о покрытии проекта тестами в консоли нужно выполнить команду:
make coverage
Получить отчёт о покрытии кода тестами в формате HTML можно командой:
EXPORT_RESULT=true make coverage
После успешного выполнения этой команды файл out/coverage.html будет содержать
отчёт о покрытии кода проекта модульными тестами в формате HTML.
Получить отчёт о покрытии кода тестами в формате XML можно командой:
EXPORT_RESULT=true COVERAGE_FORMAT=xml make coverage
После успешного выполнения этой команды файл out/coverage.xml будет содержать
отчёт о покрытии кода проекта модульными тестами в формате XML.