# Based on https://gist.github.com/maratori/47a4d00457a92aa426dbd48a18776322 # This code is licensed under the terms of the MIT license https://opensource.org/license/mit # Copyright (c) 2021 Marat Reymers version: "2" linters: default: none enable: - asasalint - asciicheck - bidichk - bodyclose - cyclop - dupl - durationcheck - errname - exhaustive - funlen - gocheckcompilerdirectives - gochecknoinits - gochecksumtype - gocyclo - godot - gomoddirectives - gomodguard_v2 - goprintffuncname - gosec - govet - ineffassign - loggercheck - makezero - mirror - musttag - nakedret - nestif - nilerr - noctx - nolintlint - nosprintfhostport - predeclared - promlinter - protogetter - reassign - revive - rowserrcheck - sloglint - spancheck - sqlclosecheck - staticcheck - testableexamples - testifylint - tparallel - unconvert - unused - usestdlibvars - wastedassign - whitespace settings: cyclop: max-complexity: 30 package-average: 10 errcheck: check-type-assertions: true exhaustive: check: - switch - map exhaustruct: exclude: - ^net/http.Client$ - ^net/http.Cookie$ - ^net/http.Request$ - ^net/http.Response$ - ^net/http.Server$ - ^net/http.Transport$ - ^net/url.URL$ - ^os/exec.Cmd$ - ^reflect.StructField$ - ^github.com/Shopify/sarama.Config$ - ^github.com/Shopify/sarama.ProducerMessage$ - ^github.com/mitchellh/mapstructure.DecoderConfig$ - ^github.com/prometheus/client_golang/.+Opts$ - ^github.com/spf13/cobra.Command$ - ^github.com/spf13/cobra.CompletionOptions$ - ^github.com/stretchr/testify/mock.Mock$ - ^github.com/testcontainers/testcontainers-go.+Request$ - ^github.com/testcontainers/testcontainers-go.FromDockerfile$ - ^golang.org/x/tools/go/analysis.Analyzer$ - ^google.golang.org/protobuf/.+Options$ - ^gopkg.in/yaml.v3.Node$ funlen: lines: 100 statements: 50 ignore-comments: true gocognit: min-complexity: 20 gocritic: settings: captLocal: paramsOnly: false underef: skipRecvDeref: false gomodguard_v2: blocked: - module: github.com/golang/protobuf recommendations: - google.golang.org/protobuf reason: see https://developers.google.com/protocol-buffers/docs/reference/go/faq#modules - module: github.com/satori/go.uuid recommendations: - github.com/google/uuid reason: satori's package is not maintained - module: github.com/gofrs/uuid recommendations: - github.com/gofrs/uuid/v5 reason: gofrs' package was not go module before v5 govet: disable: - fieldalignment enable-all: true inamedparam: skip-single-param: true mnd: ignored-functions: - flag.Arg - flag.Duration.* - flag.Float.* - flag.Int.* - flag.Uint.* - os.Chmod - os.Mkdir.* - os.OpenFile - os.WriteFile - prometheus.ExponentialBuckets.* - prometheus.LinearBuckets nakedret: max-func-lines: 0 nolintlint: require-explanation: true require-specific: true allow-no-explanation: - funlen - gocognit - lll perfsprint: strconcat: false revive: rules: - name: unused-parameter disabled: true rowserrcheck: packages: - github.com/jmoiron/sqlx staticcheck: checks: - all - -ST1003 exclusions: generated: lax presets: - comments - common-false-positives - legacy - std-error-handling rules: - linters: - godot source: (noinspection|TODO) - linters: - gocritic source: //noinspection - linters: - bodyclose - dupl - funlen - goconst - gosec - noctx - wrapcheck path: _test\.go - linters: - perfsprint text: fmt.Sprintf can be replaced with string addition paths: - third_party$ - builtin$ - examples$ issues: max-same-issues: 50 formatters: enable: - goimports exclusions: generated: lax paths: - third_party$ - builtin$ - examples$