Compare commits

...

41 Commits

Author SHA1 Message Date
dependabot[bot]
944e1d8441
build(deps): bump github.com/Abirdcfly/dupword from 0.1.1 to 0.1.3 () 2024-10-08 16:36:15 +02:00
dependabot[bot]
b07c319f55
build(deps): bump github.com/go-critic/go-critic from 0.11.4 to 0.11.5 ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-10-08 14:33:24 +02:00
dependabot[bot]
31f2714643
build(deps): bump golangci/golangci-lint-action from 6.1.0 to 6.1.1 in the all group () 2024-10-07 22:53:34 +02:00
Anton Telyshev
61f8c0e892
build(deps): bump github.com/Antonboom/nilnil from 0.1.9 to 1.0.0 () 2024-10-06 16:08:12 +02:00
dependabot[bot]
9f4951f10d
build(deps): bump github.com/Antonboom/errname from 0.1.13 to 1.0.0 ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-10-06 15:29:59 +02:00
dependabot[bot]
10f281c1fd
build(deps): bump golang.org/x/tools from 0.25.0 to 0.26.0 () 2024-10-06 14:04:50 +02:00
Fernandez Ludovic
1626fe46f0 chore: update test workflow 2024-10-04 13:34:41 +02:00
Anton Telyshev
095e4952be
build(deps): bump github.com/Antonboom/testifylint from 1.4.3 to 1.5.0 () 2024-10-03 22:58:51 +02:00
Gavin Li
a86d8baa53
fix: type sizing when cross-compiling (32-bit) ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-10-03 22:33:16 +02:00
Ludovic Fernandez
094668e305
docs: improve 'install from sources' section () 2024-10-01 18:36:55 +02:00
dependabot[bot]
59562859b5
build(deps): bump the all group across 3 directories with 4 updates /testdata ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-10-01 14:03:35 +02:00
Ludovic Fernandez
88c8a68e38
docs: reorganize configuration files () 2024-09-29 21:32:31 +02:00
Ludovic Fernandez
8659611d67
dev: remove Nancy () 2024-09-29 20:39:02 +02:00
Ludovic Fernandez
3ed307e113
docs: adds a section about exclude-dirs-use-default () 2024-09-28 14:27:46 +02:00
Ludovic Fernandez
75f4396c4a
docs: improve FAQ about Go versions () 2024-09-28 14:26:51 +02:00
dependabot[bot]
46db787df4
build(deps): bump go.uber.org/automaxprocs from 1.5.3 to 1.6.0 () 2024-09-26 16:17:57 +02:00
dependabot[bot]
0798941846
build(deps): bump github.com/alecthomas/go-check-sumtype from 0.1.4 to 0.2.0 ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-09-26 16:16:41 +02:00
dependabot[bot]
aa669e2290
build(deps): bump github.com/go-viper/mapstructure/v2 from 2.2.0 to 2.2.1 () 2024-09-26 15:40:04 +02:00
dependabot[bot]
3a69806aa2
build(deps): bump github.com/securego/gosec/v2 from 2.21.3 to 2.21.4 () 2024-09-26 15:39:20 +02:00
Ludovic Fernandez
2e88c4e632
docs: improve linter/rule/check docs () 2024-09-23 21:34:13 +02:00
dependabot[bot]
fb37d4c0e3
build(deps): bump github.com/mgechev/revive from 1.3.9 to 1.4.0 ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-09-22 21:49:59 +02:00
dependabot[bot]
a45560d439
build(deps): bump github.com/go-viper/mapstructure/v2 from 2.1.0 to 2.2.0 () 2024-09-22 14:41:03 +02:00
dependabot[bot]
225f7a06f2
build(deps): bump github.com/securego/gosec/v2 from 2.21.2 to 2.21.3 () 2024-09-18 14:54:51 +02:00
dependabot[bot]
e5dab8de7f
build(deps): bump github.com/breml/errchkjson from 0.3.6 to 0.4.0 () 2024-09-18 14:54:13 +02:00
dependabot[bot]
7187c89d40
build(deps): bump github.com/sonatard/noctx from 0.0.2 to 0.1.0 () 2024-09-15 17:09:23 +02:00
dependabot[bot]
318d78e2ba
build(deps): bump github.com/ckaznocha/intrange from 0.2.0 to 0.2.1 () 2024-09-15 14:42:36 +02:00
dependabot[bot]
b020f7b655
build(deps): bump github.com/breml/bidichk from 0.2.7 to 0.3.1 () 2024-09-15 14:41:09 +02:00
dependabot[bot]
a33f7942e6
build(deps): bump github.com/ghostiam/protogetter from 0.3.6 to 0.3.8 () 2024-09-15 14:38:58 +02:00
raeperd
dba870080b
docs: consistent WithSince versions () 2024-09-15 03:14:20 +02:00
dependabot[bot]
b5d83e171d
build(deps): bump webpack from 5.76.1 to 5.94.0 in /docs () 2024-09-15 00:29:53 +02:00
Aleksa Cukovic
9d41b0e262
docs: fix broken link ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-09-14 23:51:31 +02:00
dependabot[bot]
c50079a42e
build(deps): bump body-parser and express in /docs () 2024-09-14 23:42:01 +02:00
raeperd
ab90763015
Add recvcheck linter () 2024-09-14 23:31:45 +02:00
Oleksandr Redko
dcb6a57c4f
dev: use slices package from stdlib () 2024-09-12 23:26:32 +02:00
Li Zeghong
b2d4c315fc
docs: fix typo in goheader linter desc ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-09-12 17:13:34 +02:00
Fernandez Ludovic
de1bf4997f docs: restore JSONschema for v1.60 2024-09-09 23:50:54 +02:00
dependabot[bot]
5451909f23
build(deps): bump github.com/tetafro/godot from 1.4.17 to 1.4.18 () 2024-09-09 23:09:26 +02:00
dependabot[bot]
b3a1e1c836
build(deps): bump golang.org/x/tools from 0.24.0 to 0.25.0 () 2024-09-09 23:08:59 +02:00
golangci-releaser
1cb4c325d6
docs: update documentation () 2024-09-09 21:30:51 +02:00
golangci-releaser
4cbc27beec
docs: update documentation assets ()
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-09-09 20:12:47 +02:00
golangci-releaser
a15f9d95b6
docs: update GitHub Action assets () 2024-09-09 20:11:09 +02:00
50 changed files with 6919 additions and 1736 deletions

@ -1,24 +0,0 @@
name: Extra
on:
push:
branches:
- master
pull_request:
jobs:
vulns:
name: Vulnerability scanner
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
# https://github.com/actions/setup-go#supported-version-syntax
# ex:
# - 1.18beta1 -> 1.18.0-beta.1
# - 1.18rc1 -> 1.18.0-rc.1
go-version: '1.23'
- name: Run go list
run: go list -json -m all > go.list
- name: Nancy
uses: sonatype-nexus-community/nancy-github-action@v1.0.3

@ -39,11 +39,9 @@ jobs:
# ex:
# - 1.18beta1 -> 1.18.0-beta.1
# - 1.18rc1 -> 1.18.0-rc.1
# TODO(ldez) must be changed after the first release of golangci-lint with go1.23
# go-version: ${{ env.GO_VERSION }}
go-version: '1.22'
go-version: ${{ env.GO_VERSION }}
- name: lint
uses: golangci/golangci-lint-action@v6.1.0
uses: golangci/golangci-lint-action@v6.1.1
with:
version: latest

File diff suppressed because it is too large Load Diff

@ -4,134 +4,268 @@
# This file is not a configuration example,
# it contains the exhaustive configuration with explanations of the options.
# 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
linters:
# Disable all linters.
# Default: false
disable-all: true
# Enable specific linter
# https://golangci-lint.run/usage/linters/#enabled-by-default
enable:
- asasalint
- asciicheck
- bidichk
- bodyclose
- canonicalheader
- containedctx
- contextcheck
- copyloopvar
- cyclop
- decorder
- depguard
- dogsled
- dupl
- dupword
- durationcheck
- err113
- errcheck
- errchkjson
- errname
- errorlint
- execinquery
- exhaustive
- exhaustruct
- exportloopref
- fatcontext
- forbidigo
- forcetypeassert
- funlen
- gci
- ginkgolinter
- gocheckcompilerdirectives
- gochecknoglobals
- gochecknoinits
- gochecksumtype
- gocognit
- goconst
- gocritic
- gocyclo
- godot
- godox
- gofmt
- gofumpt
- goheader
- goimports
- gomoddirectives
- gomodguard
- goprintffuncname
- gosec
- gosimple
- gosmopolitan
- govet
- grouper
- importas
- inamedparam
- ineffassign
- interfacebloat
- intrange
- ireturn
- lll
- loggercheck
- maintidx
- makezero
- mirror
- misspell
- mnd
- musttag
- nakedret
- nestif
- nilerr
- nilnil
- nlreturn
- noctx
- nolintlint
- nonamedreturns
- nosprintfhostport
- paralleltest
- perfsprint
- prealloc
- predeclared
- promlinter
- protogetter
- reassign
- revive
- rowserrcheck
- sloglint
- spancheck
- sqlclosecheck
- staticcheck
- stylecheck
- tagalign
- tagliatelle
- tenv
- testableexamples
- testifylint
- testpackage
- thelper
- tparallel
- unconvert
- unparam
- unused
- usestdlibvars
- varnamelen
- wastedassign
- whitespace
- wrapcheck
- wsl
- zerologlint
# Exit code when at least one issue was found.
# Default: 1
issues-exit-code: 2
# Enable all available linters.
# Default: false
enable-all: true
# Disable specific linter
# https://golangci-lint.run/usage/linters/#disabled-by-default
disable:
- asasalint
- asciicheck
- bidichk
- bodyclose
- canonicalheader
- containedctx
- contextcheck
- copyloopvar
- cyclop
- decorder
- depguard
- dogsled
- dupl
- dupword
- durationcheck
- err113
- errcheck
- errchkjson
- errname
- errorlint
- execinquery
- exhaustive
- exhaustruct
- exportloopref
- fatcontext
- forbidigo
- forcetypeassert
- funlen
- gci
- ginkgolinter
- gocheckcompilerdirectives
- gochecknoglobals
- gochecknoinits
- gochecksumtype
- gocognit
- goconst
- gocritic
- gocyclo
- godot
- godox
- gofmt
- gofumpt
- goheader
- goimports
- gomoddirectives
- gomodguard
- goprintffuncname
- gosec
- gosimple
- gosmopolitan
- govet
- grouper
- importas
- inamedparam
- ineffassign
- interfacebloat
- intrange
- ireturn
- lll
- loggercheck
- maintidx
- makezero
- mirror
- misspell
- mnd
- musttag
- nakedret
- nestif
- nilerr
- nilnil
- nlreturn
- noctx
- nolintlint
- nonamedreturns
- nosprintfhostport
- paralleltest
- perfsprint
- prealloc
- predeclared
- promlinter
- protogetter
- reassign
- revive
- rowserrcheck
- sloglint
- spancheck
- sqlclosecheck
- staticcheck
- stylecheck
- tagalign
- tagliatelle
- tenv
- testableexamples
- testifylint
- testpackage
- thelper
- tparallel
- unconvert
- unparam
- unused
- usestdlibvars
- varnamelen
- wastedassign
- whitespace
- wrapcheck
- wsl
- zerologlint
- deadcode # Deprecated
- exhaustivestruct # Deprecated
- golint # Deprecated
- ifshort # Deprecated
- interfacer # Deprecated
- maligned # Deprecated
- gomnd # Deprecated
- nosnakecase # Deprecated
- scopelint # Deprecated
- structcheck # Deprecated
- varcheck # Deprecated
# Include test files or not.
# Default: true
tests: false
# List of build tags, all linters use it.
# Enable presets.
# https://golangci-lint.run/usage/linters
# Default: []
build-tags:
- mytag
presets:
- bugs
- comment
- complexity
- error
- format
- import
- metalinter
- module
- performance
- sql
- style
- test
- unused
# 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.
# Enable only fast linters from enabled linters set (first run won't be fast)
# 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: json
path: stderr
- format: checkstyle
path: report.xml
- format: colored-line-number
# 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
fast: true
# All available settings of specific linters.
@ -464,6 +598,10 @@ linters-settings:
# Default: false
custom-order: true
# Drops lexical ordering for custom sections.
# Default: false
no-lex-order: true
ginkgolinter:
# Suppress the wrong length assertion warning.
# Default: false
@ -2595,271 +2733,6 @@ linters-settings:
foo: bar
linters:
# Disable all linters.
# Default: false
disable-all: true
# Enable specific linter
# https://golangci-lint.run/usage/linters/#enabled-by-default
enable:
- asasalint
- asciicheck
- bidichk
- bodyclose
- canonicalheader
- containedctx
- contextcheck
- copyloopvar
- cyclop
- decorder
- depguard
- dogsled
- dupl
- dupword
- durationcheck
- err113
- errcheck
- errchkjson
- errname
- errorlint
- execinquery
- exhaustive
- exhaustruct
- exportloopref
- fatcontext
- forbidigo
- forcetypeassert
- funlen
- gci
- ginkgolinter
- gocheckcompilerdirectives
- gochecknoglobals
- gochecknoinits
- gochecksumtype
- gocognit
- goconst
- gocritic
- gocyclo
- godot
- godox
- gofmt
- gofumpt
- goheader
- goimports
- gomoddirectives
- gomodguard
- goprintffuncname
- gosec
- gosimple
- gosmopolitan
- govet
- grouper
- importas
- inamedparam
- ineffassign
- interfacebloat
- intrange
- ireturn
- lll
- loggercheck
- maintidx
- makezero
- mirror
- misspell
- mnd
- musttag
- nakedret
- nestif
- nilerr
- nilnil
- nlreturn
- noctx
- nolintlint
- nonamedreturns
- nosprintfhostport
- paralleltest
- perfsprint
- prealloc
- predeclared
- promlinter
- protogetter
- reassign
- revive
- rowserrcheck
- sloglint
- spancheck
- sqlclosecheck
- staticcheck
- stylecheck
- tagalign
- tagliatelle
- tenv
- testableexamples
- testifylint
- testpackage
- thelper
- tparallel
- typecheck
- unconvert
- unparam
- unused
- usestdlibvars
- varnamelen
- wastedassign
- whitespace
- wrapcheck
- wsl
- zerologlint
# Enable all available linters.
# Default: false
enable-all: true
# Disable specific linter
# https://golangci-lint.run/usage/linters/#disabled-by-default
disable:
- asasalint
- asciicheck
- bidichk
- bodyclose
- canonicalheader
- containedctx
- contextcheck
- copyloopvar
- cyclop
- decorder
- depguard
- dogsled
- dupl
- dupword
- durationcheck
- err113
- errcheck
- errchkjson
- errname
- errorlint
- execinquery
- exhaustive
- exhaustruct
- exportloopref
- fatcontext
- forbidigo
- forcetypeassert
- funlen
- gci
- ginkgolinter
- gocheckcompilerdirectives
- gochecknoglobals
- gochecknoinits
- gochecksumtype
- gocognit
- goconst
- gocritic
- gocyclo
- godot
- godox
- gofmt
- gofumpt
- goheader
- goimports
- gomoddirectives
- gomodguard
- goprintffuncname
- gosec
- gosimple
- gosmopolitan
- govet
- grouper
- importas
- inamedparam
- ineffassign
- interfacebloat
- intrange
- ireturn
- lll
- loggercheck
- maintidx
- makezero
- mirror
- misspell
- mnd
- musttag
- nakedret
- nestif
- nilerr
- nilnil
- nlreturn
- noctx
- nolintlint
- nonamedreturns
- nosprintfhostport
- paralleltest
- perfsprint
- prealloc
- predeclared
- promlinter
- protogetter
- reassign
- revive
- rowserrcheck
- sloglint
- spancheck
- sqlclosecheck
- staticcheck
- stylecheck
- tagalign
- tagliatelle
- tenv
- testableexamples
- testifylint
- testpackage
- thelper
- tparallel
- typecheck
- unconvert
- unparam
- unused
- usestdlibvars
- varnamelen
- wastedassign
- whitespace
- wrapcheck
- wsl
- zerologlint
- deadcode # Deprecated
- exhaustivestruct # Deprecated
- golint # Deprecated
- ifshort # Deprecated
- interfacer # Deprecated
- maligned # Deprecated
- gomnd # Deprecated
- nosnakecase # Deprecated
- scopelint # Deprecated
- structcheck # Deprecated
- varcheck # Deprecated
# Enable presets.
# https://golangci-lint.run/usage/linters
# Default: []
presets:
- bugs
- comment
- complexity
- error
- format
- import
- metalinter
- module
- performance
- sql
- style
- test
- unused
# 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.
#
@ -3007,6 +2880,137 @@ issues:
fix: true
# 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`
# - `junit-xml-extended`
# - `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: json
path: stderr
- format: checkstyle
path: report.xml
- format: colored-line-number
# 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
# Options for analysis running.
run:
# 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'
# 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
severity:
# Set the default severity for issues.
#

@ -11,6 +11,51 @@
#
# See the file `.golangci.reference.yml` to have a list of all available configuration options.
linters:
disable-all: true
# This list of linters is not a recommendation (same thing for all this configuration file).
# We intentionally use a limited set of linters.
# See the comment on top of this file.
enable:
- bodyclose
- copyloopvar
- depguard
- dogsled
- dupl
- errcheck
- errorlint
- funlen
- gocheckcompilerdirectives
- gochecknoinits
- gochecknoinits
- goconst
- gocritic
- gocyclo
- godox
- gofmt
- goimports
- mnd
- goprintffuncname
- gosec
- gosimple
- govet
- intrange
- ineffassign
- lll
- misspell
- nakedret
- noctx
- nolintlint
- revive
- staticcheck
- stylecheck
- testifylint
- unconvert
- unparam
- unused
- whitespace
linters-settings:
depguard:
rules:
@ -102,51 +147,6 @@ linters-settings:
- name: unused-parameter
- name: unused-receiver
linters:
disable-all: true
enable:
- bodyclose
- copyloopvar
- depguard
- dogsled
- dupl
- errcheck
- errorlint
- funlen
- gocheckcompilerdirectives
- gochecknoinits
- gochecknoinits
- goconst
- gocritic
- gocyclo
- godox
- gofmt
- goimports
- mnd
- goprintffuncname
- gosec
- gosimple
- govet
- intrange
- ineffassign
- lll
- misspell
- nakedret
- noctx
- nolintlint
- revive
- staticcheck
- stylecheck
- testifylint
- unconvert
- unparam
- unused
- whitespace
# This list of linters is not a recommendation (same thing for all this configuration file).
# We intentionally use a limited set of linters.
# See the comment on top of this file.
issues:
exclude-rules:
- path: (.+)_test\.go

@ -1,39 +0,0 @@
# Skip for indirect dependency github.com/coreos/etcd@3.3.13
CVE-2020-15114
CVE-2020-15115
CVE-2020-15136
# Skip for indirect dependency github.com/gogo/protobuf@1.3.1
CVE-2021-3121
# Skip for indirect dependency github.com/dgrijalva/jwt-go@3.2.0
CVE-2020-26160
# Skip for indirect dependencies:
# golang/github.com/hashicorp/consul/api@v1.12.0
# golang/github.com/hashicorp/consul/sdk@v0.8.0
CVE-2022-29153
CVE-2022-24687
CVE-2021-41803
# Skip for indirect dependencies golang/github.com/valyala/fasthttp@v1.30.0
CVE-2022-21221
# Skip for indirect dependencies golang/golang.org/x/net
CVE-2022-41723
CVE-2023-3978
# Skip for indirect dependencies golang/google.golang.org/grpc@v1.46.2
CVE-2023-32731
# Skip for indirect dependencies golang/golang.org/x/crypto@v0.14.0
CVE-2023-48795
# Skip for indirect dependencies github.com/jackc/pgproto3 - github.com/jackc/pgx
CVE-2024-27304
# Skip for indirect dependencies golang/google.golang.org/protobuf
CVE-2024-24786
# Skip for indirect dependencies golang/golang.org/x/net@v0.28.0
CVE-2024-8421

@ -1,5 +1,26 @@
Follow the news and releases on [Mastodon](https://fosstodon.org/@golangcilint) and on [Twitter](https://twitter.com/golangci).
### v1.61.0
1. Enhancements
* Add `junit-xml-extended` format
* Exclude Swagger Codegen files by default
2. Updated linters
* `dupword`: from 0.0.14 to 0.1.1
* `fatcontext`: from 0.4.0 to 0.5.2
* `gci`: from 0.13.4 to 0.13.5 (new option `no-lex-order`)
* `go-ruleguard`: from 0.4.2 to 0fe6f58b47b1 (fix panic with custom linters)
* `godot`: from 1.4.16 to 1.4.17
* `gomodguard`: from 1.3.3 to 1.3.5
* `gosec`: disable temporarily `G407`
* `gosec`: from ab3f6c1c83a0 to 2.21.2 (partially fix `G115`)
* `intrange`: from 0.1.2 to 0.2.0
* `nolintlint`: remove the empty line in the directive replacement
3. Misc.
* Improve runtime version parsing
4. Documentation
* Add additional info about `typecheck`
### v1.60.3
1. Updated linters

245
README.md

@ -116,11 +116,11 @@ The Core Team has the following responsibilities:
<td align="center"><a href="https://www.linkedin.com/in/ducovanamstel?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/896592?u=d137ca0926c6e2a865f777053b8ade2e893ff80b&v=4" width="100px;" alt=""/><br /><sub><b>Duco van Amstel</b></sub></a></td>
<td align="center"><a href="https://github.com/nishanths?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6028224?u=08e9d50bea01f28ae95d536217920a1267507410&v=4" width="100px;" alt=""/><br /><sub><b>Nishanth Shanmugham</b></sub></a></td>
<td align="center"><a href="https://github.com/sanposhiho?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/44139130?u=d0a40ab2af9d5c6c5a1379b80d26a0e8361161e9&v=4" width="100px;" alt=""/><br /><sub><b>Kensei Nakada</b></sub></a></td>
<td align="center"><a href="https://melvin.la?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/275508?u=3a59ef9c48589c16046a11cc98b570423718d540&v=4" width="100px;" alt=""/><br /><sub><b>Melvin</b></sub></a></td>
<td align="center"><a href="https://dev.to/ccoveille?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3875889?u=06d04a6e2a03bbcca63e0c04fdf5ca36d1a1fad9&v=4" width="100px;" alt=""/><br /><sub><b>ccoVeille</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://melvin.la?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/275508?u=3a59ef9c48589c16046a11cc98b570423718d540&v=4" width="100px;" alt=""/><br /><sub><b>Melvin</b></sub></a></td>
<td align="center"><a href="https://twitter.com/quasilyte?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6286655?u=11ccf136d6167205bbec1ed864e7306bb22a26d4&v=4" width="100px;" alt=""/><br /><sub><b>quasilyte</b></sub></a></td>
<td align="center"><a href="https://dev.to/ccoveille?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3875889?u=06d04a6e2a03bbcca63e0c04fdf5ca36d1a1fad9&v=4" width="100px;" alt=""/><br /><sub><b>ccoVeille</b></sub></a></td>
<td align="center"><a href="https://dkrv.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/11755173?v=4" width="100px;" alt=""/><br /><sub><b>Denis Krivak</b></sub></a></td>
<td align="center"><a href="http://swapoff.org?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/41767?v=4" width="100px;" alt=""/><br /><sub><b>Alec Thomas</b></sub></a></td>
<td align="center"><a href="https://github.com/johejo?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/25817501?u=3eb86cdb5c0fedb4f13602cd31db18b3c227df55&v=4" width="100px;" alt=""/><br /><sub><b>Mitsuo HEIJO</b></sub></a></td>
@ -130,7 +130,7 @@ The Core Team has the following responsibilities:
</table>
<details>
<summary>And 502 more our team members</summary>
<summary>And 509 more our team members</summary>
<table>
<tr>
@ -215,70 +215,70 @@ The Core Team has the following responsibilities:
<td align="center"><a href="https://github.com/dbraley?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2067019?u=47d3d161a65b877714779c39d2eb6dc686d427ec&v=4" width="100px;" alt=""/><br /><sub><b>David Braley</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/szaydel?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/249424?v=4" width="100px;" alt=""/><br /><sub><b>Sam Zaydel</b></sub></a></td>
<td align="center"><a href="https://lukasmalkmus.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9931588?u=51de6132f5f0e8f88aedf265a5205d9a91f4e1aa&v=4" width="100px;" alt=""/><br /><sub><b>Lukas Malkmus</b></sub></a></td>
<td align="center"><a href="https://ghost.im?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/12181586?v=4" width="100px;" alt=""/><br /><sub><b>Vladislav Fursov</b></sub></a></td>
<td align="center"><a href="https://dolmen.github.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/129536?v=4" width="100px;" alt=""/><br /><sub><b>Olivier Mengué</b></sub></a></td>
<td align="center"><a href="https://kilabit.info?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/43306?v=4" width="100px;" alt=""/><br /><sub><b>Shulhan</b></sub></a></td>
<td align="center"><a href="https://github.com/cbandy?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/106560?v=4" width="100px;" alt=""/><br /><sub><b>Chris Bandy</b></sub></a></td>
<td align="center"><a href="https://patrickkuca.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9790383?u=f3ee6bab4997260734040e0119d4cb35810973d7&v=4" width="100px;" alt=""/><br /><sub><b>Patrick Kuca</b></sub></a></td>
<td align="center"><a href="https://dev.to/vearutop?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1381436?v=4" width="100px;" alt=""/><br /><sub><b>Viacheslav Poturaev</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://dev.to/vearutop?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1381436?v=4" width="100px;" alt=""/><br /><sub><b>Viacheslav Poturaev</b></sub></a></td>
<td align="center"><a href="https://catenacyber.fr?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/35799796?u=01eaaa217d6deb8022742f49c9bca386e33ff122&v=4" width="100px;" alt=""/><br /><sub><b>Catena cyber</b></sub></a></td>
<td align="center"><a href="https://abirdcfly.eth?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5100555?u=9391013271dc52e7b259adcbdbe4da5748b10daf&v=4" width="100px;" alt=""/><br /><sub><b>@Abirdcfly</b></sub></a></td>
<td align="center"><a href="https://github.com/hendrywiranto?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/19802534?u=5d0bbb72187e49e729d769d26f5c3eefa1f23d85&v=4" width="100px;" alt=""/><br /><sub><b>Hendry Wiranto</b></sub></a></td>
<td align="center"><a href="https://github.com/szaydel?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/249424?v=4" width="100px;" alt=""/><br /><sub><b>Sam Zaydel</b></sub></a></td>
<td align="center"><a href="https://github.com/rliebz?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5321575?v=4" width="100px;" alt=""/><br /><sub><b>Robert Liebowitz</b></sub></a></td>
<td align="center"><a href="https://gabnotes.org?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3630554?u=3dde57d38ab70e80d13ba5009ff466fd11fa8597&v=4" width="100px;" alt=""/><br /><sub><b>Gabriel Augendre</b></sub></a></td>
<td align="center"><a href="http://mitar.tnode.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/585279?v=4" width="100px;" alt=""/><br /><sub><b>Mitar</b></sub></a></td>
<td align="center"><a href="https://github.com/zikaeroh?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/48577114?u=0732d500b9122545949572de8a2e8f1fe9d4dd88&v=4" width="100px;" alt=""/><br /><sub><b>Zik Aeroh</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/zak-pawel?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/17336997?v=4" width="100px;" alt=""/><br /><sub><b>Paweł Żak</b></sub></a></td>
<td align="center"><a href="https://github.com/zikaeroh?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/48577114?u=0732d500b9122545949572de8a2e8f1fe9d4dd88&v=4" width="100px;" alt=""/><br /><sub><b>Zik Aeroh</b></sub></a></td>
<td align="center"><a href="https://github.com/sylvia7788?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/24389016?v=4" width="100px;" alt=""/><br /><sub><b>sylvia</b></sub></a></td>
<td align="center"><a href="https://github.com/lasiar?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/31652715?u=80ab0258c264167ebb6143f722618ef4fe1b40d4&v=4" width="100px;" alt=""/><br /><sub><b>Roman Chaliy</b></sub></a></td>
<td align="center"><a href="https://github.com/zealws?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/794008?u=254ae340544f623670da67073fdbd7cfe37aa9f7&v=4" width="100px;" alt=""/><br /><sub><b>Zeal Wierslee</b></sub></a></td>
<td align="center"><a href="https://kyoh86.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5582459?u=062f9074b6d432f073b7e09940e70fc1c092e072&v=4" width="100px;" alt=""/><br /><sub><b>Kyoh</b></sub></a></td>
<td align="center"><a href="https://github.com/timkral?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4274030?v=4" width="100px;" alt=""/><br /><sub><b>Tim Kral</b></sub></a></td>
<td align="center"><a href="https://blog.yagipy.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/34264859?u=f5c99c28ae697458ab9cb23568df1ed0c6740166&v=4" width="100px;" alt=""/><br /><sub><b>Hiroyuki Yagihashi</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://blog.yagipy.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/34264859?u=f5c99c28ae697458ab9cb23568df1ed0c6740166&v=4" width="100px;" alt=""/><br /><sub><b>Hiroyuki Yagihashi</b></sub></a></td>
<td align="center"><a href="https://github.com/denisvmedia?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5462781?u=bba427286e894ce43fc63856114a34f1378cda47&v=4" width="100px;" alt=""/><br /><sub><b>Denis Voytyuk</b></sub></a></td>
<td align="center"><a href="https://jnan806.github.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/43714056?u=0b130ca47186522120348fec6448a93edbbbe3d4&v=4" width="100px;" alt=""/><br /><sub><b>Jiangnan Jia</b></sub></a></td>
<td align="center"><a href="https://github.com/adamroyjones?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10088591?u=4b57a1264ee0af0470d23574f5de4f8238eae6a1&v=4" width="100px;" alt=""/><br /><sub><b>Adam Jones</b></sub></a></td>
<td align="center"><a href="https://github.com/kunwardeep?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/13211086?u=d7eefb203f6ae0d66392ed4c874be785c1acc3d3&v=4" width="100px;" alt=""/><br /><sub><b>Kunwardeep</b></sub></a></td>
<td align="center"><a href="https://github.com/dahu33?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2038888?u=a7fd865764d7211ad7f4af2107d31325f2689975&v=4" width="100px;" alt=""/><br /><sub><b>Pierre R</b></sub></a></td>
<td align="center"><a href="https://github.com/srenatus?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/870638?u=4607741d467654d0c0643043a64da994df94b76f&v=4" width="100px;" alt=""/><br /><sub><b>Stephan Renatus</b></sub></a></td>
<td align="center"><a href="https://github.com/gnuletik?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9059840?u=c37cef066ed05d5c25ea792bf839c622e1b5a3ec&v=4" width="100px;" alt=""/><br /><sub><b>Martin Desrumaux</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/gnuletik?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9059840?u=c37cef066ed05d5c25ea792bf839c622e1b5a3ec&v=4" width="100px;" alt=""/><br /><sub><b>Martin Desrumaux</b></sub></a></td>
<td align="center"><a href="https://github.com/tdakkota?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/15220500?u=41aad36b4fcc340495e2d1d0193255e4010e6a59&v=4" width="100px;" alt=""/><br /><sub><b>tdakkota</b></sub></a></td>
<td align="center"><a href="https://github.com/ibez92?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/21059325?v=4" width="100px;" alt=""/><br /><sub><b>Ivan</b></sub></a></td>
<td align="center"><a href="http://www.gandarez.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/782854?u=08f8f3810c070b4f51c5ab34d349b83bee796fe7&v=4" width="100px;" alt=""/><br /><sub><b>Carlos Henrique Guardão Gandarez</b></sub></a></td>
<td align="center"><a href="https://github.com/diegs?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/74719?u=bdfb13fd5280132f2a82f91cf9337d675472c489&v=4" width="100px;" alt=""/><br /><sub><b>Diego Pontoriero</b></sub></a></td>
<td align="center"><a href="https://github.com/danielhelfand?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/34258252?u=68dad1d1d85d47c4bab2de0112ab495c89b6fd49&v=4" width="100px;" alt=""/><br /><sub><b>Daniel Helfand</b></sub></a></td>
<td align="center"><a href="https://github.com/ahrtr?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/30739825?u=7103d2d37664ace643337a0f648788c72132ae28&v=4" width="100px;" alt=""/><br /><sub><b>Benjamin Wang</b></sub></a></td>
<td align="center"><a href="https://github.com/csilvers?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1445223?v=4" width="100px;" alt=""/><br /><sub><b>Craig Silverstein</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/csilvers?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1445223?v=4" width="100px;" alt=""/><br /><sub><b>Craig Silverstein</b></sub></a></td>
<td align="center"><a href="https://www.linkedin.com/in/ifaisalalam?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/24882101?u=596fdcd9e42c9e8bc1072975b828ca37d3164c34&v=4" width="100px;" alt=""/><br /><sub><b>Faisal Alam</b></sub></a></td>
<td align="center"><a href="https://github.com/alexec?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1142830?u=c893f99c152727beb204caea70ed45ee936b20b2&v=4" width="100px;" alt=""/><br /><sub><b>Alex Collins</b></sub></a></td>
<td align="center"><a href="https://nakabonne.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/19730728?u=88c465f1caf239c1852208116593939c22312c13&v=4" width="100px;" alt=""/><br /><sub><b>Ryo Nakao</b></sub></a></td>
<td align="center"><a href="https://www.pedanticorderliness.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/343979?u=6443fee0e543d22b07b02edf0ed8fb1ce4943b5a&v=4" width="100px;" alt=""/><br /><sub><b>Ryan Olds</b></sub></a></td>
<td align="center"><a href="https://github.com/matthewhughes934?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/34972397?u=5a8d68e52811e9b36fcdc53511d6b5352de3dcf2&v=4" width="100px;" alt=""/><br /><sub><b>Matthew Hughes</b></sub></a></td>
<td align="center"><a href="https://github.com/macabu?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1299138?u=8e157be586103823b212c5c9ada88ab2a9867ccf&v=4" width="100px;" alt=""/><br /><sub><b>Matheus Macabu</b></sub></a></td>
<td align="center"><a href="https://tommy-muehle.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1351840?u=7d5b4339a1efe19fe5740314a4289eee59c20e6c&v=4" width="100px;" alt=""/><br /><sub><b>Tommy Mühle</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://tommy-muehle.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1351840?u=7d5b4339a1efe19fe5740314a4289eee59c20e6c&v=4" width="100px;" alt=""/><br /><sub><b>Tommy Mühle</b></sub></a></td>
<td align="center"><a href="https://github.com/thaJeztah?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1804568?u=ebc86d007fefd2b388d2a8da5f0e3d6f239ede2f&v=4" width="100px;" alt=""/><br /><sub><b>Sebastiaan van Stijn</b></sub></a></td>
<td align="center"><a href="https://github.com/hanzo?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/248688?u=80e7b8ba522825019b599637277c3b3f2d384181&v=4" width="100px;" alt=""/><br /><sub><b>Hans Wernetti</b></sub></a></td>
<td align="center"><a href="https://caarlos0.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/245435?v=4" width="100px;" alt=""/><br /><sub><b>Carlos Alexandro Becker</b></sub></a></td>
<td align="center"><a href="https://github.com/Dominik-K?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5795847?u=e32b349860f30b6d08dd361399df310ab4bbf492&v=4" width="100px;" alt=""/><br /><sub><b>Dominik K.</b></sub></a></td>
<td align="center"><a href="https://linkedin.com/in/jjtimmons/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/13923102?u=6d064fbefa96e7d705cd821d1422138ebb8b87ed&v=4" width="100px;" alt=""/><br /><sub><b>Joshua Timmons</b></sub></a></td>
<td align="center"><a href="https://dev.to/smyrman?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/75205?u=7c1c69aec977da78bf452fe2c2c8382999fdb42c&v=4" width="100px;" alt=""/><br /><sub><b>Sindre Røkenes Myren</b></sub></a></td>
<td align="center"><a href="https://developer20.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1235620?u=8dcb00ac7132f4de19392d7f8b1b4e2b17e692b7&v=4" width="100px;" alt=""/><br /><sub><b>Bartłomiej Klimczak</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://gabnotes.org?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3630554?u=3dde57d38ab70e80d13ba5009ff466fd11fa8597&v=4" width="100px;" alt=""/><br /><sub><b>Gabriel Augendre</b></sub></a></td>
<td align="center"><a href="https://developer20.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1235620?u=8dcb00ac7132f4de19392d7f8b1b4e2b17e692b7&v=4" width="100px;" alt=""/><br /><sub><b>Bartłomiej Klimczak</b></sub></a></td>
<td align="center"><a href="https://github.com/fatanugraha?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4775076?u=ab6436fafde8e68f9f8dfe96935f904b078a9165&v=4" width="100px;" alt=""/><br /><sub><b>Fata Nugraha</b></sub></a></td>
<td align="center"><a href="https://jimenolabs.net/about?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6826244?u=03bcd0f7f342886d3abc5281311c932e832b3146&v=4" width="100px;" alt=""/><br /><sub><b>M. Ángel Jimeno</b></sub></a></td>
<td align="center"><a href="https://github.com/jrehwaldt?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/586617?v=4" width="100px;" alt=""/><br /><sub><b>Jan Oopkaup</b></sub></a></td>
@ -327,453 +327,462 @@ The Core Team has the following responsibilities:
<td align="center"><a href="http://www.abemedia.co.uk?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4355715?v=4" width="100px;" alt=""/><br /><sub><b>Adam Bouqdib</b></sub></a></td>
<td align="center"><a href="https://github.com/thepwagner?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1559510?u=8d997016f3920edd57a45fdd2bce6ce7e59a7472&v=4" width="100px;" alt=""/><br /><sub><b>Pete Wagner</b></sub></a></td>
<td align="center"><a href="https://github.com/renatosuero?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1093214?u=c37ab360f4fa3a6c7f168aaf706e8a47323dc101&v=4" width="100px;" alt=""/><br /><sub><b>Renato Suero</b></sub></a></td>
<td align="center"><a href="https://clifton.kaznocha.com.?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1851985?v=4" width="100px;" alt=""/><br /><sub><b>Clifton Kaznocha</b></sub></a></td>
<td align="center"><a href="https://github.com/rawen17?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/36483900?v=4" width="100px;" alt=""/><br /><sub><b>Buyanov Vladimir</b></sub></a></td>
<td align="center"><a href="https://github.com/ansiwen?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7792669?u=f1da2f9c779c15bf9c69dac257c86180ba1591e0&v=4" width="100px;" alt=""/><br /><sub><b>Sven Anderson</b></sub></a></td>
<td align="center"><a href="https://github.com/bvwells?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/22873967?v=4" width="100px;" alt=""/><br /><sub><b>Ben Wells</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/bvwells?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/22873967?v=4" width="100px;" alt=""/><br /><sub><b>Ben Wells</b></sub></a></td>
<td align="center"><a href="https://github.com/chappjc?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9373513?u=e78e21f230dd575a53a060c37dee051806ae0572&v=4" width="100px;" alt=""/><br /><sub><b>Jonathan Chappelow</b></sub></a></td>
<td align="center"><a href="https://www.oshino.meme?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/25030997?u=6c6b7c662e1c7047ae3f25fe284f69a74e6679d6&v=4" width="100px;" alt=""/><br /><sub><b>Yuki Okushi</b></sub></a></td>
<td align="center"><a href="https://www.build4.fun/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1975118?u=df7d2377689da4306390f138304aef5c8dde5ec4&v=4" width="100px;" alt=""/><br /><sub><b>hbc</b></sub></a></td>
<td align="center"><a href="https://blog.xen0n.name?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1175567?u=f334fed91b1bc0cab3b71b58485c9e09c832d2d7&v=4" width="100px;" alt=""/><br /><sub><b>WÁNG Xuěruì</b></sub></a></td>
<td align="center"><a href="https://github.com/796RCP92VZ?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/36819295?v=4" width="100px;" alt=""/><br /><sub><b>@796RCP92VZ</b></sub></a></td>
<td align="center"><a href="https://dunglas.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/57224?u=a7ed2cf3f0ae84c9e06925b94091b85a7d6324b0&v=4" width="100px;" alt=""/><br /><sub><b>Kévin Dunglas</b></sub></a></td>
<td align="center"><a href="https://github.com/ewohltman?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5953186?u=bf31ce63008802393b3b58c3bd84b8dae76b3946&v=4" width="100px;" alt=""/><br /><sub><b>Eric Wohltman</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ewohltman?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5953186?u=bf31ce63008802393b3b58c3bd84b8dae76b3946&v=4" width="100px;" alt=""/><br /><sub><b>Eric Wohltman</b></sub></a></td>
<td align="center"><a href="https://hachyderm.io/@clebs?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1059661?u=21de2d16ebd639a0e0a22952abd216f5af2709e1&v=4" width="100px;" alt=""/><br /><sub><b>Borja Clemente</b></sub></a></td>
<td align="center"><a href="https://github.com/zalenskivolt?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/33487318?u=2e9a5cc35f6cde31c806274ef1b5b9ba100cba4a&v=4" width="100px;" alt=""/><br /><sub><b>Mattias de Zalenski</b></sub></a></td>
<td align="center"><a href="https://aldanalonghi.me/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/60699220?u=415703168618923fac4b3ee83ac903c947ee4fa9&v=4" width="100px;" alt=""/><br /><sub><b>@AlduLonghi</b></sub></a></td>
<td align="center"><a href="https://www.justindfuller.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/11914897?u=2f5ea397ebbce3ecc18cf05e5b3c36f24dec7c7f&v=4" width="100px;" alt=""/><br /><sub><b>Justin Fuller</b></sub></a></td>
<td align="center"><a href="https://github.com/masibw?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/43804414?u=bf41b0908e132619f53489971fdb9e102e413d7d&v=4" width="100px;" alt=""/><br /><sub><b>masibw</b></sub></a></td>
<td align="center"><a href="https://github.com/navijation?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/16366921?u=3e1f181074b7d95d749ccbef64f5082f41aa4a2c&v=4" width="100px;" alt=""/><br /><sub><b>Navneeth Jayendran</b></sub></a></td>
<td align="center"><a href="https://github.com/soniah?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/56102?u=39088fc794a8635849e06ba6e8a5ef8a75b194cf&v=4" width="100px;" alt=""/><br /><sub><b>Sonia Hamilton</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/black-06?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/50364282?u=bec671ff944adf97903b9239cda0cf1657fa065f&v=4" width="100px;" alt=""/><br /><sub><b>@black-06</b></sub></a></td>
<td align="center"><a href="https://github.com/Inuart?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/441979?u=78fa97a9c09815a0b6369414333d508b382de643&v=4" width="100px;" alt=""/><br /><sub><b>Eduard Castany</b></sub></a></td>
<td align="center"><a href="https://github.com/soniah?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/56102?u=39088fc794a8635849e06ba6e8a5ef8a75b194cf&v=4" width="100px;" alt=""/><br /><sub><b>Sonia Hamilton</b></sub></a></td>
<td align="center"><a href="https://github.com/black-06?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/50364282?u=bec671ff944adf97903b9239cda0cf1657fa065f&v=4" width="100px;" alt=""/><br /><sub><b>@black-06</b></sub></a></td>
<td align="center"><a href="http://g7o.today?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/145909?u=a34cf5793b1a43f3ba2060fc320a416e03e85c54&v=4" width="100px;" alt=""/><br /><sub><b>Gianguido Sorà</b></sub></a></td>
<td align="center"><a href="https://github.com/oksana-grishchenko?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/91597950?u=038a86cf86b64cd9ba59e87671a2acc37992b254&v=4" width="100px;" alt=""/><br /><sub><b>Oksana Grishchenko</b></sub></a></td>
<td align="center"><a href="https://github.com/G-Rath?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3151613?v=4" width="100px;" alt=""/><br /><sub><b>Gareth Jones</b></sub></a></td>
<td align="center"><a href="https://github.com/derElektrobesen?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4015637?u=8020c4cb1c123fe3ec6f393ea75b1927e92565a3&v=4" width="100px;" alt=""/><br /><sub><b>Berezhnoy Pavel</b></sub></a></td>
<td align="center"><a href="https://sluongng.gitlab.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/26684313?u=7a89fa4dcacc000059fe3f67489d12a6f7fef8cd&v=4" width="100px;" alt=""/><br /><sub><b>Son Luong Ngoc</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/proton-ab?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/25139420?u=53918e67ce92a25351b1ea2ee9ce98435bea0cc8&v=4" width="100px;" alt=""/><br /><sub><b>proton</b></sub></a></td>
<td align="center"><a href="https://sluongng.gitlab.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/26684313?u=7a89fa4dcacc000059fe3f67489d12a6f7fef8cd&v=4" width="100px;" alt=""/><br /><sub><b>Son Luong Ngoc</b></sub></a></td>
<td align="center"><a href="https://leduc.uk?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/55436491?u=d3eb8998d0fb116bcda344b0489406c3cb24ef9a&v=4" width="100px;" alt=""/><br /><sub><b>Henry</b></sub></a></td>
<td align="center"><a href="https://aofeisheng.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5037285?u=2f1c2a9317d995c4a84461d5197c552ab0d89e43&v=4" width="100px;" alt=""/><br /><sub><b>Aofei Sheng</b></sub></a></td>
<td align="center"><a href="https://github.com/rnben?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/21094569?u=85af7d87fae89b3c720af1d6a07165201441093e&v=4" width="100px;" alt=""/><br /><sub><b>rnben</b></sub></a></td>
<td align="center"><a href="https://github.com/mxpv?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/865334?u=a47007c3fc95832646d2c935da12aaff81a48ca3&v=4" width="100px;" alt=""/><br /><sub><b>Maksym Pavlenko</b></sub></a></td>
<td align="center"><a href="http://sitano.github.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/564610?u=1830fc4bffb6829093a7f4404ee581c43d909c36&v=4" width="100px;" alt=""/><br /><sub><b>Ivan Prisyazhnyy</b></sub></a></td>
<td align="center"><a href="https://github.com/ngehrsitz?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/45375059?v=4" width="100px;" alt=""/><br /><sub><b>@ngehrsitz</b></sub></a></td>
<td align="center"><a href="https://reese.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6980197?u=18a8e25bd6059057d9fdda1115db33ec184ddd6b&v=4" width="100px;" alt=""/><br /><sub><b>John Reese</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ngehrsitz?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/45375059?v=4" width="100px;" alt=""/><br /><sub><b>@ngehrsitz</b></sub></a></td>
<td align="center"><a href="https://reese.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6980197?u=18a8e25bd6059057d9fdda1115db33ec184ddd6b&v=4" width="100px;" alt=""/><br /><sub><b>John Reese</b></sub></a></td>
<td align="center"><a href="https://github.com/mgabeler-lee-6rs?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/41014492?u=61831102f84d58f6906a775bf40b7a5cf24ba625&v=4" width="100px;" alt=""/><br /><sub><b>Matthew Gabeler-Lee</b></sub></a></td>
<td align="center"><a href="https://github.com/mattdowdell?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/20556265?v=4" width="100px;" alt=""/><br /><sub><b>Matthew Dowdell</b></sub></a></td>
<td align="center"><a href="https://jlucktay.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/460028?u=2cbe899ed33b64bdc02128467bc42f0bc2c7330e&v=4" width="100px;" alt=""/><br /><sub><b>James Lucktaylor</b></sub></a></td>
<td align="center"><a href="http://inaba.hatenablog.com/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/12012186?u=b0c31c6af5c29f2ead17cd28ca1ef9925f556331&v=4" width="100px;" alt=""/><br /><sub><b>Masahiro Furudate</b></sub></a></td>
<td align="center"><a href="https://github.com/dhui?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/896205?u=3e4fbfd18cabace9d5f7c72b7e1da12dcce5b955&v=4" width="100px;" alt=""/><br /><sub><b>Dale Hui</b></sub></a></td>
<td align="center"><a href="https://github.com/ondrej-fabry?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/32484950?u=34434913a7774f1db6558cb6c4ee5f759b2e13ee&v=4" width="100px;" alt=""/><br /><sub><b>Ondrej Fabry</b></sub></a></td>
<td align="center"><a href="https://github.com/atzoum?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2481587?u=48a1520418d6a39f78c9fa097da06e0e996aac3f&v=4" width="100px;" alt=""/><br /><sub><b>Aris Tzoumas</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ondrej-fabry?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/32484950?u=34434913a7774f1db6558cb6c4ee5f759b2e13ee&v=4" width="100px;" alt=""/><br /><sub><b>Ondrej Fabry</b></sub></a></td>
<td align="center"><a href="https://github.com/atzoum?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2481587?u=48a1520418d6a39f78c9fa097da06e0e996aac3f&v=4" width="100px;" alt=""/><br /><sub><b>Aris Tzoumas</b></sub></a></td>
<td align="center"><a href="https://javorszky.co.uk?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1196299?u=45a315483c34993c7ffeff5ebe7a312904e27c47&v=4" width="100px;" alt=""/><br /><sub><b>Gabor Javorszky</b></sub></a></td>
<td align="center"><a href="https://hori-ryota.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2936501?u=9e5c0a6fd206cfa8d77c20f5f0806db43e777b09&v=4" width="100px;" alt=""/><br /><sub><b>hori-ryota</b></sub></a></td>
<td align="center"><a href="https://kishaningithub.github.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/763760?u=55a5f3e937025e54e2736ca1fc38f0ab3788527f&v=4" width="100px;" alt=""/><br /><sub><b>Kishan B</b></sub></a></td>
<td align="center"><a href="https://github.com/proton-ab?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/25139420?u=53918e67ce92a25351b1ea2ee9ce98435bea0cc8&v=4" width="100px;" alt=""/><br /><sub><b>proton</b></sub></a></td>
<td align="center"><a href="https://github.com/reugn?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/45880064?u=05c99c041d54ca1c21ee6eaf8afd29dbf75aeb5e&v=4" width="100px;" alt=""/><br /><sub><b>Eugene R.</b></sub></a></td>
<td align="center"><a href="https://eric.jain.name/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1323903?v=4" width="100px;" alt=""/><br /><sub><b>Eric Jain</b></sub></a></td>
<td align="center"><a href="https://github.com/Ghvstcode?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/46195831?u=3d2cf08a0e737d60e2c7c65af7f5fd247ad2b47c&v=4" width="100px;" alt=""/><br /><sub><b>Ghvst Code</b></sub></a></td>
<td align="center"><a href="https://saiko.tech?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5138316?u=a8fc4f0dd15abd2e5c05e393b575c8ee71cc1174&v=4" width="100px;" alt=""/><br /><sub><b>Markus</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Ghvstcode?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/46195831?u=3d2cf08a0e737d60e2c7c65af7f5fd247ad2b47c&v=4" width="100px;" alt=""/><br /><sub><b>Ghvst Code</b></sub></a></td>
<td align="center"><a href="https://saiko.tech?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5138316?u=a8fc4f0dd15abd2e5c05e393b575c8ee71cc1174&v=4" width="100px;" alt=""/><br /><sub><b>Markus</b></sub></a></td>
<td align="center"><a href="https://sspaink.github.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3441183?u=4e792fd6e0ba6852a7d17675f51e2efc74b07381&v=4" width="100px;" alt=""/><br /><sub><b>Sebastian Spaink</b></sub></a></td>
<td align="center"><a href="https://github.com/laverya?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2318911?u=12f6803204811ffd8ce33c1fef0281554fdcbb20&v=4" width="100px;" alt=""/><br /><sub><b>Andrew Lavery</b></sub></a></td>
<td align="center"><a href="https://github.com/mfine?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/60851?u=f9dee708e1940cc4d3b442f729aa064cfa65d3f8&v=4" width="100px;" alt=""/><br /><sub><b>Mark Fine</b></sub></a></td>
<td align="center"><a href="https://github.com/deathbots?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7408170?u=b707d200ee986d56379a33880f3afb39c8f49656&v=4" width="100px;" alt=""/><br /><sub><b>Rory Prendergast</b></sub></a></td>
<td align="center"><a href="https://github.com/Bysmyyr?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3306756?u=0acd0c98e43ddd45ec78f29582724c8b2ed24265&v=4" width="100px;" alt=""/><br /><sub><b>Olli Raula</b></sub></a></td>
<td align="center"><a href="https://github.com/tariq1890?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2658224?u=5719f58847e3414945290592663045c82b04b272&v=4" width="100px;" alt=""/><br /><sub><b>Tariq</b></sub></a></td>
<td align="center"><a href="https://github.com/pstibrany?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/895919?u=d2de54fb88e2b270f49b647d7b4986b4a4f3c146&v=4" width="100px;" alt=""/><br /><sub><b>Peter Štibraný</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/tariq1890?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2658224?u=5719f58847e3414945290592663045c82b04b272&v=4" width="100px;" alt=""/><br /><sub><b>Tariq</b></sub></a></td>
<td align="center"><a href="https://github.com/pstibrany?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/895919?u=d2de54fb88e2b270f49b647d7b4986b4a4f3c146&v=4" width="100px;" alt=""/><br /><sub><b>Peter Štibraný</b></sub></a></td>
<td align="center"><a href="https://github.com/kaka19ace?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1320568?u=9f02e3ae234ea1e76a3682ada8166c905104f555&v=4" width="100px;" alt=""/><br /><sub><b>kaixiang zhong</b></sub></a></td>
<td align="center"><a href="https://github.com/ced42?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/17880812?u=581ff1cda9a94c44e50e668e5310c4477b63a9d8&v=4" width="100px;" alt=""/><br /><sub><b>@ced42</b></sub></a></td>
<td align="center"><a href="https://github.com/dgsb?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5495748?v=4" width="100px;" alt=""/><br /><sub><b>David Bariod</b></sub></a></td>
<td align="center"><a href="http://bitbin.de/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/429763?u=dd2c1e820d0d41d3f804cf4ba39ae6a6995673e2&v=4" width="100px;" alt=""/><br /><sub><b>Stephen Benjamin</b></sub></a></td>
<td align="center"><a href="https://github.com/kkHAIKE?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/64772?u=6d4d98531039b172e127fadfb3d9c70c150c42d6&v=4" width="100px;" alt=""/><br /><sub><b>@kkHAIKE</b></sub></a></td>
<td align="center"><a href="https://www.linkedin.com/in/david-hsing-yu-chen/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/17587061?v=4" width="100px;" alt=""/><br /><sub><b>Hsing-Yu (David) Chen</b></sub></a></td>
<td align="center"><a href="https://hachyderm.io/@developerguy?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/16693043?u=cbf54ecddb35755aaab1bc043de89224ee495202&v=4" width="100px;" alt=""/><br /><sub><b>Batuhan Apaydın</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://www.linkedin.com/in/david-hsing-yu-chen/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/17587061?v=4" width="100px;" alt=""/><br /><sub><b>Hsing-Yu (David) Chen</b></sub></a></td>
<td align="center"><a href="https://hachyderm.io/@developerguy?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/16693043?u=cbf54ecddb35755aaab1bc043de89224ee495202&v=4" width="100px;" alt=""/><br /><sub><b>Batuhan Apaydın</b></sub></a></td>
<td align="center"><a href="https://github.com/reflechant?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5537648?v=4" width="100px;" alt=""/><br /><sub><b>Roman Gerasimov</b></sub></a></td>
<td align="center"><a href="https://mostafa.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/54546?u=a6de7cb6258f15701ede0977ade995c7135e39b9&v=4" width="100px;" alt=""/><br /><sub><b>Mostafa Moradian</b></sub></a></td>
<td align="center"><a href="https://github.com/jkeys089?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1695857?v=4" width="100px;" alt=""/><br /><sub><b>@jkeys089</b></sub></a></td>
<td align="center"><a href="https://github.com/SeigeC?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/39756973?u=192887560f2eea124cb28de6c9af9f64fcf30b32&v=4" width="100px;" alt=""/><br /><sub><b>过客龙门</b></sub></a></td>
<td align="center"><a href="https://github.com/beono?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/539474?u=6a91ec994f805519330015aa6251677a307ada59&v=4" width="100px;" alt=""/><br /><sub><b>Eldar Rakhimberdin</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://blog.schoentoon.blue?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/417618?u=294670670fd504a353586a57b32cf0fe4843f8eb&v=4" width="100px;" alt=""/><br /><sub><b>Toon Schoenmakers</b></sub></a></td>
<td align="center"><a href="https://github.com/cezarsa?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/11041?u=cde690e3dd7a6ebf895e11f3ff144b27f8fcb46c&v=4" width="100px;" alt=""/><br /><sub><b>Cezar Sá Espinola</b></sub></a></td>
<td align="center"><a href="https://github.com/benpaxton-hf?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/24317933?v=4" width="100px;" alt=""/><br /><sub><b>Ben Paxton</b></sub></a></td>
<td align="center"><a href="https://connoradams.co.uk?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10026538?u=532bda717283aa1bba2d47f74b19107787fead82&v=4" width="100px;" alt=""/><br /><sub><b>Connor Adams</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://draven.co/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6493255?u=856f82ae98a83bcee1ddbb7e3760e69f2343c496&v=4" width="100px;" alt=""/><br /><sub><b>Draven</b></sub></a></td>
<td align="center"><a href="https://github.com/dcu?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/73729?v=4" width="100px;" alt=""/><br /><sub><b>David Cuadrado</b></sub></a></td>
<td align="center"><a href="https://github.com/kavu?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1994?u=f544b0f2cb32df06f36677ffad5b06fc2caf6215&v=4" width="100px;" alt=""/><br /><sub><b>Max Riveiro</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/jdemeyer?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3625785?v=4" width="100px;" alt=""/><br /><sub><b>Jeroen Demeyer</b></sub></a></td>
<td align="center"><a href="https://martins.irbe.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/13367583?u=9465cb342f4468df163a2aab2a3a81261fcaa26b&v=4" width="100px;" alt=""/><br /><sub><b>Mārtiņš Irbe</b></sub></a></td>
<td align="center"><a href="https://elon.fun/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8433465?v=4" width="100px;" alt=""/><br /><sub><b>Yilong Li</b></sub></a></td>
<td align="center"><a href="https://brito.com.br?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7620947?u=86baf7dc30b49b30a8efc5947ea4b1795969c6bf&v=4" width="100px;" alt=""/><br /><sub><b>Rodrigo Brito</b></sub></a></td>
<td align="center"><a href="https://techknowlogick.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/164197?u=7c3342cf6315694c2248b233571856dc67e7c078&v=4" width="100px;" alt=""/><br /><sub><b>@techknowlogick</b></sub></a></td>
<td align="center"><a href="https://github.com/ytakaya?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/28138590?u=b68d004404fb8b2910d6500babf24a753683f80c&v=4" width="100px;" alt=""/><br /><sub><b>takaya</b></sub></a></td>
<td align="center"><a href="https://github.com/craigfurman?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4772216?u=8ca83103a7bc639a8e9e812864ca44062e2b61d9&v=4" width="100px;" alt=""/><br /><sub><b>Craig Furman</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ytakaya?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/28138590?u=b68d004404fb8b2910d6500babf24a753683f80c&v=4" width="100px;" alt=""/><br /><sub><b>takaya</b></sub></a></td>
<td align="center"><a href="https://github.com/craigfurman?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4772216?u=31c29a937fa59a82f4a23d3beea287f42e6a7e2c&v=4" width="100px;" alt=""/><br /><sub><b>Craig Furman</b></sub></a></td>
<td align="center"><a href="https://github.com/ttys3?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/41882455?u=f48189390ce1ba2cb973778538667e5b2c9eb8f3&v=4" width="100px;" alt=""/><br /><sub><b>@ttys3</b></sub></a></td>
<td align="center"><a href="https://github.com/mfreeman451?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1821930?u=f82814f64334bece992b92c4648b84643a609d80&v=4" width="100px;" alt=""/><br /><sub><b>Michael Freeman</b></sub></a></td>
<td align="center"><a href="https://github.com/marksartdev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/34810318?u=a1865af09b2fc37cd72885f6d7f38af949c63e1c&v=4" width="100px;" alt=""/><br /><sub><b>Mark Sart</b></sub></a></td>
<td align="center"><a href="https://jawa.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/194275?u=d2a659a214ee5ddaa1b14a0537caabdc651389c9&v=4" width="100px;" alt=""/><br /><sub><b>Joshua Rubin</b></sub></a></td>
<td align="center"><a href="https://vk.com/danil42russia?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6605618?u=59d4d721573ba305263423ce9886f234c99c1823&v=4" width="100px;" alt=""/><br /><sub><b>Danil Ovchinnikov</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://rafaelfranco.es?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6237457?u=40412ebef30755d37e88b6a3e3b1748eb5f73b59&v=4" width="100px;" alt=""/><br /><sub><b>Rafael Franco</b></sub></a></td>
<td align="center"><a href="https://Telegram: @kseniadumpling ?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/39095863?u=4e140b5b4c421eb3248a0e69986c42b78952a123&v=4" width="100px;" alt=""/><br /><sub><b>Ksenia Rogova</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://blog.vaughany.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/381767?v=4" width="100px;" alt=""/><br /><sub><b>Paul Vaughan</b></sub></a></td>
<td align="center"><a href="https://jaredallard.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2391349?u=0293413bf8b4be72e07db70655ffa83885315708&v=4" width="100px;" alt=""/><br /><sub><b>Jared Allard</b></sub></a></td>
<td align="center"><a href="https://jaredallard.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2391349?u=be63271898c601fb223930370ab67c5b196b266e&v=4" width="100px;" alt=""/><br /><sub><b>Jared Allard</b></sub></a></td>
<td align="center"><a href="http://stainlessed.co.uk?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/151272?u=8a3688637befe674727827e9c2050c7c5b016c26&v=4" width="100px;" alt=""/><br /><sub><b>Glen Mailer</b></sub></a></td>
<td align="center"><a href="https://github.com/ian-howell?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10422579?u=ff9c375b5ee2c41b4bdd20b1e32a6fc40bd6ad0f&v=4" width="100px;" alt=""/><br /><sub><b>Ian Howell</b></sub></a></td>
<td align="center"><a href="https://github.com/hugelgupf?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1994130?u=69b9df9c7c4bbe26359c0b8c44051a8bde992b29&v=4" width="100px;" alt=""/><br /><sub><b>Chris K</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="http://ssgreg.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1574981?u=a5afff1d2f056a0ac05be2f5464afa5bc6d33631&v=4" width="100px;" alt=""/><br /><sub><b>Grigory Zubankov</b></sub></a></td>
<td align="center"><a href="https://github.com/xxpxxxxp?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1585918?u=6c092f7b5db6e7d6842cc843148c92604c2fa3c7&v=4" width="100px;" alt=""/><br /><sub><b>@xxpxxxxp</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/shmsr?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/51480165?u=fdfea6d16b1e7ff8d272bf127078d78d10e1a08a&v=4" width="100px;" alt=""/><br /><sub><b>subham sarkar</b></sub></a></td>
<td align="center"><a href="https://rleungx.github.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/35896542?u=b073e93cd4767203fccaaf008956e029d429ae6d&v=4" width="100px;" alt=""/><br /><sub><b>Ryan Leung</b></sub></a></td>
<td align="center"><a href="https://www.byrnedo.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5528491?u=9ac8f3a6048553df8e59d6af46fa19cfd5babde5&v=4" width="100px;" alt=""/><br /><sub><b>Donal Byrne</b></sub></a></td>
<td align="center"><a href="https://github.com/trajan0x?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/83933037?u=a4289b193e2b28f5840fb45242f3dc55c740e937&v=4" width="100px;" alt=""/><br /><sub><b>@trajan0x</b></sub></a></td>
<td align="center"><a href="https://github.com/ykadowak?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/60080334?u=4b265f54e75dddad20666cee52c9bf6a6d26ba2c&v=4" width="100px;" alt=""/><br /><sub><b>Yusuke Kadowaki</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/CfirTsabari?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2716357?u=06dce8b85d85e22e7583c0c72ba81b4886f6d081&v=4" width="100px;" alt=""/><br /><sub><b>@CfirTsabari</b></sub></a></td>
<td align="center"><a href="https://github.com/ImprintNav?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/125316979?v=4" width="100px;" alt=""/><br /><sub><b>Navneeth Jayendran</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://media.giphy.com/media/XxWjoyOLi4mkM/giphy.gif?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/24299864?u=5566396a3d5dcf65fec65a411b1d9dc4fd4bf085&v=4" width="100px;" alt=""/><br /><sub><b>Marko</b></sub></a></td>
<td align="center"><a href="https://github.com/cflewis?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/43708?u=20ffa568c463916d20483acee34b09dd26581dec&v=4" width="100px;" alt=""/><br /><sub><b>Chris Lewis</b></sub></a></td>
<td align="center"><a href="https://pararang.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8720184?v=4" width="100px;" alt=""/><br /><sub><b>Muhammad Ikhsan</b></sub></a></td>
<td align="center"><a href="https://github.com/AntonBraer?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/94956080?v=4" width="100px;" alt=""/><br /><sub><b>Anton Braer</b></sub></a></td>
<td align="center"><a href="https://github.com/JaeguKim?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/22807942?u=e7f381e6b64699f644af1bd5170e02f6087a26f0&v=4" width="100px;" alt=""/><br /><sub><b>Jaegoo Kim</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/reflechant?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5537648?v=4" width="100px;" alt=""/><br /><sub><b>Roman Gerasimov</b></sub></a></td>
<td align="center"><a href="https://github.com/gleichda?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/15176026?u=7555939416df1132efc87906be73f15846557db3&v=4" width="100px;" alt=""/><br /><sub><b>David Gleich</b></sub></a></td>
<td align="center"><a href="https://github.com/connorszczepaniak-wk?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/85500372?u=3c7d6db069c7c2c72a7c198482490b3577c3daaa&v=4" width="100px;" alt=""/><br /><sub><b>@connorszczepaniak-wk</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/yuqengo?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/17488521?v=4" width="100px;" alt=""/><br /><sub><b>yuqengo</b></sub></a></td>
<td align="center"><a href="https://github.com/thejan2009?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1621134?v=4" width="100px;" alt=""/><br /><sub><b>Dejan Benedik</b></sub></a></td>
<td align="center"><a href="https://linkedin.com/in/rodrigc?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1895943?v=4" width="100px;" alt=""/><br /><sub><b>Craig Rodrigues</b></sub></a></td>
<td align="center"><a href="https://github.com/Oloruntobi1?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/37913305?u=6a6a8180ef73fe5f51e2f21352fb8a85e30b7403&v=4" width="100px;" alt=""/><br /><sub><b>Askari</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/itsamirhn?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/19665344?u=4af46868a7a9ca5176e26da03aaeabf1c235c6ff&v=4" width="100px;" alt=""/><br /><sub><b>Amir Hosseini</b></sub></a></td>
<td align="center"><a href="https://davidjb.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1002811?v=4" width="100px;" alt=""/><br /><sub><b>David Beitey</b></sub></a></td>
<td align="center"><a href="https://brandur.org?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/96890?u=6e19efda669fd696053dfa8976e3ac3b3c16fbd4&v=4" width="100px;" alt=""/><br /><sub><b>Brandur Leach</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/drichelson?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/602409?u=796941f98f6137c6bd1979d1434b69a15871059b&v=4" width="100px;" alt=""/><br /><sub><b>Dan Richelson</b></sub></a></td>
<td align="center"><a href="https://github.com/titusjaka?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5277948?u=784515fda5ba2358fdc0b67ab9f654a70d4a426b&v=4" width="100px;" alt=""/><br /><sub><b>Denis Titusov</b></sub></a></td>
<td align="center"><a href="https://t.me/pershin_daniil?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/52123477?u=71a1a20203043932f36b2995d9fbda2b320303a0&v=4" width="100px;" alt=""/><br /><sub><b>Daniil Pershin</b></sub></a></td>
<td align="center"><a href="https://github.com/vterdunov?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/13706147?v=4" width="100px;" alt=""/><br /><sub><b>Terdunov Vyacheslav</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/sean-?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/349516?u=30344c70395b9ae7cd713d628dd2579f4372037c&v=4" width="100px;" alt=""/><br /><sub><b>Sean Chittenden</b></sub></a></td>
<td align="center"><a href="http://teawater.github.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/432382?u=b97108437f237fc551c87147288740f08504c0fa&v=4" width="100px;" alt=""/><br /><sub><b>Hui Zhu</b></sub></a></td>
<td align="center"><a href="https://github.com/Harsimran1?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8309130?u=827935180bf29dbed77f16f0fd4783fae3a7e5e0&v=4" width="100px;" alt=""/><br /><sub><b>@Harsimran1</b></sub></a></td>
<td align="center"><a href="https://rinsuki.net/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6533808?u=f179c4c07bd599d928a3169ba38c37f9a6402372&v=4" width="100px;" alt=""/><br /><sub><b>rinsuki</b></sub></a></td>
<td align="center"><a href="https://www.linkedin.com/in/syndbg?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6031925?u=c4e3f377319dbe9b87b0c7fe4b06d9ba49895c9f&v=4" width="100px;" alt=""/><br /><sub><b>Anton Antonov</b></sub></a></td>
<td align="center"><a href="https://github.com/hn8?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10730886?v=4" width="100px;" alt=""/><br /><sub><b>@hn8</b></sub></a></td>
<td align="center"><a href="https://github.com/extemporalgenome?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/536740?v=4" width="100px;" alt=""/><br /><sub><b>Kevin Gillette</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://rinsuki.net/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6533808?u=f179c4c07bd599d928a3169ba38c37f9a6402372&v=4" width="100px;" alt=""/><br /><sub><b>rinsuki</b></sub></a></td>
<td align="center"><a href="https://www.linkedin.com/in/syndbg?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6031925?u=e59f23fc3249afbd4b674f858d2546133d965e09&v=4" width="100px;" alt=""/><br /><sub><b>Anton Antonov</b></sub></a></td>
<td align="center"><a href="https://github.com/hn8?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10730886?v=4" width="100px;" alt=""/><br /><sub><b>@hn8</b></sub></a></td>
<td align="center"><a href="https://github.com/extemporalgenome?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/536740?v=4" width="100px;" alt=""/><br /><sub><b>Kevin Gillette</b></sub></a></td>
<td align="center"><a href="https://milas.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/841263?u=e9fa26ee58f8a63920ac3e7364255ca81114bef3&v=4" width="100px;" alt=""/><br /><sub><b>Milas Bowman</b></sub></a></td>
<td align="center"><a href="https://github.com/credativ-dar?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/104132637?v=4" width="100px;" alt=""/><br /><sub><b>@credativ-dar</b></sub></a></td>
<td align="center"><a href="https://github.com/SophisticaSean?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2059265?u=d911cbe69886c140097fa6ee448153245866137d&v=4" width="100px;" alt=""/><br /><sub><b>Sean Lewis</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/elliots?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/622455?v=4" width="100px;" alt=""/><br /><sub><b>☃ Elliot Shepherd</b></sub></a></td>
<td align="center"><a href="https://nvartolomei.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/543193?u=972ac6bbb1e48aa474e8677fd3b9368fe61e4872&v=4" width="100px;" alt=""/><br /><sub><b>Nicolae Vartolomei</b></sub></a></td>
<td align="center"><a href="https://Boehringer-Ingelheim.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/873565?u=abceeaf3aaa299e89ad07ee33ebc9e17c0f3258d&v=4" width="100px;" alt=""/><br /><sub><b>Martin Etmajer</b></sub></a></td>
<td align="center"><a href="https://github.com/fisherxu?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/28776356?u=16bb46f48840d43aaa8bf3692de51c26309ab27e&v=4" width="100px;" alt=""/><br /><sub><b>Fisher Xu</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/matthewpoer?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/727257?u=5efb699d02d7e627bbbdccafa804066b177e170b&v=4" width="100px;" alt=""/><br /><sub><b>Matthew Poer</b></sub></a></td>
<td align="center"><a href="https://codyleyhan.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/11651981?u=ee4ee8f95ae169207fb701e059f076ecadc51055&v=4" width="100px;" alt=""/><br /><sub><b>Cody Ley-Han</b></sub></a></td>
<td align="center"><a href="https://github.com/darklore?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/958690?u=f23d414023f297c8cef1b2532c7e671c726bc343&v=4" width="100px;" alt=""/><br /><sub><b>@darklore</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/to6ka?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/29016937?v=4" width="100px;" alt=""/><br /><sub><b>@to6ka</b></sub></a></td>
<td align="center"><a href="https://github.com/evalexpr?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/23485511?u=5c6b8d5b34333b88d58c11786812815b550aae94&v=4" width="100px;" alt=""/><br /><sub><b>Wilkins</b></sub></a></td>
<td align="center"><a href="https://hachyderm.io/@cjkreklow?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/55775?u=8ee6cac6c286964a9c15a73e2fa48de097700d79&v=4" width="100px;" alt=""/><br /><sub><b>Collin Kreklow</b></sub></a></td>
<td align="center"><a href="http://marcin.owsiany.pl/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/489420?u=e236c95628ea05d56bdc0b3d3ae01be35f2fb1d8&v=4" width="100px;" alt=""/><br /><sub><b>Marcin Owsiany</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/cjcjameson?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6885889?u=0b15031859ad908eb11af83878000ab09bed5609&v=4" width="100px;" alt=""/><br /><sub><b>C.J. Jameson</b></sub></a></td>
<td align="center"><a href="https://github.com/JacekDuszenko?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/24210015?u=895d98b6a4ff12621f58aa3afec4e2bb0b18e510&v=4" width="100px;" alt=""/><br /><sub><b>Jacek</b></sub></a></td>
<td align="center"><a href="https://pfish.zone/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6622003?v=4" width="100px;" alt=""/><br /><sub><b>paul fisher</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ofw?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4242339?u=0ccfaabc4f092862ac479fec6fea4a5fb0c247f2&v=4" width="100px;" alt=""/><br /><sub><b>@ofw</b></sub></a></td>
<td align="center"><a href="https://www.rafik.ca?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/767223?u=2ff01f475dc95599d398ccda2dddb326fd03cf3e&v=4" width="100px;" alt=""/><br /><sub><b>Rafik Draoui</b></sub></a></td>
<td align="center"><a href="https://github.com/mdelah?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4904544?u=49076722c998f118fca18b532862ce0eb445e6b2&v=4" width="100px;" alt=""/><br /><sub><b>Miles Delahunty</b></sub></a></td>
<td align="center"><a href="https://github.com/outcatcher?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8591561?u=805a75f3eda187538ba43ed176594c8ea7535802&v=4" width="100px;" alt=""/><br /><sub><b>Anton Kachurin</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://nico.ismaili.de?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/11136006?u=dafba6459cdd237535e7dd34cff6cedf8aec9b11&v=4" width="100px;" alt=""/><br /><sub><b>Nico Ismaili</b></sub></a></td>
<td align="center"><a href="https://www.bbkane.com/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6081085?u=cfea130a8721b472b99feb656c3579251e5e8e7c&v=4" width="100px;" alt=""/><br /><sub><b>Benjamin Kane</b></sub></a></td>
<td align="center"><a href="https://github.com/philiplinell?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3718865?u=91967dcf7fd10097737fe97050913dcbc08af1bc&v=4" width="100px;" alt=""/><br /><sub><b>Philip Linell</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/herman26?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/28861153?u=e915bacc8f3d90dda5831e683bcd9b71eee7498e&v=4" width="100px;" alt=""/><br /><sub><b>Herman van Zyl</b></sub></a></td>
<td align="center"><a href="https://thearchivelog.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/44025432?u=8d9a7d5762f01774fdb88a940bb48c0257d5db63&v=4" width="100px;" alt=""/><br /><sub><b>Jongwoo Han</b></sub></a></td>
<td align="center"><a href="https://github.com/surik?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/708165?u=522be01ebc4fddb969d98da89cff13df4a6ca681&v=4" width="100px;" alt=""/><br /><sub><b>Yury Gargay</b></sub></a></td>
<td align="center"><a href="https://clifton.kaznocha.com.?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1851985?v=4" width="100px;" alt=""/><br /><sub><b>Clifton Kaznocha</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://jcarreras.es?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/993186?u=1e08d07e8759e0e7df8a4d9ba0d21e60f3f6a86d&v=4" width="100px;" alt=""/><br /><sub><b>Jan Carreras</b></sub></a></td>
<td align="center"><a href="https://github.com/aimuz?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/17666471?u=43238e20a87a2109b55cf6770f052ab19845bca9&v=4" width="100px;" alt=""/><br /><sub><b>aimuz</b></sub></a></td>
<td align="center"><a href="https://github.com/3100?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1296276?u=6bf65027d5cbe8af3ea616b328e6f792fa1c138a&v=4" width="100px;" alt=""/><br /><sub><b>Ryo Sato</b></sub></a></td>
<td align="center"><a href="https://github.com/ezimanyi?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1391982?u=1f7bb4075bdb56f5d76bbbca2e5e245e3b11b9f9&v=4" width="100px;" alt=""/><br /><sub><b>Eric Zimanyi</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/bbernays?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/30294676?u=6a5769fa916310ef41791264cf3824f7b4389314&v=4" width="100px;" alt=""/><br /><sub><b>Ben Bernays</b></sub></a></td>
<td align="center"><a href="https://ectobit.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2791202?u=04e899087611d5a698e236a8f2db6593b81015da&v=4" width="100px;" alt=""/><br /><sub><b>Boban Acimovic</b></sub></a></td>
<td align="center"><a href="http://pacman.blog.br?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/59438?v=4" width="100px;" alt=""/><br /><sub><b>Tiago Peczenyj</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/strantalis?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/18211470?u=9b0a8a42f152e1d1b3f20c8c45b49fdebcb4d947&v=4" width="100px;" alt=""/><br /><sub><b>Sean Trantalis</b></sub></a></td>
<td align="center"><a href="https://github.com/BorzdeG?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2332528?v=4" width="100px;" alt=""/><br /><sub><b>Viktor Alenkov</b></sub></a></td>
<td align="center"><a href="https://github.com/ealves-pt?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5909095?u=3496cead0cd29206ebbe5ca8b61b427ccfd13cbb&v=4" width="100px;" alt=""/><br /><sub><b>Eduardo Alves</b></sub></a></td>
<td align="center"><a href="https://github.com/alexbagnolini?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/23359609?u=abf04716f5a19fcf7c126efc6d8e882cbee63600&v=4" width="100px;" alt=""/><br /><sub><b>Alex Bagnolini</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/hummerd?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1921665?u=fc42a642da357e81fb41987d69aa2efaa85e81c3&v=4" width="100px;" alt=""/><br /><sub><b>Dima</b></sub></a></td>
<td align="center"><a href="https://github.com/dajohi?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3308193?u=451dc7ae6de642e9dc40c02fcebc51c4ce4a7323&v=4" width="100px;" alt=""/><br /><sub><b>David Hill</b></sub></a></td>
<td align="center"><a href="http://troyronda.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1906596?v=4" width="100px;" alt=""/><br /><sub><b>Troy Ronda</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/mirecl?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/28476324?u=6109606558f38dff064839b20b54320ba8a29a01&v=4" width="100px;" alt=""/><br /><sub><b>Andrey Grazhdankov</b></sub></a></td>
<td align="center"><a href="https://gitlab.com/ashmckenzie?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9525?u=372034dbe17b31ee9c8444c1d2f4526cdc0b925e&v=4" width="100px;" alt=""/><br /><sub><b>Ash McKenzie</b></sub></a></td>
<td align="center"><a href="https://k4yt3x.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/21986859?u=15856cd8ebe7d9524d8ecfa1590011e63c641c51&v=4" width="100px;" alt=""/><br /><sub><b>K4YT3X</b></sub></a></td>
<td align="center"><a href="https://github.com/gessnerfl?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6311334?v=4" width="100px;" alt=""/><br /><sub><b>Florian Gessner</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/osamingo?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1390409?u=e86592e414db66d6ac047a242e294bca95b4ea56&v=4" width="100px;" alt=""/><br /><sub><b>Osamu TONOMORI</b></sub></a></td>
<td align="center"><a href="https://github.com/liubog2008?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7920667?v=4" width="100px;" alt=""/><br /><sub><b>Bo Liu</b></sub></a></td>
<td align="center"><a href="https://stebalien.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/310393?u=4e536db31b16cbf68588f80c363d2cf6ef6c7b9f&v=4" width="100px;" alt=""/><br /><sub><b>Steven Allen</b></sub></a></td>
<td align="center"><a href="https://github.com/urandom2?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2526260?u=507397c1f883caedf479b9a647f9ba540d7ba32e&v=4" width="100px;" alt=""/><br /><sub><b>Colin Arnott</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://levyeran.medium.com/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/584783?u=4aa666a3a700fbde4a727f1828a5faf939c310d6&v=4" width="100px;" alt=""/><br /><sub><b>Eran Levy</b></sub></a></td>
<td align="center"><a href="https://engineeringideas.substack.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/609240?v=4" width="100px;" alt=""/><br /><sub><b>Roman Leventov</b></sub></a></td>
<td align="center"><a href="https://whynothugo.nl/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/730811?u=1bc85d57b1fd0f683e28d1898bb293a8e2901e26&v=4" width="100px;" alt=""/><br /><sub><b>Hugo</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/mweb?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/882006?v=4" width="100px;" alt=""/><br /><sub><b>Mathias Weber</b></sub></a></td>
<td align="center"><a href="https://naveensrinivasan.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/172697?u=ba481d3b319e42348d45f1c90fadb0648c00a5af&v=4" width="100px;" alt=""/><br /><sub><b>Naveen</b></sub></a></td>
<td align="center"><a href="https://github.com/maxsond?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1946457?v=4" width="100px;" alt=""/><br /><sub><b>@maxsond</b></sub></a></td>
<td align="center"><a href="https://github.com/subtle-byte?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/71576382?v=4" width="100px;" alt=""/><br /><sub><b>Maksim Meshkov</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/raffepaffe?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/23027567?u=022810e35df0d5071ff979c04b54bf5aa454a6ee&v=4" width="100px;" alt=""/><br /><sub><b>@raffepaffe</b></sub></a></td>
<td align="center"><a href="http://abhinavg.net/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/41730?v=4" width="100px;" alt=""/><br /><sub><b>Abhinav Gupta</b></sub></a></td>
<td align="center"><a href="https://github.com/mmatur?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1776972?u=fe2b7a5a4ab893f90667b8204803c4724d0cb7d7&v=4" width="100px;" alt=""/><br /><sub><b>Michael</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://kulikov.im?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/888650?u=e42fab110432eeb3d28a81b6bde4fd8d63066220&v=4" width="100px;" alt=""/><br /><sub><b>Evgeniy Kulikov</b></sub></a></td>
<td align="center"><a href="http://cns.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/715120?u=aaed72a09450c372c3e0f5115ff3c45116622a4a&v=4" width="100px;" alt=""/><br /><sub><b>Chris Nesbitt-Smith</b></sub></a></td>
<td align="center"><a href="https://es.linkedin.com/in/danicaba?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/15898942?u=ef836b375a210ca5e5a9c3485a9d6b5a94f9532d&v=4" width="100px;" alt=""/><br /><sub><b>Daniel Caballero</b></sub></a></td>
<td align="center"><a href="https://github.com/hypnoglow?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4853075?u=46a46b12713a37327db040e701fdf974032e4f28&v=4" width="100px;" alt=""/><br /><sub><b>Igor Zibarev</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/CarltonHenderson?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/22032748?u=04ffcb0d59948341a48c07a74fc158e44114c5dd&v=4" width="100px;" alt=""/><br /><sub><b>Carl Henderson</b></sub></a></td>
<td align="center"><a href="https://momotaro98.github.io/about?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9294726?u=a31fa7e2665f98a12799947218395d4315fbad66&v=4" width="100px;" alt=""/><br /><sub><b>Shintaro Anazawa</b></sub></a></td>
<td align="center"><a href="https://github.com/mattayes?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8622473?u=e68267ef69ef74636b036bd14194046cebc23246&v=4" width="100px;" alt=""/><br /><sub><b>Matt Braymer-Hayes</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/arjenvanderende?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/357115?u=f3ea712dd957d3740daeca2ec47fe04cfe7d6522&v=4" width="100px;" alt=""/><br /><sub><b>Arjen van der Ende</b></sub></a></td>
<td align="center"><a href="https://github.com/pd93?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9294862?u=e3ccf7d4ba3066e743615253981474b22719817a&v=4" width="100px;" alt=""/><br /><sub><b>Pete Davison</b></sub></a></td>
<td align="center"><a href="https://github.com/lng2020?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/70063547?v=4" width="100px;" alt=""/><br /><sub><b>Nanguan Lin</b></sub></a></td>
<td align="center"><a href="http://blast.hardchee.se/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/278900?u=3a46ad35166f5fc7f7f1fc64e27dab78e4e03139&v=4" width="100px;" alt=""/><br /><sub><b>Devon Stewart</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://sewell.org?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/18528?u=5b060be00e8258ac79b835ba30cbca84fbbea062&v=4" width="100px;" alt=""/><br /><sub><b>Silas Sewell</b></sub></a></td>
<td align="center"><a href="https://github.com/tdabasinskas?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7723360?u=1acafe50a794b143a116e123d0d5ee4293d22102&v=4" width="100px;" alt=""/><br /><sub><b>Tomas Dabašinskas</b></sub></a></td>
<td align="center"><a href="https://xuri.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2809468?u=c4de44a07b66fef3ba808b1becd4d3c2ed93e9c9&v=4" width="100px;" alt=""/><br /><sub><b>@xuri</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="http://blog.ntrippy.net?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/36466?v=4" width="100px;" alt=""/><br /><sub><b>Charl Matthee</b></sub></a></td>
<td align="center"><a href="https://srizzling.github.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2313668?u=30e4daec389bc14e50ae088a63b37b02ef81c0d9&v=4" width="100px;" alt=""/><br /><sub><b>Sriram Venkatesh</b></sub></a></td>
<td align="center"><a href="http://www.scode.org/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/59476?u=35fe85f5175bacc5521c195def108a5680976d6d&v=4" width="100px;" alt=""/><br /><sub><b>Peter Schuller</b></sub></a></td>
<td align="center"><a href="https://github.com/dgolub?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5299?v=4" width="100px;" alt=""/><br /><sub><b>David Golub</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="http://lk4d4.darth.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/101445?u=8d86da37cd14c1d871da0fb1977521da14ae7285&v=4" width="100px;" alt=""/><br /><sub><b>Alexander Morozov</b></sub></a></td>
<td align="center"><a href="https://github.com/hbandura?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/731692?v=4" width="100px;" alt=""/><br /><sub><b>Pastoh</b></sub></a></td>
<td align="center"><a href="https://www.linkedin.com/in/liam-white?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/14291598?u=669c70086377c0de758436d5ab1fca81f48690dc&v=4" width="100px;" alt=""/><br /><sub><b>Liam White</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/alexdupre?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3694371?u=aa651af67b8de48a503cf82f5f7ef9d2a646af91&v=4" width="100px;" alt=""/><br /><sub><b>Alex Dupre</b></sub></a></td>
<td align="center"><a href="https://gt.school/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10868426?u=6b2fef3f6a04b90cbabace8aae97e2a9837e6c1b&v=4" width="100px;" alt=""/><br /><sub><b>Juanito</b></sub></a></td>
<td align="center"><a href="http://supereagle.github.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3390333?u=c2f3e02916de40814c175560bcd831181f1e7117&v=4" width="100px;" alt=""/><br /><sub><b>Jinming Yue</b></sub></a></td>
<td align="center"><a href="https://github.com/wxdao?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1405249?u=5bf158903e33f6d6721b4b6989ced381b1c94eb9&v=4" width="100px;" alt=""/><br /><sub><b>@wxdao</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/iyangsj?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/780807?u=094f7862d4906b6c570eb299a5460bef5768b8a0&v=4" width="100px;" alt=""/><br /><sub><b>Sijie Yang</b></sub></a></td>
<td align="center"><a href="http://www.stephengroat.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1159138?u=5dfa8464ae8884695e3214800085ac02a5da9283&v=4" width="100px;" alt=""/><br /><sub><b>Stephen</b></sub></a></td>
<td align="center"><a href="https://me.coddeine.com/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5120965?u=9834ae2b7d0dfeb32e050d06d6f4dd979404daf7&v=4" width="100px;" alt=""/><br /><sub><b>Thang Minh Vu</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://juli.au?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1596871?u=f911daad0502d9b840608caf8cb91d8fe600db13&v=4" width="100px;" alt=""/><br /><sub><b>Julia Ogris</b></sub></a></td>
<td align="center"><a href="https://gregcurt.is?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/230338?v=4" width="100px;" alt=""/><br /><sub><b>Greg Curtis</b></sub></a></td>
<td align="center"><a href="https://github.com/ac-rappi?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/54147417?v=4" width="100px;" alt=""/><br /><sub><b>@ac-rappi</b></sub></a></td>
<td align="center"><a href="https://siliconbrain.github.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/402845?v=4" width="100px;" alt=""/><br /><sub><b>Dudás Ádám</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://comparetoday.in?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/735158?u=0b41f582e25eab530c286e026815abc6d5c6dee6&v=4" width="100px;" alt=""/><br /><sub><b>Abhishek | अभिषेक</b></sub></a></td>
<td align="center"><a href="https://brugnara.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2781191?v=4" width="100px;" alt=""/><br /><sub><b>Daniele</b></sub></a></td>
<td align="center"><a href="https://github.com/sachaos?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6121271?u=1de51c81b7ae060e4ac9d09fce403e0eabf05f80&v=4" width="100px;" alt=""/><br /><sub><b>Takumasa Sakao</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="http://www.bendrucker.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/808808?u=b5f986fef3fda93b4b8b970edadb5f3a631063cf&v=4" width="100px;" alt=""/><br /><sub><b>Ben Drucker</b></sub></a></td>
<td align="center"><a href="https://www.cobbing.dev/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/578718?u=22e6ac23703c661e3f6054db1304b3b9ad86de77&v=4" width="100px;" alt=""/><br /><sub><b>Matthew Cobbing</b></sub></a></td>
<td align="center"><a href="https://github.com/Darlez?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/79588890?v=4" width="100px;" alt=""/><br /><sub><b>@Darlez</b></sub></a></td>
<td align="center"><a href="https://github.com/kirillDanshin?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9026581?u=59455ec65bd65cad2c1a4f38a53e7df3826176cd&v=4" width="100px;" alt=""/><br /><sub><b>Kirill Danshin</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://blog.mookjp.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1519309?u=a5f64d46efc8689ce45875b962728dd0c4ddce9f&v=4" width="100px;" alt=""/><br /><sub><b>mook</b></sub></a></td>
<td align="center"><a href="https://github.com/WKBae?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1346227?v=4" width="100px;" alt=""/><br /><sub><b>Kyungmin Bae</b></sub></a></td>
<td align="center"><a href="https://dylanarbour.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7211830?u=bdfb1e059af7323cabc1cf8a822c0a5fa0f5e6f8&v=4" width="100px;" alt=""/><br /><sub><b>Dylan Arbour</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/cory-miller?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/13227161?u=9a680efae1cce64a3de4b7069d984d4da1ec6f33&v=4" width="100px;" alt=""/><br /><sub><b>Cory Miller</b></sub></a></td>
<td align="center"><a href="http://benbrown.ca?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3832730?u=bce741714429988efa7d2771af61934dc2effd88&v=4" width="100px;" alt=""/><br /><sub><b>Ben Brown</b></sub></a></td>
<td align="center"><a href="https://github.com/dorfire?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1499307?u=65a3d139c3f7b4de9fb9cfee7d058779391ccf42&v=4" width="100px;" alt=""/><br /><sub><b>Dor</b></sub></a></td>
<td align="center"><a href="https://sinkcup.github.io/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4971414?u=078a87ad06d07a53dd9559158a58ce5bf87c9ff7&v=4" width="100px;" alt=""/><br /><sub><b>sink</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://joaomagfreitas.link/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/26190214?u=6ab8a7ded105abf7ba8e1b7557358649b9a4cf36&v=4" width="100px;" alt=""/><br /><sub><b>João Freitas</b></sub></a></td>
<td align="center"><a href="https://nickfiggins.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/46427579?u=0524af5324fd2aa6befc9630fb7e9e13cfd66822&v=4" width="100px;" alt=""/><br /><sub><b>nick</b></sub></a></td>
<td align="center"><a href="http://tekton.dev/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/17419217?v=4" width="100px;" alt=""/><br /><sub><b>David Bendory</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/znley?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/105416820?v=4" width="100px;" alt=""/><br /><sub><b>@znley</b></sub></a></td>
<td align="center"><a href="https://github.com/jcolby-avtx?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/87999609?v=4" width="100px;" alt=""/><br /><sub><b>Jonathan Colby</b></sub></a></td>
<td align="center"><a href="https://github.com/Corazu?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/15202670?u=838f19be1ca1921805a173a9bcb26e41f70acaa0&v=4" width="100px;" alt=""/><br /><sub><b>Justin Robertson</b></sub></a></td>
<td align="center"><a href="https://github.com/alebcay?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3536482?v=4" width="100px;" alt=""/><br /><sub><b>Caleb Xu</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/sirkrypt0?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/22522058?u=d36364990d75eb2af51784194d68835630ed6c9a&v=4" width="100px;" alt=""/><br /><sub><b>Tobias</b></sub></a></td>
<td align="center"><a href="https://namco.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9165473?v=4" width="100px;" alt=""/><br /><sub><b>Namco</b></sub></a></td>
<td align="center"><a href="https://github.com/vasyl-haievyi?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/47991519?u=4063325e153a1cfcd0d656947980e404a9e5fb85&v=4" width="100px;" alt=""/><br /><sub><b>Vasyl Haievyi</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/andreykuchin?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/101262227?v=4" width="100px;" alt=""/><br /><sub><b>@andreykuchin</b></sub></a></td>
<td align="center"><a href="https://github.com/irinazheltisheva?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/70594426?u=176984a0e30e43d3f135d0052f0b21c579d24d5f&v=4" width="100px;" alt=""/><br /><sub><b>Irina</b></sub></a></td>
<td align="center"><a href="https://github.com/generalmimon?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/47499687?v=4" width="100px;" alt=""/><br /><sub><b>Petr Pučil</b></sub></a></td>
<td align="center"><a href="https://github.com/abennett?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10927621?u=8134719b01c8d957dc30d89461903ecdf14f4198&v=4" width="100px;" alt=""/><br /><sub><b>Aaron Bennett</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/zaunist?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/38528079?u=2f3f9658181f80523799ba93234ffd41f7ebf5ca&v=4" width="100px;" alt=""/><br /><sub><b>zaunist</b></sub></a></td>
<td align="center"><a href="https://samizdat.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8445924?u=3433bc8ba3fa64f14112aafb8f5366c6873173e5&v=4" width="100px;" alt=""/><br /><sub><b>Egor Kovetskiy</b></sub></a></td>
<td align="center"><a href="https://github.com/SevereCloud?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/14944123?v=4" width="100px;" alt=""/><br /><sub><b>Daniil Suvorov</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://yuki0920.hatenablog.jp?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/47182350?u=3bdb0bdd01b446604ae8340425add90f0dc192f1&v=4" width="100px;" alt=""/><br /><sub><b>Yuki Watanabe</b></sub></a></td>
<td align="center"><a href="https://aisuko.gitbook.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8053949?u=96d7f39e3823c25e39db68f15095c884061583a3&v=4" width="100px;" alt=""/><br /><sub><b>Aisuko</b></sub></a></td>
<td align="center"><a href="https://tungbq.github.io/tungbq/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/85242618?u=0d464d73a441883e68bcd46b7aafaaea5b586ff0&v=4" width="100px;" alt=""/><br /><sub><b>Tung Leo</b></sub></a></td>
<td align="center"><a href="https://kunalsin9h.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/82411321?u=e27c711f1e774d2294437f12851cf3aea229aeda&v=4" width="100px;" alt=""/><br /><sub><b>Kunal Singh</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://kunalsin9h.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/82411321?u=0d4c00596607df206af2479c08286be057daccb6&v=4" width="100px;" alt=""/><br /><sub><b>Kunal Singh</b></sub></a></td>
<td align="center"><a href="https://chenrui.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1580956?u=20958539fe51538f375a7ce29aa6cca78ec5fc6d&v=4" width="100px;" alt=""/><br /><sub><b>Rui Chen</b></sub></a></td>
<td align="center"><a href="https://github.com/rezkam?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1498074?u=33de37ebdc3f8f1e5b98769256870f1dab73d386&v=4" width="100px;" alt=""/><br /><sub><b>Rez</b></sub></a></td>
<td align="center"><a href="https://github.com/alexandrevilain?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/12498987?u=8c6c1a37e5e1cc427712a460cadeb80a08a0a925&v=4" width="100px;" alt=""/><br /><sub><b>Alexandre Vilain</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/guerinoni?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/41150432?u=517ea366386144cb8ce16dc80ed1ad7bf3c03d55&v=4" width="100px;" alt=""/><br /><sub><b>Federico Guerinoni</b></sub></a></td>
<td align="center"><a href="https://github.com/moitias?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1009280?v=4" width="100px;" alt=""/><br /><sub><b>Matias Lahti</b></sub></a></td>
<td align="center"><a href="http://vasyharan.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/588211?v=4" width="100px;" alt=""/><br /><sub><b>Thirukumaran Vaseeharan</b></sub></a></td>
<td align="center"><a href="https://www.asscrypto.co?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/229356?u=5ca849f65f44b8583f7a185797565043452ebf4e&v=4" width="100px;" alt=""/><br /><sub><b>Alessio Treglia</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/alaypatel07?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8192650?u=f59ac46c01927d4d5bdae29ee6160149a7558069&v=4" width="100px;" alt=""/><br /><sub><b>Alay Patel</b></sub></a></td>
<td align="center"><a href="https://funloop.org/about?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/725613?u=4678351c405e5ee2927008690d6bc84541dcc9ac&v=4" width="100px;" alt=""/><br /><sub><b>Linus Arver</b></sub></a></td>
<td align="center"><a href="https://github.com/mhutchinson?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1355668?u=87eff9e8bf3d147ef362b2c7d6978b2a2d8041f5&v=4" width="100px;" alt=""/><br /><sub><b>Martin Hutchinson</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/l0nax?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/29659953?u=01b40c160e224232fe42bf4c4c3c2051bfd2b82c&v=4" width="100px;" alt=""/><br /><sub><b>Emanuel Bennici</b></sub></a></td>
<td align="center"><a href="https://mayo.rocks?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/35420264?u=c68292fbb19178c6f5979f4b4614e8a651e7f1aa&v=4" width="100px;" alt=""/><br /><sub><b>Mayo</b></sub></a></td>
<td align="center"><a href="https://blog.smantic.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7060982?u=be529f231723b2461e0bdc2a7fcf5dc189ce4c23&v=4" width="100px;" alt=""/><br /><sub><b>smantic</b></sub></a></td>
<td align="center"><a href="https://github.com/seabass-labrax?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/79224200?u=541b22b8049db773682106f58aa1d556d4e541bf&v=4" width="100px;" alt=""/><br /><sub><b>Sebastian Crane</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://else.id.au?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/165789?v=4" width="100px;" alt=""/><br /><sub><b>Alexander Else</b></sub></a></td>
<td align="center"><a href="https://brrrrr.at?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/4353513?u=fa4b0c7b09a4aef658627da23f4cba289f4b5f0c&v=4" width="100px;" alt=""/><br /><sub><b>@vladopajic</b></sub></a></td>
<td align="center"><a href="https://github.com/oxr463?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/43783393?u=fd04db6e8e67ee0c63bcf9a42d550aba1eb05145&v=4" width="100px;" alt=""/><br /><sub><b>@oxr463</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://blog.trim21.me/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/13553903?u=3cadf0f02095c9621aa29df6875f53a80ca4fbfb&v=4" width="100px;" alt=""/><br /><sub><b>Trim21</b></sub></a></td>
<td align="center"><a href="https://github.com/eiffel-fl?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/12171754?v=4" width="100px;" alt=""/><br /><sub><b>@eiffel-fl</b></sub></a></td>
<td align="center"><a href="https://code.pfad.fr?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3864879?u=70c94404649e7e9b5da90e229019f5a4c8fd5f05&v=4" width="100px;" alt=""/><br /><sub><b>@oliverpool</b></sub></a></td>
<td align="center"><a href="https://github.com/Ak-Army?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6526354?v=4" width="100px;" alt=""/><br /><sub><b>@Ak-Army</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/humancalico?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/51334444?u=f48686616772acc6d33b1c047c0527a11879a1e7&v=4" width="100px;" alt=""/><br /><sub><b>@humancalico</b></sub></a></td>
<td align="center"><a href="https://github.com/cclauss?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3709715?u=0745d1d2473894c33f3b35f0b965d71cc9aec553&v=4" width="100px;" alt=""/><br /><sub><b>Christian Clauss</b></sub></a></td>
<td align="center"><a href="https://liebermann.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/14969425?u=40c13a3fe4886c0c8a9a4a53531de8c0753f1e2f&v=4" width="100px;" alt=""/><br /><sub><b>Johanan Liebermann</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://gravatar.com/korjavin?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/148765?v=4" width="100px;" alt=""/><br /><sub><b>Korjavin Ivan</b></sub></a></td>
<td align="center"><a href="https://github.com/Juneezee?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/20135478?u=315cb4e73533322273d7265ad0fc370c9f89e322&v=4" width="100px;" alt=""/><br /><sub><b>Eng Zer Jun</b></sub></a></td>
<td align="center"><a href="https://github.com/ezradiniz?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/19827734?u=da300cc19c86aa7c83564e391fcc0a7149d0043f&v=4" width="100px;" alt=""/><br /><sub><b>Mateus Esdras</b></sub></a></td>
<td align="center"><a href="https://devingunay.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/16074091?u=da6d24c8adaba95b24dbf5cccdf1f332153d6be5&v=4" width="100px;" alt=""/><br /><sub><b>Devin Gunay</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/hilariocoelho?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5185271?u=fa0d307b0fed0ca59e2d6976939336917e95410c&v=4" width="100px;" alt=""/><br /><sub><b>Hilário Coelho</b></sub></a></td>
<td align="center"><a href="https://github.com/caveman280?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/26064434?u=7328a88324be832a899fe80806d762bc0e46c4a2&v=4" width="100px;" alt=""/><br /><sub><b>Thomas Cave</b></sub></a></td>
<td align="center"><a href="http://selimcancaba.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7759682?u=7046d19e54208dc709003d7c547f80f5a0956398&v=4" width="100px;" alt=""/><br /><sub><b>Selim Can CABA</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/t-botz?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/693797?u=468a4c6ce6cef6842f9478e13fca4e878d5487ba&v=4" width="100px;" alt=""/><br /><sub><b>Tibo Delor</b></sub></a></td>
<td align="center"><a href="https://github.com/chainchad?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/96362174?v=4" width="100px;" alt=""/><br /><sub><b>@chainchad</b></sub></a></td>
<td align="center"><a href="https://github.com/francoispqt?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/24575934?u=afb7942a02e997bd463a3b99ca9b309b54e0f249&v=4" width="100px;" alt=""/><br /><sub><b>Francois Parquet</b></sub></a></td>
<td align="center"><a href="http://23doors.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1051101?u=92cef9a943a64f6ec3d0c6b08e1f3de4b41b5d7c&v=4" width="100px;" alt=""/><br /><sub><b>Robert Kopaczewski</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://marctuduri.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/280193?u=2a661a76d6d746ec518ac7a31985a59484a34e5e&v=4" width="100px;" alt=""/><br /><sub><b>Marc Tudurí</b></sub></a></td>
<td align="center"><a href="https://github.com/pohang?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/19980697?v=4" width="100px;" alt=""/><br /><sub><b>@pohang</b></sub></a></td>
<td align="center"><a href="https://searace.org?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3671279?u=b17ab8bf511d39c29bf43d0a3878808ea8417bde&v=4" width="100px;" alt=""/><br /><sub><b>Cyrille Meichel</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/neglect-yp?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/20413543?v=4" width="100px;" alt=""/><br /><sub><b>neglect-yp</b></sub></a></td>
<td align="center"><a href="https://github.com/fpuc?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1822814?u=b1a59627064d62c912386a21ae13d33c5ef0c622&v=4" width="100px;" alt=""/><br /><sub><b>Felix</b></sub></a></td>
<td align="center"><a href="https://github.com/abustany?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2526296?v=4" width="100px;" alt=""/><br /><sub><b>Adrien</b></sub></a></td>
<td align="center"><a href="https://github.com/josephbergevin?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/2521874?v=4" width="100px;" alt=""/><br /><sub><b>Joe Bergevin</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://axetroy.xyz?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9758711?u=d306c2695c119ab9a21dbed1ef717b5687b848f9&v=4" width="100px;" alt=""/><br /><sub><b>Axetroy</b></sub></a></td>
<td align="center"><a href="https://github.com/guillaumeio?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/98314376?v=4" width="100px;" alt=""/><br /><sub><b>Guillaume JG</b></sub></a></td>
<td align="center"><a href="https://github.com/ecordell?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/58055?v=4" width="100px;" alt=""/><br /><sub><b>Evan Cordell</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://uosblog.top?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/60995091?v=4" width="100px;" alt=""/><br /><sub><b>靳灿奇</b></sub></a></td>
<td align="center"><a href="https://github.com/katsadim?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/16381881?u=0527237d20283e1a48a81c5355b03727960dba80&v=4" width="100px;" alt=""/><br /><sub><b>Nassos Kat</b></sub></a></td>
<td align="center"><a href="https://www.hitzhangjie.pro?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3725760?u=86a1d275a1bb305684adfda0dec994eafadb1088&v=4" width="100px;" alt=""/><br /><sub><b>hitzhangjie</b></sub></a></td>
<td align="center"><a href="https://donatstudios.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/133747?u=ac894e3102c619c6efdcbc7eb5f9bc8f9e2fd1ad&v=4" width="100px;" alt=""/><br /><sub><b>Jesse Donat</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://www.linkedin.com/in/olegshparber/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/714940?u=5f6e90f5fc7c308bd96a8819c71038abebe3352c&v=4" width="100px;" alt=""/><br /><sub><b>Oleg Shparber</b></sub></a></td>
<td align="center"><a href="https://github.com/kraashen?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/142790925?v=4" width="100px;" alt=""/><br /><sub><b>Tomi Juntunen</b></sub></a></td>
<td align="center"><a href="https://github.com/mdonkers?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/954721?u=4becc84d0b69171446622a05bef514a64f576989&v=4" width="100px;" alt=""/><br /><sub><b>Miel Donkers</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/marcciosilva?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7085857?v=4" width="100px;" alt=""/><br /><sub><b>Marccio Silva</b></sub></a></td>
<td align="center"><a href="https://bare.id/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1145424?u=7b384a9e5634ea6f2926d1dbbf1e25faadec99af&v=4" width="100px;" alt=""/><br /><sub><b>Bastian</b></sub></a></td>
<td align="center"><a href="https://github.com/tigrato?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3629062?v=4" width="100px;" alt=""/><br /><sub><b>Tiago Silva</b></sub></a></td>
<td align="center"><a href="https://lufia.org/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1784379?u=566ae0173c29e10d545c1bdd122d6e538a4d7060&v=4" width="100px;" alt=""/><br /><sub><b>KADOTA, Kyohei</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/conorevans?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/43791257?u=8e19a809efd17b6fd87f6389fca64478962fd3a4&v=4" width="100px;" alt=""/><br /><sub><b>Conor Evans</b></sub></a></td>
<td align="center"><a href="https://aniforprez.dev/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/993132?u=c2b88e3ae6d31be69031a2561a6e4759dfb9b723&v=4" width="100px;" alt=""/><br /><sub><b>Anirudh Sylendranath</b></sub></a></td>
<td align="center"><a href="https://github.com/jumpeiMano?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6240874?u=779a2ed4b4ddd4117bac58c315013f6b7df7f50a&v=4" width="100px;" alt=""/><br /><sub><b>@jumpeiMano</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/alexal?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/499857?u=1232f06a22fd0b98f3e43d1eaeab061015404cc8&v=4" width="100px;" alt=""/><br /><sub><b>Alex Rodin</b></sub></a></td>
<td align="center"><a href="https://keybase.io/guggero?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1008879?u=2c337f92b7dbc69b8aaff7885926f2bc1865db0d&v=4" width="100px;" alt=""/><br /><sub><b>Oliver Gugger</b></sub></a></td>
<td align="center"><a href="https://github.com/Bryan1041?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/16910401?u=c4be6e64e5aa2b169dd0d770b6a4bc857806877b&v=4" width="100px;" alt=""/><br /><sub><b>Bryan Andrews</b></sub></a></td>
<td align="center"><a href="https://github.com/TomerJLevy?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/22237259?v=4" width="100px;" alt=""/><br /><sub><b>@TomerJLevy</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://titovcode.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/29011926?u=02af86afadc2e926192c3d59125e3247d8f0507d&v=4" width="100px;" alt=""/><br /><sub><b>Dmitry Titov</b></sub></a></td>
<td align="center"><a href="https://titovcode.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/29011926?u=5f3ddb7373001ec086fe3d79e89a4a79253ba007&v=4" width="100px;" alt=""/><br /><sub><b>Dmitry Titov</b></sub></a></td>
<td align="center"><a href="https://github.com/tgorham4?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/83597118?u=89faed89471e89fedb7e302b479ec61b1427e87d&v=4" width="100px;" alt=""/><br /><sub><b>Thomas Gorham</b></sub></a></td>
<td align="center"><a href="https://github.com/weijiangan?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6372144?u=6a8a13854375e531dca35bfbd67d37aeabb3a43a&v=4" width="100px;" alt=""/><br /><sub><b>Wei Jian Gan</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://mastodon.green/@tgulacsi?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/256074?v=4" width="100px;" alt=""/><br /><sub><b>Tamás Gulácsi</b></sub></a></td>
<td align="center"><a href="https://jackwilsdon.me?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1843197?u=0e5b9858f4ded98ffe7dfbbe9f5e4315cd597cd8&v=4" width="100px;" alt=""/><br /><sub><b>Jack Wilsdon</b></sub></a></td>
<td align="center"><a href="https://github.com/Gobonoid?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/15029578?u=7fed21f2429bdca932dd55a69c8ec0ee36e772a2&v=4" width="100px;" alt=""/><br /><sub><b>Michał Suchwałko</b></sub></a></td>
<td align="center"><a href="https://github.com/aLekSer?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5626814?u=f23f71d0b298f243de664879d949af6b808b1017&v=4" width="100px;" alt=""/><br /><sub><b>Alexander Apalikov</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://git.sr.ht/~domust?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/54954739?v=4" width="100px;" alt=""/><br /><sub><b>Domas Tamašauskas</b></sub></a></td>
<td align="center"><a href="https://iomelette.fr?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7288655?u=c340284bba9db0444293d7f48e7f8ce2f33db653&v=4" width="100px;" alt=""/><br /><sub><b>Stéphane Chausson</b></sub></a></td>
<td align="center"><a href="https://plus.google.com/u/0/104675305010518579165?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/1690210?u=152b7c1086a84a7e756d35c3c71767ed676ed4f8&v=4" width="100px;" alt=""/><br /><sub><b>neo_sli</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/srdhoni?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/20898452?v=4" width="100px;" alt=""/><br /><sub><b>@srdhoni</b></sub></a></td>
<td align="center"><a href="https://github.com/derekhuizhang?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/25254181?u=6b04fc6b2c6eb2f9cfd931b269336b92ac7209bc&v=4" width="100px;" alt=""/><br /><sub><b>@derekhuizhang</b></sub></a></td>
<td align="center"><a href="https://takaokanbe.github.io?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/62293842?u=133729b3a223773ec0bffa861f29a63ebe474675&v=4" width="100px;" alt=""/><br /><sub><b>takaokanbe</b></sub></a></td>
<td align="center"><a href="https://github.com/seanschneeweiss?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6184685?u=f9a0f1e38457a5d2bd0a2e707676dc0fcea1d054&v=4" width="100px;" alt=""/><br /><sub><b>Sean Schneeweiss</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/pkprzekwas?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/9121459?u=56fad5cbf6e8bead6088d0099122f9739b714bde&v=4" width="100px;" alt=""/><br /><sub><b>pprzekwas</b></sub></a></td>
<td align="center"><a href="https://github.com/madflow?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/183248?v=4" width="100px;" alt=""/><br /><sub><b>madflow</b></sub></a></td>
<td align="center"><a href="https://t.me/armantarkhanian?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/72862404?u=74bfc1f008f3a10d8a44b889dfcd7cfb1000e4fa&v=4" width="100px;" alt=""/><br /><sub><b>Arman Tarkhanian</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/adlerjohn?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3290375?u=c0b3688f4e6dbed1eef0652efadca3ed286021bf&v=4" width="100px;" alt=""/><br /><sub><b>John Adler</b></sub></a></td>
<td align="center"><a href="https://github.com/licraft2019?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/48341058?v=4" width="100px;" alt=""/><br /><sub><b>@licraft2019</b></sub></a></td>
<td align="center"><a href="https://github.com/mlueckest?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/86692752?v=4" width="100px;" alt=""/><br /><sub><b>@mlueckest</b></sub></a></td>
<td align="center"><a href="https://github.com/malteehrlen?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/42444300?v=4" width="100px;" alt=""/><br /><sub><b>Malte Ehrlen</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/golangaccount?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/7640666?v=4" width="100px;" alt=""/><br /><sub><b>@golangaccount</b></sub></a></td>
<td align="center"><a href="https://tylerdorn.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5892788?u=81a2dc22cf91ffc7bb27b66217482dd991b7ddee&v=4" width="100px;" alt=""/><br /><sub><b>Tyler Dorn</b></sub></a></td>
<td align="center"><a href="https://enmanuelmoreira.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/152518?u=8351b36570865a63908aa012fd63e873b17cf123&v=4" width="100px;" alt=""/><br /><sub><b>Enmanuel Moreira</b></sub></a></td>
<td align="center"><a href="https://abstraction.fr/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/153052?v=4" width="100px;" alt=""/><br /><sub><b>Sylvain Rabot</b></sub></a></td>
<td align="center"><a href="https://www.piotrpersona.com/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/29518241?u=399c29ad144ce7c53ec4b5b16b82100a51ae7882&v=4" width="100px;" alt=""/><br /><sub><b>Piotr Persona</b></sub></a></td>
<td align="center"><a href="http://kangssu.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3623889?v=4" width="100px;" alt=""/><br /><sub><b>Han Gyoung-Su</b></sub></a></td>
<td align="center"><a href="https://github.com/HarryTennent?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/71338309?u=776731bfbe0a8f8116ea19fbf50c8e1927456740&v=4" width="100px;" alt=""/><br /><sub><b>Harry Tennent</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://abstraction.fr/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/153052?v=4" width="100px;" alt=""/><br /><sub><b>Sylvain Rabot</b></sub></a></td>
<td align="center"><a href="https://www.piotrpersona.com/?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/29518241?u=399c29ad144ce7c53ec4b5b16b82100a51ae7882&v=4" width="100px;" alt=""/><br /><sub><b>Piotr Persona</b></sub></a></td>
<td align="center"><a href="https://kangssu.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/3623889?u=9978d5a5eeddc11199db9d0b58174d6c88d2a95a&v=4" width="100px;" alt=""/><br /><sub><b>Han Gyoung-Su</b></sub></a></td>
<td align="center"><a href="https://github.com/HarryTennent?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/71338309?u=776731bfbe0a8f8116ea19fbf50c8e1927456740&v=4" width="100px;" alt=""/><br /><sub><b>Harry Tennent</b></sub></a></td>
<td align="center"><a href="https://k.mirzavaziri.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/33681886?u=fe1cd9a3b2e3b4fd8dd1ec1ed5d72d2ebc7c20d3&v=4" width="100px;" alt=""/><br /><sub><b>Kamyar Mirzavaziri</b></sub></a></td>
<td align="center"><a href="https://github.com/w1ck3dg0ph3r?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/10450851?v=4" width="100px;" alt=""/><br /><sub><b>@w1ck3dg0ph3r</b></sub></a></td>
<td align="center"><a href="https://github.com/yuhrichard?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/149437554?v=4" width="100px;" alt=""/><br /><sub><b>Richard Yuh</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://www.oscs1024.com/usr/1503957948160806912?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/101684156?u=e569df7c7e957e9daf22abc7c7829b9cf2613593&v=4" width="100px;" alt=""/><br /><sub><b>caption</b></sub></a></td>
<td align="center"><a href="https://github.com/goodfirm?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/166383463?u=f31bbc6f1993bf1f1b4b7ea003c8c7dee8fc6ef9&v=4" width="100px;" alt=""/><br /><sub><b>Yi Song</b></sub></a></td>
<td align="center"><a href="https://github.com/testwill?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/8717479?v=4" width="100px;" alt=""/><br /><sub><b>guoguangwu</b></sub></a></td>
<td align="center"><a href="https://gitlab.com/artemk1337?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/51025000?u=33978463a0928ad98456ccb7cc9c2b394bfe52b2&v=4" width="100px;" alt=""/><br /><sub><b>Artem K</b></sub></a></td>
<td align="center"><a href="https://raidancampbell.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5506073?v=4" width="100px;" alt=""/><br /><sub><b>R. Aidan Campbell</b></sub></a></td>
<td align="center"><a href="https://github.com/podtserkovskiy?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/12721466?u=4fadc8233be10f97061321d90f66b3ab18636353&v=4" width="100px;" alt=""/><br /><sub><b>Mikhail Podtserkovskiy</b></sub></a></td>
<td align="center"><a href="https://github.com/oz-dev-v0?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/27802183?u=33572dd5a19b337365cb053df0dc73e3efe651d8&v=4" width="100px;" alt=""/><br /><sub><b>oz</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://raidancampbell.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/5506073?v=4" width="100px;" alt=""/><br /><sub><b>R. Aidan Campbell</b></sub></a></td>
<td align="center"><a href="https://blog.webstra.dev?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/82543732?u=cbf493a4251d5e9d309abaa961832c3954ee9da8&v=4" width="100px;" alt=""/><br /><sub><b>Erik Westra</b></sub></a></td>
<td align="center"><a href="https://github.com/tbonfort?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/358469?u=bf6e92907c9f7b5f37221ac32fc72bff90ba683c&v=4" width="100px;" alt=""/><br /><sub><b>Thomas Bonfort</b></sub></a></td>
<td align="center"><a href="https://github.com/mmorel-35?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/6032561?u=951551f72320f1d46dc7db517c3ad0ab1b771974&v=4" width="100px;" alt=""/><br /><sub><b>Matthieu MOREL</b></sub></a></td>
<td align="center"><a href="http://jared.szechy.com?utm_source=golangci-lint-contributors"><img src="https://avatars.githubusercontent.com/u/847739?v=4" width="100px;" alt=""/><br /><sub><b>Jared Szechy</b></sub></a></td>

File diff suppressed because one or more lines are too long

@ -1,8 +1,8 @@
{
"MinorVersionToConfig": {
"latest": {
"TargetVersion": "v1.60.3",
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.60.3/golangci-lint-1.60.3-linux-amd64.tar.gz"
"TargetVersion": "v1.61.0",
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.61.0/golangci-lint-1.61.0-linux-amd64.tar.gz"
},
"v1.10": {
"Error": "golangci-lint version 'v1.10' isn't supported: we support only v1.14.0 and later versions"
@ -216,6 +216,10 @@
"TargetVersion": "v1.60.3",
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.60.3/golangci-lint-1.60.3-linux-amd64.tar.gz"
},
"v1.61": {
"TargetVersion": "v1.61.0",
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.61.0/golangci-lint-1.61.0-linux-amd64.tar.gz"
},
"v1.7": {
"Error": "golangci-lint version 'v1.7' isn't supported: we support only v1.14.0 and later versions"
},

@ -319,7 +319,7 @@
},
{
"name": "fatcontext",
"desc": "detects nested contexts in loops",
"desc": "detects nested contexts in loops and function literals",
"loadMode": 575,
"inPresets": [
"performance"
@ -759,7 +759,7 @@
],
"originalURL": "https://github.com/ckaznocha/intrange",
"internal": false,
"isSlow": false,
"isSlow": true,
"since": "v1.57.0"
},
{
@ -1386,7 +1386,7 @@
"inPresets": [
"style"
],
"originalURL": "https://github.com/golangci/golangci-lint/blob/master/pkg/golinters/nolintlint/README.md",
"originalURL": "https://github.com/golangci/golangci-lint/tree/master/pkg/golinters/nolintlint/internal",
"internal": false,
"canAutoFix": true,
"isSlow": false,

1211
docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -175,3 +175,18 @@ Some exclusions are considered as common, to help golangci-lint users those comm
If you don't want to use it you can set `issues.exclude-use-default` to `false`.
{.DefaultExclusions}
### Default Directory Exclusions
By default, the reports from directory names, that match the following regular expressions, are excluded:
- `third_party$`
- `examples$`
- `Godeps$`
- `builtin$`
This option has been defined when Go modules was not existed and when the golangci-lint core was different, this is not something we still recommend.
At some point, we will remove all those obsolete exclusions, but as it's a breaking changes it will only happen inside a major version.
So we recommend setting `issues.exclude-dirs-use-default` to `false`.

@ -6,6 +6,11 @@ title: FAQ
The same as the Go team (the 2 latest minor versions).
Basically, golangci-lint supports Go versions lower or equal to the Go version used to compile it.
New versions of Go are not automatically supported because, in addition of the Go version used to build it,
some linters and/or internal pieces of golangci-lint could need to be adapted to support this new Go version.
## How to use `golangci-lint` in CI
Run `golangci-lint` in CI and check the exit code. If it's non-zero - fail the build.

@ -132,31 +132,26 @@ Colored output:
docker run -t --rm -v $(pwd):/app -w /app golangci/golangci-lint:{.LatestVersion} golangci-lint run -v
```
### Install from Source
### Install from Sources
Note: such `go install`/`go get` installation aren't guaranteed to work. We recommend using binary installation.
Such `go install`/`go get` or "tools pattern" installations aren't guaranteed to work.
<details>
<summary>Why?</summary>
We recommend using binary installation.
`go install`/`go get` installation isn't recommended because of the following points:
Those installations aren't recommended because of the following points:
1. Some users use `-u` flag for `go get`, which upgrades our dependencies. Resulting configuration wasn't tested and isn't guaranteed to work.
2. [`go.mod`](https://github.com/golangci/golangci-lint/blob/master/go.mod) replacement directive doesn't apply. It means a user will be using patched version of `golangci-lint` if we use such replacements.
3. We've encountered a lot of issues with Go modules hashes.
4. It allows installation from `master` branch which can't be considered stable.
5. It's slower than binary installation.
</details>
<div style="margin-top: 2em;">
1. Those installations are compiling golangci-lint locally, the Go version used to build will depend on your local Go version.
2. Some users use `-u` flag for `go get`, which upgrades our dependencies. Resulting binary was not tested and is not guaranteed to work.
3. When using "tools pattern", the dependencies of a tool can modify the dependencies of another. Resulting binary was not tested and is not guaranteed to work.
4. We've encountered issues with Go modules hashes due to unexpected recreation of dependency tags.
5. `go.mod` replacement directives don't apply transitively. It means a user will be using patched version of `golangci-lint` if we use such replacements.
6. It allows installation from main branch which can't be considered stable.
7. It's slower than binary installation.
```sh
go install github.com/golangci/golangci-lint/cmd/golangci-lint@{.LatestVersion}
```
</div>
## Next
[Quick Start: how to use `golangci-lint`](/welcome/quick-start/).

39
go.mod

@ -6,16 +6,16 @@ require (
4d63.com/gocheckcompilerdirectives v1.2.1
4d63.com/gochecknoglobals v0.2.1
github.com/4meepo/tagalign v1.3.4
github.com/Abirdcfly/dupword v0.1.1
github.com/Antonboom/errname v0.1.13
github.com/Antonboom/nilnil v0.1.9
github.com/Antonboom/testifylint v1.4.3
github.com/Abirdcfly/dupword v0.1.3
github.com/Antonboom/errname v1.0.0
github.com/Antonboom/nilnil v1.0.0
github.com/Antonboom/testifylint v1.5.0
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c
github.com/Crocmagnon/fatcontext v0.5.2
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0
github.com/OpenPeeDeeP/depguard/v2 v2.2.0
github.com/alecthomas/go-check-sumtype v0.1.4
github.com/alecthomas/go-check-sumtype v0.2.0
github.com/alexkohler/nakedret/v2 v2.0.4
github.com/alexkohler/prealloc v1.0.0
github.com/alingse/asasalint v0.0.11
@ -24,22 +24,22 @@ require (
github.com/bkielbasa/cyclop v1.2.1
github.com/blizzy78/varnamelen v0.8.0
github.com/bombsimon/wsl/v4 v4.4.1
github.com/breml/bidichk v0.2.7
github.com/breml/errchkjson v0.3.6
github.com/breml/bidichk v0.3.1
github.com/breml/errchkjson v0.4.0
github.com/butuzov/ireturn v0.3.0
github.com/butuzov/mirror v1.2.0
github.com/catenacyber/perfsprint v0.7.1
github.com/charithe/durationcheck v0.0.10
github.com/ckaznocha/intrange v0.2.0
github.com/ckaznocha/intrange v0.2.1
github.com/curioswitch/go-reassign v0.2.0
github.com/daixiang0/gci v0.13.5
github.com/denis-tingaikin/go-header v0.5.0
github.com/fatih/color v1.17.0
github.com/firefart/nonamedreturns v1.0.5
github.com/fzipp/gocyclo v0.6.0
github.com/ghostiam/protogetter v0.3.6
github.com/go-critic/go-critic v0.11.4
github.com/go-viper/mapstructure/v2 v2.1.0
github.com/ghostiam/protogetter v0.3.8
github.com/go-critic/go-critic v0.11.5
github.com/go-viper/mapstructure/v2 v2.2.1
github.com/go-xmlfmt/xmlfmt v1.1.2
github.com/gofrs/flock v0.12.1
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a
@ -75,7 +75,7 @@ require (
github.com/maratori/testpackage v1.1.1
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26
github.com/mattn/go-colorable v0.1.13
github.com/mgechev/revive v1.3.9
github.com/mgechev/revive v1.4.0
github.com/mitchellh/go-homedir v1.1.0
github.com/mitchellh/go-ps v1.0.0
github.com/moricho/tparallel v0.3.2
@ -86,19 +86,20 @@ require (
github.com/pelletier/go-toml/v2 v2.2.3
github.com/polyfloyd/go-errorlint v1.6.0
github.com/quasilyte/go-ruleguard/dsl v0.3.22
github.com/raeperd/recvcheck v0.1.2
github.com/ryancurrah/gomodguard v1.3.5
github.com/ryanrolds/sqlclosecheck v0.5.1
github.com/sanposhiho/wastedassign/v2 v2.0.7
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1
github.com/sashamelentyev/interfacebloat v1.1.0
github.com/sashamelentyev/usestdlibvars v1.27.0
github.com/securego/gosec/v2 v2.21.2
github.com/securego/gosec/v2 v2.21.4
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c
github.com/shirou/gopsutil/v3 v3.24.5
github.com/sirupsen/logrus v1.9.3
github.com/sivchari/containedctx v1.0.3
github.com/sivchari/tenv v1.10.0
github.com/sonatard/noctx v0.0.2
github.com/sonatard/noctx v0.1.0
github.com/sourcegraph/go-diff v0.7.0
github.com/spf13/cobra v1.8.1
github.com/spf13/pflag v1.0.5
@ -107,7 +108,7 @@ require (
github.com/stbenjam/no-sprintf-host-port v0.1.1
github.com/stretchr/testify v1.9.0
github.com/tdakkota/asciicheck v0.2.0
github.com/tetafro/godot v1.4.17
github.com/tetafro/godot v1.4.18
github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966
github.com/timonwong/loggercheck v0.9.4
github.com/tomarrell/wrapcheck/v2 v2.9.0
@ -123,9 +124,9 @@ require (
gitlab.com/bosi/decorder v0.4.2
go-simpler.org/musttag v0.12.2
go-simpler.org/sloglint v0.7.2
go.uber.org/automaxprocs v1.5.3
golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e
golang.org/x/tools v0.24.0
go.uber.org/automaxprocs v1.6.0
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0
golang.org/x/tools v0.26.0
gopkg.in/yaml.v3 v3.0.1
honnef.co/go/tools v0.5.1
mvdan.cc/gofumpt v0.7.0
@ -191,7 +192,7 @@ require (
golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f // indirect
golang.org/x/mod v0.21.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/sys v0.26.0 // indirect
golang.org/x/text v0.18.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect

82
go.sum generated

@ -37,14 +37,14 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8=
github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0=
github.com/Abirdcfly/dupword v0.1.1 h1:Bsxe0fIw6OwBtXMIncaTxCLHYO5BB+3mcsR5E8VXloY=
github.com/Abirdcfly/dupword v0.1.1/go.mod h1:B49AcJdTYYkpd4HjgAcutNGG9HZ2JWwKunH9Y2BA6sM=
github.com/Antonboom/errname v0.1.13 h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM=
github.com/Antonboom/errname v0.1.13/go.mod h1:uWyefRYRN54lBg6HseYCFhs6Qjcy41Y3Jl/dVhA87Ns=
github.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ=
github.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ=
github.com/Antonboom/testifylint v1.4.3 h1:ohMt6AHuHgttaQ1xb6SSnxCeK4/rnK7KKzbvs7DmEck=
github.com/Antonboom/testifylint v1.4.3/go.mod h1:+8Q9+AOLsz5ZiQiiYujJKs9mNz398+M6UgslP4qgJLA=
github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE=
github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw=
github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA=
github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI=
github.com/Antonboom/nilnil v1.0.0 h1:n+v+B12dsE5tbAqRODXmEKfZv9j2KcTBrp+LkoM4HZk=
github.com/Antonboom/nilnil v1.0.0/go.mod h1:fDJ1FSFoLN6yoG65ANb1WihItf6qt9PJVTn/s2IrcII=
github.com/Antonboom/testifylint v1.5.0 h1:dlUIsDMtCrZWUnvkaCz3quJCoIjaGi41GzjPBGkkJ8A=
github.com/Antonboom/testifylint v1.5.0/go.mod h1:wqaJbu0Blb5Wag2wv7Z5xt+CIV+eVLxtGZrlK13z3AE=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs=
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
@ -61,8 +61,8 @@ github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJP
github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ=
github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk=
github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=
github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c=
github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ=
github.com/alecthomas/go-check-sumtype v0.2.0 h1:Bo+e4DFf3rs7ME9w/0SU/g6nmzJaphduP8Cjiz0gbwY=
github.com/alecthomas/go-check-sumtype v0.2.0/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ=
github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
@ -92,10 +92,10 @@ github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
github.com/bombsimon/wsl/v4 v4.4.1 h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw=
github.com/bombsimon/wsl/v4 v4.4.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo=
github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY=
github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ=
github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA=
github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U=
github.com/breml/bidichk v0.3.1 h1:mm0l1NVE6lhaF4GUI8wX6TRV+e9kyHSvtA1wSG3nDqU=
github.com/breml/bidichk v0.3.1/go.mod h1:Qo0jQtZkQYyArvHxFXxNmaioxJRgfnSo6UirDTaAJL4=
github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk=
github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8=
github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0=
github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA=
github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs=
@ -115,8 +115,8 @@ github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+U
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/ckaznocha/intrange v0.2.0 h1:FykcZuJ8BD7oX93YbO1UY9oZtkRbp+1/kJcDjkefYLs=
github.com/ckaznocha/intrange v0.2.0/go.mod h1:r5I7nUlAAG56xmkOpw4XVr16BXhwYTUdcuRFeevn1oE=
github.com/ckaznocha/intrange v0.2.1 h1:M07spnNEQoALOJhwrImSrJLaxwuiQK+hA2DeajBlwYk=
github.com/ckaznocha/intrange v0.2.1/go.mod h1:7NEhVyf8fzZO5Ds7CRaqPEm52Ut83hsTiL5zbER/HYk=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
@ -147,10 +147,10 @@ github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwV
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
github.com/ghostiam/protogetter v0.3.6 h1:R7qEWaSgFCsy20yYHNIJsU9ZOb8TziSRRxuAOTVKeOk=
github.com/ghostiam/protogetter v0.3.6/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw=
github.com/go-critic/go-critic v0.11.4 h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU=
github.com/go-critic/go-critic v0.11.4/go.mod h1:2QAdo4iuLik5S9YG0rT4wcZ8QxwHYkrr6/2MWAiv/vc=
github.com/ghostiam/protogetter v0.3.8 h1:LYcXbYvybUyTIxN2Mj9h6rHrDZBDwZloPoKctWrFyJY=
github.com/ghostiam/protogetter v0.3.8/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA=
github.com/go-critic/go-critic v0.11.5 h1:TkDTOn5v7EEngMxu8KbuFqFR43USaaH8XRJLz1jhVYA=
github.com/go-critic/go-critic v0.11.5/go.mod h1:wu6U7ny9PiaHaZHcvMDmdysMqvDem162Rh3zWTrqk8M=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@ -188,8 +188,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi
github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=
github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=
github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=
github.com/go-viper/mapstructure/v2 v2.1.0 h1:gHnMa2Y/pIxElCH2GlZZ1lZSsn6XMtufpGyP1XxdC/w=
github.com/go-viper/mapstructure/v2 v2.1.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U=
github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
@ -372,8 +372,8 @@ github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/Qd
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mgechev/revive v1.3.9 h1:18Y3R4a2USSBF+QZKFQwVkBROUda7uoBlkEuBD+YD1A=
github.com/mgechev/revive v1.3.9/go.mod h1:+uxEIr5UH0TjXWHTno3xh4u7eg6jDpXKzQccA9UGhHU=
github.com/mgechev/revive v1.4.0 h1:+6LDNE1XKsUCkpuDOMrzjOsXqiQOZ/jPlscLyA6mMXw=
github.com/mgechev/revive v1.4.0/go.mod h1:uzGR6feiCiJi4oND58/KMt/lEnR5vmjzRYPZiR0sQRQ=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
@ -458,6 +458,8 @@ github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ=
github.com/raeperd/recvcheck v0.1.2 h1:SjdquRsRXJc26eSonWIo8b7IMtKD3OAT2Lb5G3ZX1+4=
github.com/raeperd/recvcheck v0.1.2/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
@ -474,8 +476,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI=
github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=
github.com/securego/gosec/v2 v2.21.2 h1:deZp5zmYf3TWwU7A7cR2+SolbTpZ3HQiwFqnzQyEl3M=
github.com/securego/gosec/v2 v2.21.2/go.mod h1:au33kg78rNseF5PwPnTWhuYBFf534bvJRvOrgZ/bFzU=
github.com/securego/gosec/v2 v2.21.4 h1:Le8MSj0PDmOnHJgUATjD96PaXRvCpKC+DGJvwyy0Mlk=
github.com/securego/gosec/v2 v2.21.4/go.mod h1:Jtb/MwRQfRxCXyCm1rfM1BEiiiTfUOdyzzAhlr6lUTA=
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
@ -495,8 +497,8 @@ github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+W
github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4=
github.com/sivchari/tenv v1.10.0 h1:g/hzMA+dBCKqGXgW8AV/1xIWhAvDrx0zFKNR48NFMg0=
github.com/sivchari/tenv v1.10.0/go.mod h1:tdY24masnVoZFxYrHv/nD6Tc8FbkEtAQEEziXpyMgqY=
github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00=
github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo=
github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM=
github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c=
github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
@ -539,8 +541,8 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
github.com/tetafro/godot v1.4.17 h1:pGzu+Ye7ZUEFx7LHU0dAKmCOXWsPjl7qA6iMGndsjPs=
github.com/tetafro/godot v1.4.17/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio=
github.com/tetafro/godot v1.4.18 h1:ouX3XGiziKDypbpXqShBfnNLTSjR8r3/HVzrtJ+bHlI=
github.com/tetafro/godot v1.4.18/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio=
github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M=
github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=
github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4=
@ -595,8 +597,8 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8=
go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
@ -621,8 +623,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk=
golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8=
@ -695,8 +697,8 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -775,8 +777,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@ -858,8 +860,8 @@ golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

@ -404,7 +404,6 @@
"testpackage",
"thelper",
"tparallel",
"typecheck",
"unconvert",
"unparam",
"unused",
@ -520,6 +519,7 @@
"checkstyle",
"code-climate",
"junit-xml",
"junit-xml-extended",
"github-actions",
"teamcity",
"sarif"
@ -1103,6 +1103,11 @@
"description": "Enable custom order of sections.",
"type": "boolean",
"default": false
},
"no-lex-order": {
"description": "Drops lexical ordering for custom sections.",
"type": "boolean",
"default": false
}
}
},

@ -13,18 +13,19 @@
"badLock",
"badRegexp",
"badSorting",
"badSyncOnceFunc",
"boolExprSimplify",
"builtinShadow",
"builtinShadowDecl",
"captLocal",
"caseOrder",
"codegenComment",
"commentFormatting",
"commentedOutCode",
"commentedOutImport",
"commentFormatting",
"defaultCaseOrder",
"deferUnlambda",
"deferInLoop",
"deferUnlambda",
"deprecatedComment",
"docStub",
"dupArg",
@ -67,6 +68,7 @@
"preferStringWriter",
"preferWriteByte",
"ptrToRefParam",
"rangeAppendAll",
"rangeExprCopy",
"rangeValCopy",
"redundantSprint",
@ -84,13 +86,12 @@
"sprintfQuotedString",
"sqlQuery",
"stringConcatSimplify",
"stringsCompare",
"stringXbytes",
"suspiciousSorting",
"stringsCompare",
"switchTrue",
"syncMapLoadAndDelete",
"timeCmpSimplify",
"timeExprSimplify",
"todoCommentWithoutDetail",
"tooManyResultsChecker",
"truncateCmp",
"typeAssertChain",
@ -203,6 +204,7 @@
"structtag",
"testinggoroutine",
"tests",
"timeformat",
"unmarshal",
"unreachable",
"unsafeptr",
@ -388,6 +390,7 @@
"promlinter",
"protogetter",
"reassign",
"recvcheck",
"revive",
"rowserrcheck",
"scopelint",
@ -404,7 +407,6 @@
"testpackage",
"thelper",
"tparallel",
"typecheck",
"unconvert",
"unparam",
"unused",
@ -1173,6 +1175,17 @@
}
}
},
"gochecksumtype": {
"type": "object",
"additionalProperties": false,
"properties": {
"default-signifies-exhaustive": {
"description": "Presence of `default` case in switch statements satisfies exhaustiveness, if all members are not listed.",
"type": "boolean",
"default": true
}
}
},
"gocognit": {
"type": "object",
"additionalProperties": false,
@ -2176,13 +2189,18 @@
"type": "object",
"additionalProperties": false,
"properties": {
"detect-opposite": {
"type": "boolean",
"description": "In addition, detect opposite situation (simultaneous return of non-nil error and valid value).",
"default": false
},
"checked-types": {
"type": "array",
"description": "List of return types to check.",
"items": {
"enum": ["ptr", "func", "iface", "map", "chan", "uintptr", "unsafeptr"]
"enum": ["chan", "func", "iface", "map", "ptr", "uintptr", "unsafeptr"]
},
"default": ["ptr", "func", "iface", "map", "chan", "uintptr", "unsafeptr"]
"default": ["chan", "func", "iface", "map", "ptr", "uintptr", "unsafeptr"]
}
}
},
@ -2893,7 +2911,9 @@
"blank-import",
"bool-compare",
"compares",
"contains",
"empty",
"encoded-compare",
"error-is-as",
"error-nil",
"expected-actual",
@ -2903,6 +2923,7 @@
"len",
"negative-positive",
"nil-compare",
"regexp",
"require-error",
"suite-broken-parallel",
"suite-dont-use-pkg",
@ -2916,16 +2937,19 @@
"blank-import",
"bool-compare",
"compares",
"contains",
"empty",
"encoded-compare",
"error-is-as",
"error-nil",
"expected-actual",
"float-compare",
"float-compare",
"formatter",
"go-require",
"len",
"negative-positive",
"nil-compare",
"regexp",
"require-error",
"suite-broken-parallel",
"suite-dont-use-pkg",
@ -2942,7 +2966,9 @@
"blank-import",
"bool-compare",
"compares",
"contains",
"empty",
"encoded-compare",
"error-is-as",
"error-nil",
"expected-actual",
@ -2952,6 +2978,7 @@
"len",
"negative-positive",
"nil-compare",
"regexp",
"require-error",
"suite-broken-parallel",
"suite-dont-use-pkg",

File diff suppressed because it is too large Load Diff

@ -47,6 +47,9 @@ var defaultLintersSettings = LintersSettings{
Sections: []string{"standard", "default"},
SkipGenerated: true,
},
GoChecksumType: GoChecksumTypeSettings{
DefaultSignifiesExhaustive: true,
},
Gocognit: GocognitSettings{
MinComplexity: 30,
},
@ -216,6 +219,7 @@ type LintersSettings struct {
Gci GciSettings
GinkgoLinter GinkgoLinterSettings
Gocognit GocognitSettings
GoChecksumType GoChecksumTypeSettings
Goconst GoConstSettings
Gocritic GoCriticSettings
Gocyclo GoCycloSettings
@ -485,6 +489,10 @@ type GinkgoLinterSettings struct {
ForbidSpecPollution bool `mapstructure:"forbid-spec-pollution"`
}
type GoChecksumTypeSettings struct {
DefaultSignifiesExhaustive bool `mapstructure:"default-signifies-exhaustive"`
}
type GocognitSettings struct {
MinComplexity int `mapstructure:"min-complexity"`
}
@ -725,7 +733,8 @@ type NestifSettings struct {
}
type NilNilSettings struct {
CheckedTypes []string `mapstructure:"checked-types"`
DetectOpposite bool `mapstructure:"detect-opposite"`
CheckedTypes []string `mapstructure:"checked-types"`
}
type NlreturnSettings struct {

@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"go/ast"
"go/build"
"go/parser"
"go/scanner"
"go/types"
@ -164,6 +165,7 @@ func (lp *loadingPackage) loadFromSource(loadMode LoadMode) error {
pkg.Errors = append(pkg.Errors, lp.convertError(err)...)
},
GoVersion: rv, // TODO(ldez) temporary workaround
Sizes: types.SizesFor(build.Default.Compiler, build.Default.GOARCH),
}
_ = types.NewChecker(tc, pkg.Fset, pkg.Types, pkg.TypesInfo).Files(pkg.Syntax)

@ -11,11 +11,11 @@ var (
ErrEndOfFile = errors.New("end of file")
errEndOfFile = errors.New("end of file")
EndOfFileError = errors.New("end of file") // want "the variable name `EndOfFileError` should conform to the `ErrXxx` format"
ErrorEndOfFile = errors.New("end of file") // want "the variable name `ErrorEndOfFile` should conform to the `ErrXxx` format"
EndOfFileErr = errors.New("end of file") // want "the variable name `EndOfFileErr` should conform to the `ErrXxx` format"
endOfFileError = errors.New("end of file") // want "the variable name `endOfFileError` should conform to the `errXxx` format"
errorEndOfFile = errors.New("end of file") // want "the variable name `errorEndOfFile` should conform to the `errXxx` format"
EndOfFileError = errors.New("end of file") // want "the sentinel error name `EndOfFileError` should conform to the `ErrXxx` format"
ErrorEndOfFile = errors.New("end of file") // want "the sentinel error name `ErrorEndOfFile` should conform to the `ErrXxx` format"
EndOfFileErr = errors.New("end of file") // want "the sentinel error name `EndOfFileErr` should conform to the `ErrXxx` format"
endOfFileError = errors.New("end of file") // want "the sentinel error name `endOfFileError` should conform to the `errXxx` format"
errorEndOfFile = errors.New("end of file") // want "the sentinel error name `errorEndOfFile` should conform to the `errXxx` format"
)
const maxSize = 256
@ -24,8 +24,8 @@ var (
ErrOutOfSize = fmt.Errorf("out of size (max %d)", maxSize)
errOutOfSize = fmt.Errorf("out of size (max %d)", maxSize)
OutOfSizeError = fmt.Errorf("out of size (max %d)", maxSize) // want "the variable name `OutOfSizeError` should conform to the `ErrXxx` format"
outOfSizeError = fmt.Errorf("out of size (max %d)", maxSize) // want "the variable name `outOfSizeError` should conform to the `errXxx` format"
OutOfSizeError = fmt.Errorf("out of size (max %d)", maxSize) // want "the sentinel error name `OutOfSizeError` should conform to the `ErrXxx` format"
outOfSizeError = fmt.Errorf("out of size (max %d)", maxSize) // want "the sentinel error name `outOfSizeError` should conform to the `errXxx` format"
)
func errInsideFuncIsNotSentinel() error {
@ -42,14 +42,14 @@ type DNSConfigError struct{}
func (D DNSConfigError) Error() string { return "DNS config error" }
type someTypeWithoutPtr struct{} // want "the type name `someTypeWithoutPtr` should conform to the `xxxError` format"
type someTypeWithoutPtr struct{} // want "the error type name `someTypeWithoutPtr` should conform to the `xxxError` format"
func (s someTypeWithoutPtr) Error() string { return "someTypeWithoutPtr" }
type SomeTypeWithoutPtr struct{} // want "the type name `SomeTypeWithoutPtr` should conform to the `XxxError` format"
type SomeTypeWithoutPtr struct{} // want "the error type name `SomeTypeWithoutPtr` should conform to the `XxxError` format"
func (s SomeTypeWithoutPtr) Error() string { return "SomeTypeWithoutPtr" }
type someTypeWithPtr struct{} // want "the type name `someTypeWithPtr` should conform to the `xxxError` format"
type someTypeWithPtr struct{} // want "the error type name `someTypeWithPtr` should conform to the `xxxError` format"
func (s *someTypeWithPtr) Error() string { return "someTypeWithPtr" }
type SomeTypeWithPtr struct{} // want "the type name `SomeTypeWithPtr` should conform to the `XxxError` format"
type SomeTypeWithPtr struct{} // want "the error type name `SomeTypeWithPtr` should conform to the `XxxError` format"
func (s *SomeTypeWithPtr) Error() string { return "SomeTypeWithPtr" }

@ -1,5 +1,5 @@
//golangcitest:args -Eexhaustruct
//golangcitest:config_path testdata/exhaustruct.yml
//golangcitest:config_path testdata/exhaustruct_custom.yml
package testdata
import "time"

@ -4,7 +4,7 @@ go 1.22.0
require (
github.com/onsi/ginkgo/v2 v2.20.2
github.com/onsi/gomega v1.34.1
github.com/onsi/gomega v1.34.2
)
require (
@ -12,7 +12,6 @@ require (
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 // indirect
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
golang.org/x/net v0.28.0 // indirect
golang.org/x/sys v0.24.0 // indirect
golang.org/x/text v0.17.0 // indirect

@ -10,14 +10,12 @@ github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSF
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4=
github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag=
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8=
github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=

@ -8,6 +8,7 @@ import (
"golang.org/x/tools/go/analysis"
"golang.org/x/tools/go/packages"
"github.com/golangci/golangci-lint/pkg/config"
"github.com/golangci/golangci-lint/pkg/goanalysis"
"github.com/golangci/golangci-lint/pkg/lint/linter"
"github.com/golangci/golangci-lint/pkg/result"
@ -15,7 +16,7 @@ import (
const linterName = "gochecksumtype"
func New() *goanalysis.Linter {
func New(settings *config.GoChecksumTypeSettings) *goanalysis.Linter {
var mu sync.Mutex
var resIssues []goanalysis.Issue
@ -23,7 +24,7 @@ func New() *goanalysis.Linter {
Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) {
issues, err := runGoCheckSumType(pass)
issues, err := runGoCheckSumType(pass, settings)
if err != nil {
return nil, err
}
@ -50,7 +51,7 @@ func New() *goanalysis.Linter {
}).WithLoadMode(goanalysis.LoadModeTypesInfo)
}
func runGoCheckSumType(pass *analysis.Pass) ([]goanalysis.Issue, error) {
func runGoCheckSumType(pass *analysis.Pass, settings *config.GoChecksumTypeSettings) ([]goanalysis.Issue, error) {
var resIssues []goanalysis.Issue
pkg := &packages.Package{
@ -61,7 +62,8 @@ func runGoCheckSumType(pass *analysis.Pass) ([]goanalysis.Issue, error) {
}
var unknownError error
errors := gochecksumtype.Run([]*packages.Package{pkg})
errors := gochecksumtype.Run([]*packages.Package{pkg},
gochecksumtype.Config{DefaultSignifiesExhaustive: settings.DefaultSignifiesExhaustive})
for _, err := range errors {
err, ok := err.(gochecksumtype.Error)
if !ok {

@ -29,6 +29,12 @@ func sumTypeTest() {
panic("??")
}
switch sum.(type) {
case *One:
default:
log.Println("legit catch all goes here")
}
log.Println("??")
switch sum.(type) {

@ -0,0 +1,45 @@
//golangcitest:args -Egochecksumtype
//golangcitest:config_path testdata/gochecksumtype_custom.yml
package testdata
import (
"log"
)
//sumtype:decl
type SumType interface{ isSumType() }
//sumtype:decl
type One struct{} // want "type 'One' is not an interface"
func (One) isSumType() {}
type Two struct{}
func (Two) isSumType() {}
func sumTypeTest() {
var sum SumType = One{}
switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
case One:
}
switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
case One:
default:
panic("??")
}
switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
case *One:
default:
log.Println("legit catch all goes here")
}
log.Println("??")
switch sum.(type) {
case One:
case Two:
}
}

@ -0,0 +1,3 @@
linters-settings:
gochecksumtype:
default-signifies-exhaustive: false

@ -8,6 +8,7 @@ import (
"path/filepath"
"reflect"
"runtime"
"slices"
"sort"
"strings"
"sync"
@ -16,7 +17,6 @@ import (
gocriticlinter "github.com/go-critic/go-critic/linter"
_ "github.com/quasilyte/go-ruleguard/dsl"
"golang.org/x/exp/maps"
"golang.org/x/exp/slices"
"golang.org/x/tools/go/analysis"
"github.com/golangci/golangci-lint/pkg/config"

@ -1,6 +1,7 @@
package gocritic
import (
"slices"
"strings"
"testing"
@ -9,7 +10,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/exp/maps"
"golang.org/x/exp/slices"
"github.com/golangci/golangci-lint/pkg/config"
"github.com/golangci/golangci-lint/pkg/logutils"

@ -51,7 +51,7 @@ func New(settings *config.GoHeaderSettings) *goanalysis.Linter {
return goanalysis.NewLinter(
linterName,
"Checks is file header matches to pattern",
"Checks if file header matches to pattern",
[]*analysis.Analyzer{analyzer},
nil,
).WithIssuesReporter(func(*linter.Context) []goanalysis.Issue {

@ -1,8 +1,6 @@
package nilnil
import (
"strings"
"github.com/Antonboom/nilnil/pkg/analyzer"
"golang.org/x/tools/go/analysis"
@ -10,13 +8,16 @@ import (
"github.com/golangci/golangci-lint/pkg/goanalysis"
)
func New(cfg *config.NilNilSettings) *goanalysis.Linter {
func New(settings *config.NilNilSettings) *goanalysis.Linter {
a := analyzer.New()
cfgMap := make(map[string]map[string]any)
if cfg != nil && len(cfg.CheckedTypes) != 0 {
if settings != nil {
cfgMap[a.Name] = map[string]any{
"checked-types": strings.Join(cfg.CheckedTypes, ","),
"detect-opposite": settings.DetectOpposite,
}
if len(settings.CheckedTypes) != 0 {
cfgMap[a.Name]["checked-types"] = settings.CheckedTypes
}
}

@ -3,8 +3,11 @@ package testdata
import (
"bytes"
"errors"
"fmt"
"go/token"
"io"
"net"
"net/http"
"os"
"unsafe"
@ -13,100 +16,100 @@ import (
type User struct{}
func primitivePtr() (*int, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func structPtr() (*User, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func emptyStructPtr() (*struct{}, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func anonymousStructPtr() (*struct{ ID string }, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func unsafePtr() (unsafe.Pointer, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func uintPtr() (uintptr, error) {
return 0, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return 0, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func uintPtr0b() (uintptr, error) {
return 0b0, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return 0b0, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func uintPtr0x() (uintptr, error) {
return 0x00, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return 0x00, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func uintPtr0o() (uintptr, error) {
return 0o000, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return 0o000, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func chBi() (chan int, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func chIn() (chan<- int, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func chOut() (<-chan int, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func fun() (func(), error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func funWithArgsAndResults() (func(a, b, c int) (int, int), error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func iface() (interface{}, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func anyType() (any, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func m1() (map[int]int, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func m2() (map[int]*User, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
type mapAlias = map[int]*User
func m3() (mapAlias, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
type Storage struct{}
func (s *Storage) GetUser() (*User, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func ifReturn() (*User, error) {
var s Storage
if _, err := s.GetUser(); err != nil {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
return new(User), nil
}
func forReturn() (*User, error) {
for {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
}
@ -114,15 +117,15 @@ func multipleReturn() (*User, error) {
var s Storage
if _, err := s.GetUser(); err != nil {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
if _, err := s.GetUser(); err != nil {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
if _, err := s.GetUser(); err != nil {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
return new(User), nil
@ -130,11 +133,11 @@ func multipleReturn() (*User, error) {
func nested() {
_ = func() (*User, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
_, _ = func() (*User, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}()
}
@ -145,7 +148,7 @@ func deeplyNested() {
_ = func() (*User, error) {
_ = func() {}
_ = func() int { return 0 }
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
}
return 0
@ -159,31 +162,31 @@ type MyError interface {
}
func myError() (*User, MyError) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
// Types.
func structPtrTypeExtPkg() (*os.File, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func primitivePtrTypeExtPkg() (*token.Token, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func funcTypeExtPkg() (http.HandlerFunc, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func ifaceTypeExtPkg() (io.Closer, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
type closerAlias = io.Closer
func ifaceTypeAliasedExtPkg() (closerAlias, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
type (
@ -195,29 +198,29 @@ type (
)
func structPtrType() (StructPtrType, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func primitivePtrType() (PrimitivePtrType, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func channelType() (ChannelType, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func funcType() (FuncType, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func ifaceType() (Checker, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
type checkerAlias = Checker
func ifaceTypeAliased() (checkerAlias, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
type (
@ -226,7 +229,7 @@ type (
)
func ptrIntegerType() (PtrIntegerType, error) {
return nil, nil // want "return both the `nil` error and invalid value: use a sentinel error instead"
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
// Not checked at all.
@ -317,3 +320,57 @@ func implicitNil3() (*User, error) {
return nil, wrap(nil)
}
func wrap(err error) error { return err }
// Opposite.
func primitivePtrTypeOpposite() (*int, error) {
if false {
return nil, io.EOF
}
return new(int), errors.New("validation failed")
}
func structPtrTypeOpposite() (*User, error) {
if false {
return nil, io.EOF
}
return new(User), fmt.Errorf("invalid %v", 42)
}
func unsafePtrOpposite() (unsafe.Pointer, error) {
if false {
return nil, io.EOF
}
var i int
return unsafe.Pointer(&i), io.EOF
}
func uintPtrOpposite() (uintptr, error) {
if false {
return 0, io.EOF
}
return 0xc82000c290, wrap(io.EOF)
}
func channelTypeOpposite() (ChannelType, error) {
if false {
return nil, io.EOF
}
return make(ChannelType), fmt.Errorf("wrapped: %w", io.EOF)
}
func funcTypeOpposite() (FuncType, error) {
if false {
return nil, io.EOF
}
return func(i int) int {
return 0
}, errors.New("no func type, please")
}
func ifaceTypeOpposite() (io.Reader, error) {
if false {
return nil, io.EOF
}
return new(bytes.Buffer), new(net.AddrError)
}

@ -0,0 +1,83 @@
//golangcitest:args -Enilnil
//golangcitest:config_path testdata/nilnil_detect_opposite.yml
package testdata
import (
"bytes"
"errors"
"fmt"
"io"
"net"
"unsafe"
)
func primitivePtrTypeOpposite() (*int, error) {
if false {
return nil, io.EOF
}
return new(int), errors.New("validation failed") // want "return both a non-nil error and a valid value: use separate returns instead"
}
func structPtrTypeOpposite() (*User, error) {
if false {
return nil, io.EOF
}
return new(User), fmt.Errorf("invalid %v", 42) // want "return both a non-nil error and a valid value: use separate returns instead"
}
func unsafePtrOpposite() (unsafe.Pointer, error) {
if false {
return nil, io.EOF
}
var i int
return unsafe.Pointer(&i), io.EOF // want "return both a non-nil error and a valid value: use separate returns instead"
}
func uintPtrOpposite() (uintptr, error) {
if false {
return 0, io.EOF
}
return 0xc82000c290, wrap(io.EOF) // want "return both a non-nil error and a valid value: use separate returns instead"
}
func channelTypeOpposite() (ChannelType, error) {
if false {
return nil, io.EOF
}
return make(ChannelType), fmt.Errorf("wrapped: %w", io.EOF) // want "return both a non-nil error and a valid value: use separate returns instead"
}
func funcTypeOpposite() (FuncType, error) {
if false {
return nil, io.EOF
}
return func(i int) int { // want "return both a non-nil error and a valid value: use separate returns instead"
return 0
}, errors.New("no func type, please")
}
func ifaceTypeOpposite() (io.Reader, error) {
if false {
return nil, io.EOF
}
return new(bytes.Buffer), new(net.AddrError) // want "return both a non-nil error and a valid value: use separate returns instead"
}
type (
User struct{}
StructPtrType *User
PrimitivePtrType *int
ChannelType chan int
FuncType func(int) int
Checker interface{ Check() }
)
func wrap(err error) error { return err }
func structPtr() (*int, error) {
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func structPtrValid() (*int, error) {
return new(int), nil
}

@ -0,0 +1,3 @@
linters-settings:
nilnil:
detect-opposite: true

@ -0,0 +1,39 @@
//golangcitest:args -Enilnil
//golangcitest:config_path testdata/nilnil_pointers_only.yml
package testdata
import "unsafe"
type User struct{}
func primitivePtr() (*int, error) {
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func structPtr() (*User, error) {
return nil, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func unsafePtr() (unsafe.Pointer, error) {
return nil, nil
}
func uintPtr0o() (uintptr, error) {
return 0o000, nil // want "return both a `nil` error and an invalid value: use a sentinel error instead"
}
func chBi() (chan int, error) {
return nil, nil
}
func fun() (func(), error) {
return nil, nil
}
func anyType() (any, error) {
return nil, nil
}
func m1() (map[int]int, error) {
return nil, nil
}

@ -0,0 +1,5 @@
linters-settings:
nilnil:
checked-types:
- ptr
- uintptr

@ -3,7 +3,7 @@ module protogetter
go 1.21.0
require (
google.golang.org/grpc v1.66.0
google.golang.org/grpc v1.67.1
google.golang.org/protobuf v1.34.2
)

@ -2,15 +2,13 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c=
google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=

@ -0,0 +1,19 @@
package recvcheck
import (
"github.com/raeperd/recvcheck"
"golang.org/x/tools/go/analysis"
"github.com/golangci/golangci-lint/pkg/goanalysis"
)
func New() *goanalysis.Linter {
a := recvcheck.Analyzer
return goanalysis.NewLinter(
a.Name,
a.Doc,
[]*analysis.Analyzer{a},
nil,
).WithLoadMode(goanalysis.LoadModeTypesInfo)
}

@ -0,0 +1,11 @@
package recvcheck_test
import (
"testing"
"github.com/golangci/golangci-lint/test/testshared/integration"
)
func TestFromTestdata(t *testing.T) {
integration.RunTestdata(t)
}

@ -0,0 +1,14 @@
//golangcitest:args -Erecvcheck
package testdata
import "fmt"
type Bar struct{} // want `the methods of "Bar" use pointer receiver and non-pointer receiver.`
func (b Bar) A() {
fmt.Println("A")
}
func (b *Bar) B() {
fmt.Println("B")
}

@ -184,8 +184,8 @@ func toIssue(pass *analysis.Pass, object *jsonObject) goanalysis.Issue {
// This function mimics the GetConfig function of revive.
// This allows to get default values and right types.
// https://github.com/golangci/golangci-lint/issues/1745
// https://github.com/mgechev/revive/blob/v1.3.7/config/config.go#L217
// https://github.com/mgechev/revive/blob/v1.3.7/config/config.go#L169-L174
// https://github.com/mgechev/revive/blob/v1.4.0/config/config.go#L218
// https://github.com/mgechev/revive/blob/v1.4.0/config/config.go#L170-L176
func getConfig(cfg *config.ReviveSettings) (*lint.Config, error) {
conf := defaultConfig()
@ -284,7 +284,7 @@ func safeTomlSlice(r []any) []any {
}
// This element is not exported by revive, so we need copy the code.
// Extracted from https://github.com/mgechev/revive/blob/v1.3.9/config/config.go#L15
// Extracted from https://github.com/mgechev/revive/blob/v1.4.0/config/config.go#L16
var defaultRules = []lint.Rule{
&rule.VarDeclarationsRule{},
&rule.PackageCommentsRule{},
@ -373,7 +373,7 @@ var allRules = append([]lint.Rule{
const defaultConfidence = 0.8
// This element is not exported by revive, so we need copy the code.
// Extracted from https://github.com/mgechev/revive/blob/v1.1.4/config/config.go#L145
// Extracted from https://github.com/mgechev/revive/blob/v1.4.0/config/config.go#L181
func normalizeConfig(cfg *lint.Config) {
// NOTE(ldez): this custom section for golangci-lint should be kept.
// ---
@ -419,7 +419,7 @@ func normalizeConfig(cfg *lint.Config) {
}
// This element is not exported by revive, so we need copy the code.
// Extracted from https://github.com/mgechev/revive/blob/v1.1.4/config/config.go#L214
// Extracted from https://github.com/mgechev/revive/blob/v1.4.0/config/config.go#L181
func defaultConfig() *lint.Config {
defaultConfig := lint.Config{
Confidence: defaultConfidence,

@ -1,14 +1,14 @@
module spancheck
go 1.21.0
go 1.22
require (
go.opentelemetry.io/otel v1.29.0
go.opentelemetry.io/otel/trace v1.29.0
go.opentelemetry.io/otel v1.30.0
go.opentelemetry.io/otel/trace v1.30.0
)
require (
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
go.opentelemetry.io/otel/metric v1.29.0 // indirect
go.opentelemetry.io/otel/metric v1.30.0 // indirect
)

@ -11,11 +11,11 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc=
go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts=
go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc=
go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w=
go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ=
go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc=
go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

@ -85,6 +85,7 @@ import (
"github.com/golangci/golangci-lint/pkg/golinters/promlinter"
"github.com/golangci/golangci-lint/pkg/golinters/protogetter"
"github.com/golangci/golangci-lint/pkg/golinters/reassign"
"github.com/golangci/golangci-lint/pkg/golinters/recvcheck"
"github.com/golangci/golangci-lint/pkg/golinters/revive"
"github.com/golangci/golangci-lint/pkg/golinters/rowserrcheck"
"github.com/golangci/golangci-lint/pkg/golinters/sloglint"
@ -134,7 +135,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
// When a new linter is added the version in `WithSince(...)` must be the next minor version of golangci-lint.
return []*linter.Config{
linter.NewConfig(asasalint.New(&cfg.LintersSettings.Asasalint)).
WithSince("1.47.0").
WithSince("v1.47.0").
WithPresets(linter.PresetBugs).
WithLoadForGoAnalysis().
WithURL("https://github.com/alingse/asasalint"),
@ -145,7 +146,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithURL("https://github.com/tdakkota/asciicheck"),
linter.NewConfig(bidichk.New(&cfg.LintersSettings.BiDiChk)).
WithSince("1.43.0").
WithSince("v1.43.0").
WithPresets(linter.PresetBugs).
WithURL("https://github.com/breml/bidichk"),
@ -162,7 +163,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithURL("https://github.com/lasiar/canonicalHeader"),
linter.NewConfig(containedctx.New()).
WithSince("1.44.0").
WithSince("v1.44.0").
WithLoadForGoAnalysis().
WithPresets(linter.PresetStyle).
WithURL("https://github.com/sivchari/containedctx"),
@ -213,7 +214,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithURL("https://github.com/mibk/dupl"),
linter.NewConfig(dupword.New(&cfg.LintersSettings.DupWord)).
WithSince("1.50.0").
WithSince("v1.50.0").
WithPresets(linter.PresetComment).
WithURL("https://github.com/Abirdcfly/dupword"),
@ -231,7 +232,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithURL("https://github.com/kisielk/errcheck"),
linter.NewConfig(errchkjson.New(&cfg.LintersSettings.ErrChkJSON)).
WithSince("1.44.0").
WithSince("v1.44.0").
WithPresets(linter.PresetBugs).
WithLoadForGoAnalysis().
WithURL("https://github.com/breml/errchkjson"),
@ -297,7 +298,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithURL("https://github.com/gostaticanalysis/forcetypeassert"),
linter.NewConfig(fatcontext.New()).
WithSince("1.58.0").
WithSince("v1.58.0").
WithPresets(linter.PresetPerformance).
WithLoadForGoAnalysis().
WithURL("https://github.com/Crocmagnon/fatcontext"),
@ -334,7 +335,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithSince("v1.12.0").
WithPresets(linter.PresetStyle),
linter.NewConfig(gochecksumtype.New()).
linter.NewConfig(gochecksumtype.New(&cfg.LintersSettings.GoChecksumType)).
WithSince("v1.55.0").
WithPresets(linter.PresetBugs).
WithLoadForGoAnalysis().
@ -652,11 +653,17 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithURL("https://github.com/ghostiam/protogetter"),
linter.NewConfig(reassign.New(&cfg.LintersSettings.Reassign)).
WithSince("1.49.0").
WithSince("v1.49.0").
WithPresets(linter.PresetBugs).
WithLoadForGoAnalysis().
WithURL("https://github.com/curioswitch/go-reassign"),
linter.NewConfig(recvcheck.New()).
WithSince("v1.62.0").
WithPresets(linter.PresetBugs).
WithLoadForGoAnalysis().
WithURL("https://github.com/raeperd/recvcheck"),
linter.NewConfig(revive.New(&cfg.LintersSettings.Revive)).
WithSince("v1.37.0").
WithPresets(linter.PresetStyle, linter.PresetMetaLinter).
@ -838,6 +845,6 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithSince("v1.26.0").
WithPresets(linter.PresetStyle).
WithAutoFix().
WithURL("https://github.com/golangci/golangci-lint/blob/master/pkg/golinters/nolintlint/README.md"),
WithURL("https://github.com/golangci/golangci-lint/tree/master/pkg/golinters/nolintlint/internal"),
}, nil
}

@ -225,5 +225,5 @@ func TestPrinter_Print_multiple(t *testing.T) {
goldenJSON, err := os.ReadFile(filepath.Join("testdata", "golden-json.json"))
require.NoError(t, err)
assert.Equal(t, string(goldenJSON), stdOutBuffer.String())
assert.JSONEq(t, string(goldenJSON), stdOutBuffer.String())
}