drawio-export/README.md
Алексей Бадяев b32f3ab88a
Some checks failed
golangci-lint / lint (stable, ubuntu-latest) (push) Failing after 4s
golangci-lint / lint (stable, windows-latest) (push) Failing after 12s
build / build (push) Failing after 27s
build / build_windows (push) Successful in 52s
Добавлен линтер golangci-lint
2024-10-17 23:29:54 +07:00

133 lines
6.3 KiB
Markdown
Raw 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
можно командой:
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*.