# options for analysis running run: # default concurrency is an available CPU number concurrency: 8 # timeout for analysis, e.g. 30s, 5m, default is 1m timeout: 5m # exit code when at least one issue was found, default is 1 issues-exit-code: 1 # include test files or not, default is true tests: true # which dirs to skip: they won't be analyzed; # can use regexp here: generated.*, regexp is applied on full path; # default value is empty list, but next dirs are always skipped independently # from this option's value: # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ # skip-dirs: # - ^test.* # by default isn't set. If set we pass it to "go list -mod={option}". From "go help modules": # If invoked with -mod=readonly, the go command is disallowed from the implicit # automatic updating of go.mod described above. Instead, it fails when any changes # to go.mod are needed. This setting is most useful to check that go.mod does # not need updates, such as in a continuous integration and testing system. # If invoked with -mod=vendor, the go command assumes that the vendor # directory holds the correct copies of dependencies and ignores # the dependency descriptions in go.mod. modules-download-mode: readonly # which files to skip: they will be analyzed, but issues from them # won't be reported. Default value is empty list, but there is # no need to include all autogenerated files, we confidently recognize # autogenerated files. If it's not please let us know. # skip-files: # - ".*\\.my\\.go$" # - lib/bad.go # all available settings of specific linters linters-settings: gocyclo: # minimal code complexity to report, 30 by default (but we recommend 10-20) min-complexity: 35 govet: enable: - nilness goimports: local-prefixes: github.com/cilium/cilium unused: parameters-are-used: true local-variables-are-used: true field-writes-are-uses: true post-statements-are-reads: true exported-fields-are-used: true generated-is-used: true goheader: values: regexp: PROJECT: 'K9s' template: |- SPDX-License-Identifier: Apache-2.0 Copyright Authors of {{ PROJECT }} gosec: includes: - G402 sloglint: # Enforce not mixing key-value pairs and attributes. # https://github.com/go-simpler/sloglint?tab=readme-ov-file#no-mixed-arguments # Default: true no-mixed-args: true # Enforce using key-value pairs only (overrides no-mixed-args, incompatible with attr-only). # https://github.com/go-simpler/sloglint?tab=readme-ov-file#key-value-pairs-only # Default: false kv-only: true # Enforce using attributes only (overrides no-mixed-args, incompatible with kv-only). # https://github.com/go-simpler/sloglint?tab=readme-ov-file#attributes-only # Default: false attr-only: false # Enforce not using global loggers. # Values: # - "": disabled # - "all": report all global loggers # - "default": report only the default slog logger # https://github.com/go-simpler/sloglint?tab=readme-ov-file#no-global # Default: "" no-global: "" # Enforce using methods that accept a context. # Values: # - "": disabled # - "all": report all contextless calls # - "scope": report only if a context exists in the scope of the outermost function # https://github.com/go-simpler/sloglint?tab=readme-ov-file#context-only # Default: "" context: "" # Enforce using static values for log messages. # https://github.com/go-simpler/sloglint?tab=readme-ov-file#static-messages # Default: false static-msg: false # Enforce using constants instead of raw keys. # https://github.com/go-simpler/sloglint?tab=readme-ov-file#no-raw-keys # Default: false no-raw-keys: true # Enforce a single key naming convention. # Values: snake, kebab, camel, pascal # https://github.com/go-simpler/sloglint?tab=readme-ov-file#key-naming-convention # Default: "" key-naming-case: camel # Enforce not using specific keys. # https://github.com/go-simpler/sloglint?tab=readme-ov-file#forbidden-keys # Default: [] forbidden-keys: - time - level - msg - source # Enforce putting arguments on separate lines. # https://github.com/go-simpler/sloglint?tab=readme-ov-file#arguments-on-separate-lines # Default: false args-on-sep-lines: false issues: # default is true. Enables skipping of directories: # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ exclude-dirs-use-default: true # Excluding configuration per-path, per-linter, per-text and per-source exclude-rules: - linters: [staticcheck] text: "SA1019" # this is rule for deprecated method - linters: [staticcheck] text: "SA9003: empty branch" - linters: [staticcheck] text: "SA2001: empty critical section" - linters: [err113] text: "do not define dynamic errors, use wrapped static errors instead" # This rule to avoid opinionated check fmt.Errorf("text") # Skip goimports check on generated files - path: \\.(generated\\.deepcopy|pb)\\.go$ linters: - goimports # Skip goheader check on files imported and modified from upstream k8s - path: "pkg/ipam/(cidrset|service)/.+\\.go" linters: - goheader linters: disable-all: true enable: - err113 - gofmt - goimports - govet - ineffassign - misspell - unused - goheader - gosec - gomodguard - gosimple - errcheck - gocyclo - gosec - gosimple - misspell - prealloc - typecheck - sloglint