2019-06-19 02:09:49 +02:00
|
|
|
# See https://github.com/golangci/golangci-lint#config-file
|
|
|
|
run:
|
|
|
|
issues-exit-code: 1 #Default
|
2019-08-05 22:58:24 +02:00
|
|
|
tests: true #Default
|
|
|
|
|
|
|
|
linters:
|
2022-02-14 19:09:41 +02:00
|
|
|
# Disable everything by default so upgrades to not include new "default
|
|
|
|
# enabled" linters.
|
|
|
|
disable-all: true
|
|
|
|
# Specifically enable linters we want to use.
|
2019-08-05 22:58:24 +02:00
|
|
|
enable:
|
2024-07-31 08:41:11 +02:00
|
|
|
- asasalint
|
2024-08-01 07:11:57 +02:00
|
|
|
- bodyclose
|
2022-05-19 22:15:07 +02:00
|
|
|
- depguard
|
2022-02-14 19:09:41 +02:00
|
|
|
- errcheck
|
2024-06-25 19:55:00 +02:00
|
|
|
- errorlint
|
2022-05-19 22:15:07 +02:00
|
|
|
- godot
|
2023-10-16 19:02:21 +02:00
|
|
|
- gofumpt
|
2019-08-05 22:58:24 +02:00
|
|
|
- goimports
|
2023-10-19 08:47:07 +02:00
|
|
|
- gosec
|
2022-02-14 19:09:41 +02:00
|
|
|
- gosimple
|
|
|
|
- govet
|
|
|
|
- ineffassign
|
|
|
|
- misspell
|
2024-11-14 20:17:37 +02:00
|
|
|
- perfsprint
|
2021-06-08 19:10:01 +02:00
|
|
|
- revive
|
2022-02-14 19:09:41 +02:00
|
|
|
- staticcheck
|
2024-06-20 17:54:51 +02:00
|
|
|
- tenv
|
2024-09-20 09:39:27 +02:00
|
|
|
- testifylint
|
2022-02-14 19:09:41 +02:00
|
|
|
- typecheck
|
2024-06-22 00:00:26 +02:00
|
|
|
- unconvert
|
2022-02-14 19:09:41 +02:00
|
|
|
- unused
|
2024-06-22 01:02:07 +02:00
|
|
|
- unparam
|
2024-11-25 22:02:46 +02:00
|
|
|
- usestdlibvars
|
2022-02-14 19:09:41 +02:00
|
|
|
|
2019-10-16 19:24:38 +02:00
|
|
|
issues:
|
2022-05-19 22:15:07 +02:00
|
|
|
# Maximum issues count per one linter.
|
|
|
|
# Set to 0 to disable.
|
|
|
|
# Default: 50
|
|
|
|
# Setting to unlimited so the linter only is run once to debug all issues.
|
|
|
|
max-issues-per-linter: 0
|
|
|
|
# Maximum count of issues with the same text.
|
|
|
|
# Set to 0 to disable.
|
|
|
|
# Default: 3
|
|
|
|
# Setting to unlimited so the linter only is run once to debug all issues.
|
|
|
|
max-same-issues: 0
|
|
|
|
# Excluding configuration per-path, per-linter, per-text and per-source.
|
2019-10-16 19:24:38 +02:00
|
|
|
exclude-rules:
|
2022-05-19 22:15:07 +02:00
|
|
|
# TODO: Having appropriate comments for exported objects helps development,
|
|
|
|
# even for objects in internal packages. Appropriate comments for all
|
|
|
|
# exported objects should be added and this exclusion removed.
|
|
|
|
- path: '.*internal/.*'
|
|
|
|
text: "exported (method|function|type|const) (.+) should have comment or be unexported"
|
2019-10-16 19:24:38 +02:00
|
|
|
linters:
|
2021-06-08 19:10:01 +02:00
|
|
|
- revive
|
2022-05-19 22:15:07 +02:00
|
|
|
# Yes, they are, but it's okay in a test.
|
2019-10-16 19:24:38 +02:00
|
|
|
- path: _test\.go
|
|
|
|
text: "exported func.*returns unexported type.*which can be annoying to use"
|
|
|
|
linters:
|
2021-06-08 19:10:01 +02:00
|
|
|
- revive
|
2022-05-19 22:15:07 +02:00
|
|
|
# Example test functions should be treated like main.
|
|
|
|
- path: example.*_test\.go
|
|
|
|
text: "calls to (.+) only in main[(][)] or init[(][)] functions"
|
|
|
|
linters:
|
|
|
|
- revive
|
2024-11-14 20:17:37 +02:00
|
|
|
# It's okay to not run gosec and perfsprint in a test.
|
2023-10-19 08:47:07 +02:00
|
|
|
- path: _test\.go
|
|
|
|
linters:
|
|
|
|
- gosec
|
2024-11-14 20:17:37 +02:00
|
|
|
- perfsprint
|
2024-09-09 08:53:15 +02:00
|
|
|
# Ignoring gosec G404: Use of weak random number generator (math/rand instead of crypto/rand)
|
2023-10-19 08:47:07 +02:00
|
|
|
# as we commonly use it in tests and examples.
|
|
|
|
- text: "G404:"
|
|
|
|
linters:
|
|
|
|
- gosec
|
2024-09-09 08:53:15 +02:00
|
|
|
# Ignoring gosec G402: TLS MinVersion too low
|
2023-10-19 08:47:07 +02:00
|
|
|
# as the https://pkg.go.dev/crypto/tls#Config handles MinVersion default well.
|
|
|
|
- text: "G402: TLS MinVersion too low."
|
|
|
|
linters:
|
|
|
|
- gosec
|
2022-05-19 22:15:07 +02:00
|
|
|
include:
|
|
|
|
# revive exported should have comment or be unexported.
|
|
|
|
- EXC0012
|
|
|
|
# revive package comment should be of the form ...
|
|
|
|
- EXC0013
|
2019-08-05 22:58:24 +02:00
|
|
|
|
|
|
|
linters-settings:
|
2022-05-19 22:15:07 +02:00
|
|
|
depguard:
|
2023-06-04 16:54:38 +02:00
|
|
|
rules:
|
|
|
|
non-tests:
|
|
|
|
files:
|
|
|
|
- "!$test"
|
|
|
|
- "!**/*test/*.go"
|
|
|
|
- "!**/internal/matchers/*.go"
|
|
|
|
deny:
|
|
|
|
- pkg: "testing"
|
|
|
|
- pkg: "github.com/stretchr/testify"
|
|
|
|
- pkg: "crypto/md5"
|
|
|
|
- pkg: "crypto/sha1"
|
|
|
|
- pkg: "crypto/**/pkix"
|
2024-11-21 20:54:58 +02:00
|
|
|
auto/sdk:
|
|
|
|
files:
|
|
|
|
- "!internal/global/trace.go"
|
|
|
|
- "~internal/global/trace_test.go"
|
|
|
|
deny:
|
|
|
|
- pkg: "go.opentelemetry.io/auto/sdk"
|
|
|
|
desc: Do not use SDK from automatic instrumentation.
|
2023-08-11 16:35:02 +02:00
|
|
|
otlp-internal:
|
|
|
|
files:
|
|
|
|
- "!**/exporters/otlp/internal/**/*.go"
|
|
|
|
deny:
|
|
|
|
- pkg: "go.opentelemetry.io/otel/exporters/otlp/internal"
|
|
|
|
desc: Do not use cross-module internal packages.
|
|
|
|
otlptrace-internal:
|
|
|
|
files:
|
|
|
|
- "!**/exporters/otlp/otlptrace/*.go"
|
|
|
|
- "!**/exporters/otlp/otlptrace/internal/**.go"
|
|
|
|
deny:
|
|
|
|
- pkg: "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal"
|
|
|
|
desc: Do not use cross-module internal packages.
|
|
|
|
otlpmetric-internal:
|
|
|
|
files:
|
|
|
|
- "!**/exporters/otlp/otlpmetric/internal/*.go"
|
|
|
|
- "!**/exporters/otlp/otlpmetric/internal/**/*.go"
|
|
|
|
deny:
|
|
|
|
- pkg: "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/internal"
|
|
|
|
desc: Do not use cross-module internal packages.
|
|
|
|
otel-internal:
|
|
|
|
files:
|
|
|
|
- "**/sdk/*.go"
|
|
|
|
- "**/sdk/**/*.go"
|
|
|
|
- "**/exporters/*.go"
|
|
|
|
- "**/exporters/**/*.go"
|
|
|
|
- "**/schema/*.go"
|
|
|
|
- "**/schema/**/*.go"
|
|
|
|
- "**/metric/*.go"
|
|
|
|
- "**/metric/**/*.go"
|
|
|
|
- "**/bridge/*.go"
|
|
|
|
- "**/bridge/**/*.go"
|
|
|
|
- "**/trace/*.go"
|
|
|
|
- "**/trace/**/*.go"
|
2024-06-03 18:13:48 +02:00
|
|
|
- "**/log/*.go"
|
|
|
|
- "**/log/**/*.go"
|
2023-08-11 16:35:02 +02:00
|
|
|
deny:
|
|
|
|
- pkg: "go.opentelemetry.io/otel/internal$"
|
|
|
|
desc: Do not use cross-module internal packages.
|
|
|
|
- pkg: "go.opentelemetry.io/otel/internal/attribute"
|
|
|
|
desc: Do not use cross-module internal packages.
|
|
|
|
- pkg: "go.opentelemetry.io/otel/internal/internaltest"
|
|
|
|
desc: Do not use cross-module internal packages.
|
|
|
|
- pkg: "go.opentelemetry.io/otel/internal/matchers"
|
|
|
|
desc: Do not use cross-module internal packages.
|
2022-04-25 22:22:49 +02:00
|
|
|
godot:
|
|
|
|
exclude:
|
2023-04-03 16:33:19 +02:00
|
|
|
# Exclude links.
|
|
|
|
- '^ *\[[^]]+\]:'
|
2022-04-25 22:22:49 +02:00
|
|
|
# Exclude sentence fragments for lists.
|
|
|
|
- '^[ ]*[-•]'
|
|
|
|
# Exclude sentences prefixing a list.
|
|
|
|
- ':$'
|
2022-05-19 22:15:07 +02:00
|
|
|
goimports:
|
|
|
|
local-prefixes: go.opentelemetry.io
|
|
|
|
misspell:
|
|
|
|
locale: US
|
|
|
|
ignore-words:
|
|
|
|
- cancelled
|
2024-11-14 20:17:37 +02:00
|
|
|
perfsprint:
|
2024-11-18 11:04:50 +02:00
|
|
|
err-error: true
|
|
|
|
errorf: true
|
2024-11-14 20:17:37 +02:00
|
|
|
int-conversion: true
|
2024-11-18 11:04:50 +02:00
|
|
|
sprintf1: true
|
|
|
|
strconcat: true
|
2022-05-19 22:15:07 +02:00
|
|
|
revive:
|
|
|
|
# Sets the default failure confidence.
|
|
|
|
# This means that linting errors with less than 0.8 confidence will be ignored.
|
|
|
|
# Default: 0.8
|
|
|
|
confidence: 0.01
|
|
|
|
rules:
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#blank-imports
|
|
|
|
- name: blank-imports
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bool-literal-in-expr
|
|
|
|
- name: bool-literal-in-expr
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#constant-logical-expr
|
|
|
|
- name: constant-logical-expr
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-as-argument
|
2023-05-18 18:06:27 +02:00
|
|
|
# TODO (#3372) re-enable linter when it is compatible. https://github.com/golangci/golangci-lint/issues/3280
|
2022-05-19 22:15:07 +02:00
|
|
|
- name: context-as-argument
|
2022-11-04 00:18:45 +02:00
|
|
|
disabled: true
|
2022-05-19 22:15:07 +02:00
|
|
|
arguments:
|
|
|
|
allowTypesBefore: "*testing.T"
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-keys-type
|
|
|
|
- name: context-keys-type
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#deep-exit
|
|
|
|
- name: deep-exit
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#defer
|
|
|
|
- name: defer
|
|
|
|
disabled: false
|
|
|
|
arguments:
|
|
|
|
- ["call-chain", "loop"]
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#dot-imports
|
|
|
|
- name: dot-imports
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#duplicated-imports
|
|
|
|
- name: duplicated-imports
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#early-return
|
|
|
|
- name: early-return
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block
|
|
|
|
- name: empty-block
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines
|
|
|
|
- name: empty-lines
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-naming
|
|
|
|
- name: error-naming
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-return
|
|
|
|
- name: error-return
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-strings
|
|
|
|
- name: error-strings
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#errorf
|
|
|
|
- name: errorf
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#exported
|
|
|
|
- name: exported
|
|
|
|
disabled: false
|
|
|
|
arguments:
|
|
|
|
- "sayRepetitiveInsteadOfStutters"
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#flag-parameter
|
|
|
|
- name: flag-parameter
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#identical-branches
|
|
|
|
- name: identical-branches
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#if-return
|
|
|
|
- name: if-return
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#increment-decrement
|
|
|
|
- name: increment-decrement
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#indent-error-flow
|
|
|
|
- name: indent-error-flow
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing
|
|
|
|
- name: import-shadowing
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#package-comments
|
|
|
|
- name: package-comments
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range
|
|
|
|
- name: range
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-in-closure
|
|
|
|
- name: range-val-in-closure
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-address
|
|
|
|
- name: range-val-address
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#redefines-builtin-id
|
|
|
|
- name: redefines-builtin-id
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-format
|
|
|
|
- name: string-format
|
|
|
|
disabled: false
|
|
|
|
arguments:
|
|
|
|
- - panic
|
|
|
|
- '/^[^\n]*$/'
|
|
|
|
- must not contain line breaks
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#struct-tag
|
|
|
|
- name: struct-tag
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#superfluous-else
|
|
|
|
- name: superfluous-else
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-equal
|
|
|
|
- name: time-equal
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-naming
|
|
|
|
- name: var-naming
|
|
|
|
disabled: false
|
|
|
|
arguments:
|
|
|
|
- ["ID"] # AllowList
|
|
|
|
- ["Otel", "Aws", "Gcp"] # DenyList
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-declaration
|
|
|
|
- name: var-declaration
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unconditional-recursion
|
|
|
|
- name: unconditional-recursion
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-return
|
|
|
|
- name: unexported-return
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unhandled-error
|
|
|
|
- name: unhandled-error
|
|
|
|
disabled: false
|
|
|
|
arguments:
|
|
|
|
- "fmt.Fprint"
|
|
|
|
- "fmt.Fprintf"
|
|
|
|
- "fmt.Fprintln"
|
|
|
|
- "fmt.Print"
|
|
|
|
- "fmt.Printf"
|
|
|
|
- "fmt.Println"
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unnecessary-stmt
|
|
|
|
- name: unnecessary-stmt
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#useless-break
|
|
|
|
- name: useless-break
|
|
|
|
disabled: false
|
|
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#waitgroup-by-value
|
|
|
|
- name: waitgroup-by-value
|
|
|
|
disabled: false
|
2024-09-20 09:39:27 +02:00
|
|
|
testifylint:
|
|
|
|
enable-all: true
|
|
|
|
disable:
|
|
|
|
- float-compare
|
|
|
|
- go-require
|
|
|
|
- require-error
|