diff --git a/.forgejo/workflows/tests.yml b/.forgejo/workflows/tests.yml index 6e1afac9..f66a2c40 100644 --- a/.forgejo/workflows/tests.yml +++ b/.forgejo/workflows/tests.yml @@ -14,10 +14,11 @@ jobs: go-version: '1.21' cache: true - - name: golangci-lint - uses: https://github.com/golangci/golangci-lint-action@v3 - with: - version: latest + - name: Install linters + run: make lint-install + + - name: Run linters + run: make lint tests: name: Tests diff --git a/.golangci.yml b/.golangci.yml index eba0d605..12ebe04c 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -37,6 +37,14 @@ linters-settings: alias: pkg: git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object alias: objectSDK + custom: + noliteral: + path: bin/external_linters.so + original-url: git.frostfs.info/TrueCloudLab/linters.git +# settings: +# target-methods : ["reportFlushError", "reportError"] +# disable-packages: ["codes", "err", "res","exec"] +# constants-repository: "git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs" linters: enable: @@ -69,5 +77,6 @@ linters: - gocognit - contextcheck - importas + - noliteral disable-all: true fast: false diff --git a/Makefile b/Makefile index e1464dd5..ed222efc 100755 --- a/Makefile +++ b/Makefile @@ -8,8 +8,7 @@ HUB_IMAGE ?= truecloudlab/frostfs HUB_TAG ?= "$(shell echo ${VERSION} | sed 's/^v//')" GO_VERSION ?= 1.21 -LINT_VERSION ?= 1.52.2 -ARCH = amd64 +LINT_VERSION ?= 1.53.3 BIN = bin RELEASE = release @@ -25,6 +24,9 @@ PKG_VERSION ?= $(shell echo $(VERSION) | sed "s/^v//" | \ sed -E "s/(.*)-(g[a-fA-F0-9]{6,8})(.*)/\1\3~\2/" | \ sed "s/-/~/")-${OS_RELEASE} +OUTPUT_LINT_DIR ?= $(shell pwd)/bin +TMP_DIR := .cache + .PHONY: help all images dep clean fmts fmt imports test lint docker/lint prepare-release debpackage pre-commit unpre-commit @@ -131,9 +133,23 @@ test: pre-commit-run: @pre-commit run -a --hook-stage manual +# Install linters +lint-install: + @mkdir -p $(TMP_DIR) + @rm -rf $(TMP_DIR)/linters + @git clone --depth 1 https://git.frostfs.info/TrueCloudLab/linters.git $(TMP_DIR)/linters + @make -C $(TMP_DIR)/linters lib CGO_ENABLED=1 OUT_DIR=$(OUTPUT_LINT_DIR) + @rm -rf $(TMP_DIR)/linters + @rmdir $(TMP_DIR) 2>/dev/null || true + @GOBIN=$(OUTPUT_LINT_DIR) go install github.com/golangci/golangci-lint/cmd/golangci-lint@v$(LINT_VERSION) + + # Run linters lint: - @golangci-lint --timeout=5m run + NOLITERAL_TARGET_METHODS="reportFlushError,reportError" \ + NOLITERAL_DISABLE_PACKAGES="codes,err,res,exec" \ + NOLITERAL_CONSTANTS_PACKAGE="git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs" \ + $(OUTPUT_LINT_DIR)/golangci-lint --timeout=10m run # Install staticcheck staticcheck-install: