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

162 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Go Draw.io Exporter
Автор: Алексей Бадяев <aleksei.badiaev@mousesoft.ru>
Экспортирует все диаграммы из файла формата `Draw.io`.
Для работы необходимо наличие приложения `drawio-desktop`.
## Разработка
В проекте приняты (не строго обязательные) соглашения
[Uber Go Style Guide](https://github.com/uber-go/guide/blob/master/style.md).
### Структура проекта
Структура дерева файлов проекта соответствует рекомендациям в
[Standard Go Project Layout](https://github.com/golang-standards/project-layout):
- `build` - Сборка и непрерывная интеграция (Continuous Integration, *CI*).
- `cmd` - Основные приложения проекта. Имя директории для каждого приложения
должно совпадать с именем исполняемого файла, который вы хотите собрать.
- `internal` - Внутренний код приложения и библиотек.
- `pkg` - Код библиотек, пригодных для использования в сторонних приложениях.
- `scripts` - Скрипты для сборки, установки, анализа и прочих операций над проектом.
### Линтеры
Отформатировать все исходные тексты проекта в соответствии со стандартом Go
можно командой:
```sh
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`
- [shadow](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/shadow)
Команда установки линтера:
`go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@latest`.
Все перечисленные выше линтеры можно запустить командой:
```sh
make lint
```
Кроме того, в проекте сконфигурирован
[golangci-lint](https://github.com/golangci/golangci-lint).
Для его запуска можно воспользоваться командой:
```sh
make golangci-lint
```
## Компиляция
Все зависимости устанавливаются в папку `vendor` командой:
```sh
make vendor
```
Собрать исполняемый файл сервиса можно командой:
```sh
make build
```
После успешного выполнения команды в папке `out/bin` в корне проекта появится
исполняемые бинарные файлы.
### Версия продукта
Проект версионируется в соответствии с документом
[Семантическое Версионирование 2.0.0](https://semver.org/lang/ru/).
Наименование версии продукта считывается во время сборки проекта из переменной
окружения `VERSION`. Если при сборке переменная окружения `VERSION` не задана,
то номер версии формируется автоматически из системы контроля версий на основании
последнего тэга, наличия коммитов после него и текущего состояния репозитория
командой:
```sh
git describe --always --tags --dirty
```
При этом если проект собирается из ветки выпуска вида `release/1.2.3`, то
то версия принимает вид `v1.2.3RC` (что означает "Release Candidate").
Для получения версии приложения необходимо запустить его с параметром `--version`:
```sh
drawio-export --version
```
## Тестирование
Модульные тесты проекта можно запустить командой:
```sh
make test
```
### Отчёт о тестировании
Для получения отчёта о выполнении тестов в формате *JUnit XML* необходимо
установить инструмент:
```sh
go install github.com/jstemmer/go-junit-report@latest
```
Получить отчёт можно командой:
```sh
EXPORT_RESULT=true make test
```
После успешного выполнения команды появится файл `out/junit-report.xml`
с отчётом в формате [JUnit](https://junit.org).
### Покрытие кода тестами
Для получения отчётов о покрытии кода тестами необходимо установить следующие
инструменты:
```sh
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
```
Для получения отчёта о покрытии проекта тестами в консоли нужно выполнить
команду:
```sh
make coverage
```
Получить отчёт о покрытии кода тестами в формате *HTML* можно командой:
```sh
EXPORT_RESULT=true make coverage
```
После успешного выполнения этой команды файл `out/coverage.html` будет содержать
отчёт о покрытии кода проекта модульными тестами в формате *HTML*.
Получить отчёт о покрытии кода тестами в формате *XML* можно командой:
```sh
EXPORT_RESULT=true COVERAGE_FORMAT=xml make coverage
```
После успешного выполнения этой команды файл `out/coverage.xml` будет содержать
отчёт о покрытии кода проекта модульными тестами в формате *XML*.