# Options for analysis running. run: # Number of operating system threads (`GOMAXPROCS`) that can execute golangci-lint simultaneously. # If it is explicitly set to 0 (i.e. not the default) then golangci-lint will automatically set the value to match Linux container CPU quota. # Default: the number of logical CPUs in the machine #concurrency: 4 # Timeout for analysis, e.g. 30s, 5m. # Default: 1m #timeout: 5m # Exit code when at least one issue was found. # Default: 1 #issues-exit-code: 2 # Include test files or not. # Default: true tests: false # List of build tags, all linters use it. # Default: [] #build-tags: # - mytag # 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. # # Allowed values: readonly|vendor|mod # Default: "" #modules-download-mode: readonly # Allow multiple parallel golangci-lint instances running. # If false, golangci-lint acquires file lock on start. # Default: false allow-parallel-runners: true # Allow multiple golangci-lint instances running, but serialize them around a lock. # If false, golangci-lint exits with an error if it fails to acquire file lock on start. # Default: false allow-serial-runners: true # Define the Go version limit. # Mainly related to generics support since go1.18. # Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.17 #go: '1.19' # output configuration options output: # The formats used to render issues. # Formats: # - `colored-line-number` # - `line-number` # - `json` # - `colored-tab` # - `tab` # - `html` # - `checkstyle` # - `code-climate` # - `junit-xml` # - `github-actions` # - `teamcity` # - `sarif` # Output path can be either `stdout`, `stderr` or path to the file to write to. # # For the CLI flag (`--out-format`), multiple formats can be specified by separating them by comma. # The output can be specified for each of them by separating format name and path by colon symbol. # Example: "--out-format=checkstyle:report.xml,json:stdout,colored-line-number" # The CLI flag (`--out-format`) override the configuration file. # # Default: # formats: # - format: colored-line-number # path: stdout formats: - format: junit-xml path: golang-lint.xml - format: sarif path: golang-lint.sarif - format: github-actions # Print lines of code with issue. # Default: true #print-issued-lines: false # Print linter name in the end of issue text. # Default: true #print-linter-name: false # Make issues output unique by line. # Default: true #uniq-by-line: false # Add a prefix to the output file references. # Default: "" #path-prefix: "" # Sort results by the order defined in `sort-order`. # Default: false sort-results: true # Order to use when sorting results. # Require `sort-results` to `true`. # Possible values: `file`, `linter`, and `severity`. # # If the severity values are inside the following list, they are ordered in this order: # 1. error # 2. warning # 3. high # 4. medium # 5. low # Either they are sorted alphabetically. # # Default: ["file"] sort-order: - linter - severity - file # filepath, line, and column. # Show statistics per linter. # Default: false show-stats: true linters: # Disable all linters. # Default: false #disable-all: true # Enable specific linter # https://golangci-lint.run/usage/linters/#enabled-by-default #enable: {} # Enable all available linters. # Default: false #enable-all: true # Disable specific linter # https://golangci-lint.run/usage/linters/#disabled-by-default #disable: {} # Enable presets. # https://golangci-lint.run/usage/linters # Default: [] presets: - bugs - comment - complexity - error - format - import - metalinter - module - performance - sql - style # Enable only fast linters from enabled linters set (first run won't be fast) # Default: false fast: true issues: # List of regexps of issue texts to exclude. # # But independently of this option we use default exclude patterns, # it can be disabled by `exclude-use-default: false`. # To list all excluded by default patterns execute `golangci-lint run --help` # # Default: https://golangci-lint.run/usage/false-positives/#default-exclusions #exclude: #- abcdef # Excluding configuration per-path, per-linter, per-text and per-source exclude-rules: # Exclude some linters from running on tests files. - path: _test\.go linters: - gocyclo - errcheck - dupl - gosec # Run some linter only for test files by excluding its issues for everything else. - path-except: _test\.go linters: - forbidigo # Exclude known linters from partially hard-vendored code, # which is impossible to exclude via `nolint` comments. # `/` will be replaced by current OS file path separator to properly work on Windows. #- path: internal/hmac/ #text: "weak cryptographic primitive" #linters: #- gosec # Exclude some `staticcheck` messages. #- linters: # - staticcheck # text: "SA9003:" # Exclude `lll` issues for long lines with `go:generate`. - linters: - lll source: "^//go:generate " # Independently of option `exclude` we use default exclude patterns, # it can be disabled by this option. # To list all excluded by default patterns execute `golangci-lint run --help`. # Default: true #exclude-use-default: false # If set to true, `exclude` and `exclude-rules` regular expressions become case-sensitive. # Default: false exclude-case-sensitive: false # Which dirs to exclude: issues from them won't be reported. # Can use regexp here: `generated.*`, regexp is applied on full path, # including the path prefix if one is set. # Default dirs are skipped independently of this option's value (see exclude-dirs-use-default). # "/" will be replaced by current OS file path separator to properly work on Windows. # Default: [] #exclude-dirs: # - src/external_libs # - autogenerated_by_my_lib # Enables exclude of directories: # - vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ # Default: true #exclude-dirs-use-default: false # Which files to exclude: they will be analyzed, but issues from them won't be reported. # There is no need to include all autogenerated files, # we confidently recognize autogenerated files. # If it's not, please let us know. # "/" will be replaced by current OS file path separator to properly work on Windows. # Default: [] #exclude-files: # - ".*\\.my\\.go$" # - lib/bad.go # Mode of the generated files analysis. # # - `strict`: sources are excluded by following strictly the Go generated file convention. # Source files that have lines matching only the following regular expression will be excluded: `^// Code generated .* DO NOT EDIT\.$` # This line must appear before the first non-comment, non-blank text in the file. # https://go.dev/s/generatedcode # - `lax`: sources are excluded if they contain lines `autogenerated file`, `code generated`, `do not edit`, etc. # - `disable`: disable the generated files exclusion. # # Default: lax exclude-generated: strict # The list of ids of default excludes to include or disable. # https://golangci-lint.run/usage/false-positives/#default-exclusions # Default: [] include: - EXC0001 - EXC0002 - EXC0003 - EXC0004 - EXC0005 - EXC0006 - EXC0007 - EXC0008 - EXC0009 - EXC0010 - EXC0011 - EXC0012 - EXC0013 - EXC0014 - EXC0015 # Maximum issues count per one linter. # Set to 0 to disable. # Default: 50 max-issues-per-linter: 0 # Maximum count of issues with the same text. # Set to 0 to disable. # Default: 3 max-same-issues: 0 # Show only new issues: if there are unstaged changes or untracked files, # only those changes are analyzed, else only changes in HEAD~ are analyzed. # It's a super-useful option for integration of golangci-lint into existing large codebase. # It's not practical to fix all existing issues at the moment of integration: # much better don't allow issues in new code. # # Default: false #new: true # Show only new issues created after git revision `REV`. # Default: "" #new-from-rev: HEAD # Show only new issues created in git patch with set file path. # Default: "" #new-from-patch: path/to/patch/file # Show issues in any part of update files (requires new-from-rev or new-from-patch). # Default: false #whole-files: true # Fix found issues (if it's supported by the linter). # Default: false #fix: true severity: # Set the default severity for issues. # # If severity rules are defined and the issues do not match or no severity is provided to the rule # this will be the default severity applied. # Severities should match the supported severity names of the selected out format. # - Code climate: https://docs.codeclimate.com/docs/issues#issue-severity # - Checkstyle: https://checkstyle.sourceforge.io/property_types.html#SeverityLevel # - GitHub: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-error-message # - TeamCity: https://www.jetbrains.com/help/teamcity/service-messages.html#Inspection+Instance # # `@linter` can be used as severity value to keep the severity from linters (e.g. revive, gosec, ...) # # Default: "" default-severity: error # If set to true `severity-rules` regular expressions become case-sensitive. # Default: false #case-sensitive: true # When a list of severity rules are provided, severity information will be added to lint issues. # Severity rules have the same filtering capability as exclude rules # except you are allowed to specify one matcher per severity rule. # # `@linter` can be used as severity value to keep the severity from linters (e.g. revive, gosec, ...) # # Only affects out formats that support setting severity information. # # Default: [] rules: - linters: - dupl severity: info