chore(lint): настроить golangci-lint v2, gofumpt и форматирование в make
- .golangci.yml: набор линтеров под требования §14 (gosec, gocritic, sloglint, noctx, revive, depguard для запрета циклических зависимостей internal/*) - gofumpt вынесен из formatters golangci-lint v2.13 (сообщал о расхождениях, которые сам же не устранял) и применяется отдельным инструментом - make fmt/go-lint: проверка gofumpt + golangci-lint fmt --diff - scripts/gitleaks-scan.sh: поддержка gitleaks 8.19+ (dir) и старых версий (detect) - исправлены замечания линтеров: обработка ошибок Close, контекст в логах, NewRequestWithContext в тестах, комментарий к blank-import драйвера SQLite
This commit is contained in:
@@ -15,6 +15,7 @@ export GOCACHE := $(CACHE_DIR)/go-build
|
||||
export GOMODCACHE:= $(CACHE_DIR)/go-mod
|
||||
export GOPATH := $(CACHE_DIR)/gopath
|
||||
export GOTOOLCHAIN := local
|
||||
export GOLANGCI_LINT_CACHE := $(CACHE_DIR)/golangci-lint
|
||||
export CGO_ENABLED ?= 1
|
||||
|
||||
GOFLAGS_LOCAL := -trimpath
|
||||
@@ -102,9 +103,11 @@ lint: tools go-lint web-lint ## Полный линт (Go + web)
|
||||
|
||||
.PHONY: go-lint
|
||||
go-lint: tools ## Линт Go: формат, vet, golangci-lint
|
||||
@echo "==> gofmt check"
|
||||
@unformatted=$$(gofumpt -l . | grep -v '^\.cache/' || true); \
|
||||
if [ -n "$$unformatted" ]; then echo "$$unformatted"; echo "run: make fmt"; exit 1; fi
|
||||
@echo "==> формат (gofumpt + golangci-lint fmt)"
|
||||
@out=$$(gofumpt -l ./cmd ./internal ./scripts 2>/dev/null || true); \
|
||||
if [ -n "$$out" ]; then printf '%s\n' "$$out"; echo "run: make fmt"; exit 1; fi
|
||||
@out=$$(golangci-lint fmt --diff $(GO_PACKAGES)); \
|
||||
if [ -n "$$out" ]; then printf '%s\n' "$$out"; echo "run: make fmt"; exit 1; fi
|
||||
@echo "==> go vet"
|
||||
@go vet $(GO_PACKAGES)
|
||||
@echo "==> golangci-lint"
|
||||
@@ -112,7 +115,8 @@ go-lint: tools ## Линт Go: формат, vet, golangci-lint
|
||||
|
||||
.PHONY: fmt
|
||||
fmt: tools ## Форматировать Go-код
|
||||
gofumpt -w .
|
||||
gofumpt -w ./cmd ./internal
|
||||
golangci-lint fmt $(GO_PACKAGES)
|
||||
|
||||
.PHONY: generate
|
||||
generate: tools ## Проверить сгенерированные артефакты (OpenAPI, sqlc — по мере появления)
|
||||
|
||||
Reference in New Issue
Block a user