Revision 3b5a868b9fe83ede28248d2d58176e16a9a95406 authored by Andrej Ocenas on 11 September 2023, 09:06:57 UTC, committed by Andrej Ocenas on 11 September 2023, 09:06:57 UTC
1 parent 77e4d47
Raw File
.golangci.toml
[run]
timeout = "10m"

[linters-settings.goconst]
min-len = 5
min-occurrences = 5

[linters-settings.exhaustive]
default-signifies-exhaustive = true

[linters-settings.revive]
ignore-generated-header = false
severity = "warning"
confidence = 3

[linters-settings.depguard.rules.main]
allow = [] # allow all
deny = [
  {pkg = "io/ioutil", desc = "Deprecated: As of Go 1.16, the same functionality is now provided by package io or package os, and those implementations should be preferred in new code. See the specific function documentation for details."},
  {pkg = "gopkg.in/yaml.v2", desc = "Grafana packages are not allowed to depend on gopkg.in/yaml.v2 as gopkg.in/yaml.v3 is now available"},
  {pkg = "github.com/pkg/errors", desc = "Deprecated: Go 1.13 supports the functionality provided by pkg/errors in the standard library."},
  {pkg = "github.com/xorcare/pointer", desc = "Use pkg/util.Pointer instead, which is a generic one-liner alternative"},
  {pkg = "github.com/gofrs/uuid", desc = "Use github.com/google/uuid instead, which we already depend on."},
]

[linters-settings.depguard.rules.coreplugins]
deny = [
  {pkg = "github.com/grafana/grafana/pkg/", desc = "Core plugins are not allowed to depend on Grafana core packages"},
]
files = [
  "**/pkg/tsdb/testdatasource/*",
  "**/pkg/tsdb/testdatasource/**/*",
]

[linters-settings.gocritic]
enabled-checks = ["ruleguard"]
[linters-settings.gocritic.settings.ruleguard]
rules = "pkg/ruleguard.rules.go"

[linters-settings.nakedret]
max-func-lines = 60

[linters]
disable-all = true
enable = [
  "bodyclose",
  "depguard",
  "dogsled",
  "errcheck",
  # "gochecknoinits",
  "goconst",
  # "gocritic", # Temporarily disabled on 2022-09-09, running into weird bug "ruleguard: execution error: used Run() with an empty rule set; forgot to call Load() first?"
  "goimports",
  "goprintffuncname",
  "gosec",
  "gosimple",
  "govet",
  "ineffassign",
  "misspell",
  "nakedret",
  "exportloopref",
  "staticcheck",
  "stylecheck",
  "typecheck",
  "unconvert",
  "unused",
  "whitespace",
  "gocyclo",
  "exhaustive",
  "typecheck",
  "asciicheck",
  "errorlint",
  "revive",
]

# Disabled linters (might want them later)
# "unparam"
# "rowserrcheck" # The linter doesn't detect that both Scan and Close also returns the error message returned by Err.

[issues]
exclude-use-default = false

# Enable when appropriate
# Poorly chosen identifier
[[issues.exclude-rules]]
linters = ["stylecheck"]
text = "ST1003"

# Enable when appropriate
# Dot imports that aren't in external test packages are discouraged.
[[issues.exclude-rules]]
linters = ["stylecheck"]
text = "ST1001"

# Enable when appropriate
# http.CloseNotifier has been deprecated since Go 1.11 and an alternative has been available since Go 1.7: We currently need it in pkg/web/response_writer.go.
[[issues.exclude-rules]]
linters = ["staticcheck"]
text = "SA1019: http.CloseNotifier"

# strings.Title has been deprecated since Go 1.18 and an alternative has been available since Go 1.0: The rule Title uses for word boundaries does not handle Unicode punctuation properly.
# Use golang.org/x/text/cases instead.
[[issues.exclude-rules]]
linters = ["staticcheck"]
text = "SA1019: strings.Title"

[[issues.exclude-rules]]
linters = ["staticcheck"]
text = "use fake service and real access control evaluator instead"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "G108"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "G110"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "G201"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "G202"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "G306"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "401"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "402"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "501"

[[issues.exclude-rules]]
linters = ["gosec"]
text = "404"

[[issues.exclude-rules]]
linters = ["misspell"]
text = "Unknwon` is a misspelling of `Unknown"

[[issues.exclude-rules]]
linters = ["errorlint"]
text = "non-wrapping format verb for fmt.Errorf"

# TODO: Enable
[[issues.exclude-rules]]
linters = ["stylecheck"]
text = "ST1000"

# TODO: Enable
[[issues.exclude-rules]]
linters = ["stylecheck"]
text = "ST1020"

# TODO: Enable
[[issues.exclude-rules]]
linters = ["stylecheck"]
text = "ST1021"
back to top