From 836ca825d63647b8e21e74a30409e376eec75fd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Westerb=C3=B8?= Date: Mon, 22 Sep 2025 10:37:31 +0200 Subject: [PATCH 1/2] Update golangci-lint configuration and dependencies for improved code quality --- .golangci.yml | 108 ++++++++++++++++++++++++++++---------------------- go.mod | 15 ++++--- go.sum | 18 ++++++--- 3 files changed, 82 insertions(+), 59 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index bddd7ab..234b25c 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,54 +1,68 @@ -# Simplified golangci-lint configuration +version: "2" + run: timeout: 5m - tests: true -linters-settings: - godot: - # Completely disable checking for periods at the end of comments - exclude: [".*"] - goimports: - local-prefixes: github.com/nhn/oss/oss-models -# Core linters that provide the most value -linters: - disable-all: true - enable: - - errcheck # Checks for unchecked errors - - govet # Reports suspicious constructs - - staticcheck # Go static analysis - - stylecheck # Stylecheck replaces golint - - goimports # Formats imports and code - - gofmt # Checks if code was gofmt-ed - - ineffassign # Detects unused assignments - - misspell # Finds commonly misspelled English words - - unused # Checks for unused code - - godot # Check if comments end in a period + allow-parallel-runners: true + issues: - exclude-files: - - "zz_generated.deepcopy.go" - exclude-dirs: - - bin - - crds + exclude-use-default: false exclude-rules: - # Exclude test files from certain linters - - path: _test\.go + - path: "api/*" linters: - - errcheck - # Exclude auto-generated files - - path: zz_generated\..*\.go + - lll + - path: "internal/*" linters: - - staticcheck - - stylecheck - - goimports - - unused - # Exclude init functions - - path: pkg/v1alpha1/(vitistack|kubernetes_provider|machine_provider)\.go - text: "don't use `init` function" + - dupl + - lll + - path: _test\.go linters: - - gochecknoinits - # Combined rule for kubebuilder comments - - linters: - - godot - - stylecheck - source: "^// \\+.*$" - max-same-issues: 5 - max-issues-per-linter: 50 \ No newline at end of file + - gocyclo + - errcheck + - dupl + - gosec + +linters: + # Enable a balanced set of linters for a Kubernetes operator + enable: + # Default linters + - errcheck # Check for unchecked errors + - govet # Suspicious constructs + - ineffassign # Detect ineffectual assignments + - staticcheck # Advanced static analysis + - unused # Checks for unused code + + # Additional linters for code quality + - bodyclose # Checks that HTTP response bodies are closed + - dupl # Detect code clones + - durationcheck # Check for two durations multiplied together + - errorlint # Checks for error handling issues + - funlen # Check function length + - gocognit # Calculate cognitive complexity + - goconst # Find repeated strings that could be constants + - gocritic # Provides many diagnostics + - gocyclo # Check cyclomatic complexity + - misspell # Find misspelled words + - prealloc # Find slice declarations that could be prealloc'd + - revive # Fast, configurable, linter + - unconvert # Remove unnecessary type conversions + - unparam # Find unused function parameters + + settings: + gocyclo: + min-complexity: 15 + funlen: + lines: 100 + statements: 50 + revive: + rules: + - name: comment-spacings + gocritic: + enabled-checks: + # Only keep the checks that aren't enabled by default + - commentedOutCode + - commentedOutImport + - nilValReturn + - sloppyReassign + - weakCond + - rangeValCopy + - hugeParam diff --git a/go.mod b/go.mod index 8a3d3f8..270a386 100644 --- a/go.mod +++ b/go.mod @@ -3,11 +3,14 @@ module github.com/vitistack/ipam-api go 1.24.4 require ( - github.com/gin-gonic/gin v1.10.1 + github.com/gin-gonic/gin v1.11.0 github.com/go-playground/validator/v10 v10.27.0 github.com/go-resty/resty/v2 v2.16.5 github.com/spf13/cobra v1.10.1 github.com/spf13/viper v1.21.0 + github.com/swaggo/files v1.0.1 + github.com/swaggo/gin-swagger v1.6.1 + github.com/swaggo/swag v1.16.6 go.mongodb.org/mongo-driver/v2 v2.3.0 go.uber.org/zap v1.27.0 ) @@ -40,6 +43,7 @@ require ( github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-yaml v1.18.0 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -52,21 +56,20 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect - github.com/sagikazarmark/locafero v0.11.0 // indirect - github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect + github.com/quic-go/qpack v0.5.1 // indirect + github.com/quic-go/quic-go v0.54.0 // indirect + github.com/sagikazarmark/locafero v0.12.0 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/swaggo/files v1.0.1 - github.com/swaggo/gin-swagger v1.6.1 - github.com/swaggo/swag v1.16.6 github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.0 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.2 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect + go.uber.org/mock v0.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.21.0 // indirect diff --git a/go.sum b/go.sum index ac9f6e7..f2869e2 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= -github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= -github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk= +github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= github.com/go-openapi/jsonpointer v0.22.0 h1:TmMhghgNef9YXxTu1tOopo+0BGEytxA+okbry0HjZsM= github.com/go-openapi/jsonpointer v0.22.0/go.mod h1:xt3jV88UtExdIkkL7NloURjRQjbeUgcxFblMjq2iaiU= github.com/go-openapi/jsonreference v0.21.1 h1:bSKrcl8819zKiOgxkbVNRUBIr6Wwj9KYrDbMjRs0cDA= @@ -68,6 +68,8 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -102,13 +104,15 @@ github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0 github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= +github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= +github.com/quic-go/quic-go v0.54.0 h1:6s1YB9QotYI6Ospeiguknbp2Znb/jZYjZLRXn9kMQBg= +github.com/quic-go/quic-go v0.54.0/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= -github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= +github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4= +github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= @@ -154,6 +158,8 @@ go.mongodb.org/mongo-driver/v2 v2.3.0 h1:sh55yOXA2vUjW1QYw/2tRlHSQViwDyPnW61AwpZ go.mongodb.org/mongo-driver/v2 v2.3.0/go.mod h1:jHeEDJHJq7tm6ZF45Issun9dbogjfnPySb1vXA7EeAI= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= From 22087ce7e327dbcd889288bbdd71c0c9e2100a76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Westerb=C3=B8?= Date: Mon, 22 Sep 2025 10:42:48 +0200 Subject: [PATCH 2/2] Update Go version to 1.25.1 in go.mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 270a386..1487ebf 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/vitistack/ipam-api -go 1.24.4 +go 1.25.1 require ( github.com/gin-gonic/gin v1.11.0