# This is the configuration for golangci-lint for the restic project.
#
# A sample config with all settings is here:
# https://github.com/golangci/golangci-lint/blob/master/.golangci.example.yml

linters:
  # only enable the linters listed below
  disable-all: true
  enable:
    # make sure all errors returned by functions are handled
    - errcheck

    # show how code can be simplified
    - gosimple

    # make sure code is formatted
    - gofmt

    # examine code and report suspicious constructs, such as Printf calls whose
    # arguments do not align with the format string
    - govet

    # make sure names and comments are used according to the conventions
    - revive

    # detect when assignments to existing variables are not used
    - ineffassign

    # run static analysis and find errors
    - staticcheck

    # find unused variables, functions, structs, types, etc.
    - unused

    # parse and typecheck code
    - typecheck

    # ensure that http response bodies are closed
    - bodyclose

    - importas

issues:
  # don't use the default exclude rules, this hides (among others) ignored
  # errors from Close() calls
  exclude-use-default: false

  # list of things to not warn about
  exclude:
    # revive: do not warn about missing comments for exported stuff
    - exported (function|method|var|type|const) .* should have comment or be unexported
    # revive: ignore constants in all caps
    - don't use ALL_CAPS in Go names; use CamelCase
    # revive: lots of packages don't have such a comment
    - "package-comments: should have a package comment"
    # staticcheck: there's no easy way to replace these packages
    - "SA1019: \"golang.org/x/crypto/poly1305\" is deprecated"
    - "SA1019: \"golang.org/x/crypto/openpgp\" is deprecated"
    - "redefines-builtin-id:"

  exclude-rules:
    # revive: ignore unused parameters in tests
    - path: (_test\.go|testing\.go|backend/.*/tests\.go)
      text: "unused-parameter:"

linters-settings:
  importas:
    alias:
      - pkg: github.com/restic/restic/internal/test
        alias: rtest
