From 663ac6bea5b9a624a5b0a7db3a0ceeb6a5eae226 Mon Sep 17 00:00:00 2001 From: Gustavo Bazan Date: Mon, 24 Mar 2025 10:51:05 +0000 Subject: [PATCH 1/3] task: make golangci-lint on gh action match local --- .github/workflows/pr.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index a0b24f7..d943296 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: - name: lint uses: golangci/golangci-lint-action@v6.5.0 with: - version: v1.41.1 + version: v1.62.2 tests-on-unix: needs: golangci-lint # run after golangci-lint action to not produce duplicated errors @@ -27,7 +27,8 @@ jobs: strategy: matrix: golang: - - 1.23 + - 'stable' + - 'oldstable' steps: - name: Checkout repository From af19ad3ebe70eb57e64643bc0d2d3b332ea4d035 Mon Sep 17 00:00:00 2001 From: Gustavo Bazan Date: Mon, 24 Mar 2025 10:58:11 +0000 Subject: [PATCH 2/3] update rules --- .golangci.yml | 33 +++++++++++++++++++----------- appservices/appservices_test.go | 4 ++-- appservices/event_triggers_test.go | 2 +- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 900895d..36487e2 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -11,7 +11,7 @@ linters-settings: gocyclo: min-complexity: 15 govet: - check-shadowing: true + shadow: true maligned: suggest-new: true revive: @@ -26,7 +26,9 @@ linters-settings: - name: error-return - name: error-strings - name: error-naming + - name: errorf - name: exported + - name: indent-error-flow - name: if-return - name: increment-decrement - name: var-naming @@ -40,55 +42,58 @@ linters-settings: - name: errorf - name: empty-block - name: superfluous-else + - name: struct-tag - name: unused-parameter + - name: unused-receiver - name: unreachable-code - name: redefines-builtin-id + tagliatelle: + # check the struck tag name case + case: + use-field-name: true + rules: + json: camel + yaml: camel + linters: # please, do not use `enable-all`: it's deprecated and will be removed soon. # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint disable-all: true enable: - bodyclose # checks whether HTTP response body is closed successfully [fast: false, auto-fix: false] - - deadcode # Finds unused code [fast: false, auto-fix: false] - - depguard # Go linter that checks if package imports are in a list of acceptable packages [fast: false, auto-fix: false] - dogsled # Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f()) [fast: true, auto-fix: false] - errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases [fast: false, auto-fix: false] - errorlint # errorlint is a linter for that can be used to find code that will cause problems with the error wrapping scheme introduced in Go 1.13. [fast: false, auto-fix: false] - exhaustive # check exhaustiveness of enum switch statements [fast: false, auto-fix: false] - - exportloopref # checks for pointers to enclosing loop variables [fast: false, auto-fix: false] - gochecknoinits # Checks that no init functions are present in Go code [fast: true, auto-fix: false] - - goconst # Finds repeated strings that could be replaced by a constant [fast: true, auto-fix: false] - gocritic # Provides many diagnostics that check for bugs, performance and style issues. [fast: false, auto-fix: false] - gocyclo # Computes and checks the cyclomatic complexity of functions [fast: true, auto-fix: false] - godot # Check if comments end in a period [fast: true, auto-fix: true] - gofmt # Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification [fast: true, auto-fix: true] - goimports # Goimports does everything that gofmt does. Additionally it checks unused imports [fast: true, auto-fix: true] - - gomnd # An analyzer to detect magic numbers. [fast: true, auto-fix: false] - goprintffuncname # Checks that printf-like functions are named with `f` at the end [fast: true, auto-fix: false] - gosec # Inspects source code for security problems [fast: false, auto-fix: false] - gosimple # Linter for Go source code that specializes in simplifying a code [fast: false, auto-fix: false] - govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string [fast: false, auto-fix: false] - - ifshort # Checks that your code uses short syntax for if-statements whenever possible [fast: true, auto-fix: false] - ineffassign # Detects when assignments to existing variables are not used [fast: true, auto-fix: false] - misspell # Finds commonly misspelled English words in comments [fast: true, auto-fix: true] - nakedret # Finds naked returns in functions greater than a specified function length [fast: true, auto-fix: false] - nolintlint # Reports ill-formed or insufficient nolint directives [fast: true, auto-fix: false] - revive # Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint. [fast: false, auto-fix: false] - rowserrcheck # checks whether Err of rows is checked successfully [fast: false, auto-fix: false] - - staticcheck #megacheck): Staticcheck is a go vet on steroids, applying a ton of static analysis checks [fast: false, auto-fix: false] - - structcheck # Finds unused struct fields [fast: false, auto-fix: false] + - staticcheck # Staticcheck is a go vet on steroids, applying a ton of static analysis checks [fast: false, auto-fix: false] - stylecheck # Stylecheck is a replacement for golint [fast: false, auto-fix: false] - thelper # thelper detects golang test helpers without t.Helper() call and checks the consistency of test helpers [fast: false, auto-fix: false] - typecheck # Like the front-end of a Go compiler, parses and type-checks Go code [fast: false, auto-fix: false] - unconvert # Remove unnecessary type conversions [fast: false, auto-fix: false] - unparam # Reports unused function parameters [fast: false, auto-fix: false] - unused # Checks Go code for unused constants, variables, functions and types [fast: false, auto-fix: false] - - varcheck # Finds unused global variables and constants [fast: false, auto-fix: false] - whitespace # Tool for detection of leading and trailing whitespace [fast: true, auto-fix: true] - # don't enable: + # don't enable: # - asciicheck # Simple linter to check that your code does not contain non-ASCII identifiers [fast: true, auto-fix: false] # - cyclop # checks function and package cyclomatic complexity [fast: false, auto-fix: false] +# - deadcode # Finds unused code [fast: false, auto-fix: false] # - dupl # Tool for code clone detection [fast: true, auto-fix: false] # - durationcheck # check for two durations multiplied together [fast: false, auto-fix: false] # - exhaustivestruct # Checks if all struct's fields are initialized [fast: false, auto-fix: false] @@ -98,7 +103,9 @@ linters: # - gci # Gci control golang package import order and make it always deterministic. [fast: true, auto-fix: true] # - gochecknoglobals # check that no global variables exist [fast: true, auto-fix: false] # - gocognit # Computes and checks the cognitive complexity of functions [fast: true, auto-fix: false] +# - goconst # Finds repeated strings that could be replaced by a constant [fast: true, auto-fix: false] # - godox # Tool for detection of FIXME, TODO and other comment keywords [fast: true, auto-fix: false] +# - gomnd # An analyzer to detect magic numbers. [fast: true, auto-fix: false] # - goerr113 # Golang linter to check the errors handling expressions [fast: false, auto-fix: false] # - gofumpt # Gofumpt checks whether code was gofumpt-ed. [fast: true, auto-fix: true] # - goheader # Checks is file header matches to pattern [fast: true, auto-fix: false] @@ -119,9 +126,11 @@ linters: # - promlinter # Check Prometheus metrics naming via promlint [fast: true, auto-fix: false] # - scopelint # Scopelint checks for unpinned variables in go programs [fast: true, auto-fix: false] # - sqlclosecheck # Checks that sql.Rows and sql.Stmt are closed. [fast: false, auto-fix: false] -# - tagliatelle # Checks the struct tags. [fast: true, auto-fix: false] +# - structcheck # Finds unused struct fields [fast: false, auto-fix: false] # - testpackage # linter that makes you use a separate _test package [fast: true, auto-fix: false] # - tparallel # tparallel detects inappropriate usage of t.Parallel() method in your Go test codes [fast: false, auto-fix: false] # - wastedassign # wastedassign finds wasted assignment statements. [fast: false, auto-fix: false] # - wrapcheck # Checks that errors returned from external packages are wrapped [fast: false, auto-fix: false] # - wsl # Whitespace Linter - Forces you to use empty lines! [fast: true, auto-fix: false] +# - varcheck # Finds unused global variables and constants [fast: false, auto-fix: false] +# - ifshort # Checks that your code uses short syntax for if-statements whenever possible [fast: true, auto-fix: false] diff --git a/appservices/appservices_test.go b/appservices/appservices_test.go index 6ae56ba..c96520b 100644 --- a/appservices/appservices_test.go +++ b/appservices/appservices_test.go @@ -258,7 +258,7 @@ func TestDo_noContent(t *testing.T) { client, mux, teardown := setup() defer teardown() - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + mux.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusNoContent) }) @@ -275,7 +275,7 @@ func TestClient_Do_httpError(t *testing.T) { client, mux, teardown := setup() defer teardown() - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + mux.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) { http.Error(w, "Bad Request", 400) }) diff --git a/appservices/event_triggers_test.go b/appservices/event_triggers_test.go index 8cb29d2..63f1e22 100644 --- a/appservices/event_triggers_test.go +++ b/appservices/event_triggers_test.go @@ -634,7 +634,7 @@ func TestEventTriggers_Delete(t *testing.T) { path := fmt.Sprintf("/groups/%s/apps/%s/triggers/%s", groupID, appID, triggerID) - mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { + mux.HandleFunc(path, func(_ http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodDelete) }) From 2a2fe64f56f27206b847c1b609cf7b61c4eb5cc5 Mon Sep 17 00:00:00 2001 From: Gustavo Bazan Date: Mon, 24 Mar 2025 11:02:07 +0000 Subject: [PATCH 3/3] Update .golangci.yml --- .golangci.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 36487e2..245515f 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -10,10 +10,6 @@ linters-settings: - octalLiteral gocyclo: min-complexity: 15 - govet: - shadow: true - maligned: - suggest-new: true revive: # see https://github.com/mgechev/revive#available-rules for details. ignore-generated-header: true @@ -47,14 +43,6 @@ linters-settings: - name: unused-receiver - name: unreachable-code - name: redefines-builtin-id - tagliatelle: - # check the struck tag name case - case: - use-field-name: true - rules: - json: camel - yaml: camel - linters: # please, do not use `enable-all`: it's deprecated and will be removed soon. # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint