All checks were successful
drawio-export/pipeline/head This commit looks good
139 lines
6.9 KiB
Markdown
139 lines
6.9 KiB
Markdown
# Go Draw.io Exporter
|
||
|
||
Автор: Алексей Бадяев <aleksei.badiaev@mousesoft.ru>
|
||
|
||
Экспортирует все диаграммы из файла формата `Draw.io`.
|
||
Для работы необходимо наличие приложения `drawio-desktop`.
|
||
|
||
## Разработка
|
||
|
||
Для удобного редактирования, сборки, отладки и тестирования проекта в локальном
|
||
окружении программиста необходимо выполнить следующие действия:
|
||
|
||
1. Клонировать репозиторий проекта в папку `$GOPATH/src/git.mousesoft.ru/ms/`.
|
||
2. Установить все Go-пакеты, от которых зависит этот проект
|
||
(см. следующий раздел).
|
||
3. Если предполагается формирование отчёта о покрытии кода модульными тестами,
|
||
то нужно установить необходимые для этого пакеты
|
||
(см. раздел [Тестирование](#тестирование) далее).
|
||
|
||
### Структура проекта
|
||
|
||
Структура дерева файлов проекта соответствует рекомендациям в
|
||
[Standard Go Project Layout](https://github.com/golang-standards/project-layout):
|
||
|
||
- `build` - Сборка и непрерывная интеграция (Continuous Integration, *CI*).
|
||
- `cmd` - Основные приложения проекта. Имя директории для каждого приложения
|
||
должно совпадать с именем исполняемого файла, который вы хотите собрать.
|
||
- `pkg` - Код библиотек, пригодных для использования в сторонних приложениях.
|
||
- `scripts` - Скрипты для сборки, установки, анализа и прочих операций над проектом.
|
||
|
||
### Линтеры
|
||
|
||
Отформатировать все исходные тексты проекта в соответствии со стандартом Go
|
||
можно командой:
|
||
|
||
go fmt ./...
|
||
|
||
В проекте используются следующие линтеры:
|
||
|
||
- [go vet](https://pkg.go.dev/cmd/vet)
|
||
- [errcheck](https://github.com/kisielk/errcheck)
|
||
Команда установки линтера: `go install github.com/kisielk/errcheck@latest`.
|
||
- [staticcheck](https://staticcheck.io/)
|
||
Команда установки линтера: `go install honnef.co/go/tools/cmd/staticcheck@latest`.
|
||
- [usestdlibvars](https://github.com/sashamelentyev/usestdlibvars)
|
||
Команда установки линтера: `go install github.com/sashamelentyev/usestdlibvars@latest`
|
||
|
||
Все линтеры проекта можно запустить командой:
|
||
|
||
make lint
|
||
|
||
## Компиляция
|
||
|
||
Все зависимости устанавливаются в папку `vendor` командой:
|
||
|
||
make vendor
|
||
|
||
Собрать исполняемый файл сервиса можно командой:
|
||
|
||
make build
|
||
|
||
После успешного выполнения команды в папке `out/bin` в корне проекта появится
|
||
исполняемые бинарные файлы.
|
||
|
||
### Версия продукта
|
||
|
||
Проект версионируется в соответствии с документом
|
||
[Семантическое Версионирование 2.0.0](https://semver.org/lang/ru/).
|
||
Наименование версии продукта считывается во время сборки проекта из переменной
|
||
окружения `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](https://junit.org).
|
||
|
||
### Покрытие кода тестами
|
||
|
||
Для получения отчётов о покрытии кода тестами необходимо установить следующие
|
||
инструменты:
|
||
|
||
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*.
|