drawio-export/README.md
Алексей Бадяев 6d8d233640
All checks were successful
build / build_windows (push) Successful in 26s
build / build (push) Successful in 1m11s
Улучшено README.
2024-10-18 15:38:27 +07:00

6.6 KiB
Raw Blame History

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
  • shadow Команда установки линтера: go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@latest.

Все перечисленные выше линтеры можно запустить командой:

make lint

Кроме того, в проекте сконфигурирован golangci-lint. Для его запуска можно воспользоваться командой:

make golangci-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

Тестирование

Модульные тесты проекта можно запустить командой:

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.