Skip to content

Commit

Permalink
Update to golangci-lint version 1.43.0
Browse files Browse the repository at this point in the history
The currently latest `golangci-lint` version 1.43.0 [1] introduced new
linters and updated supported ones:

1. tagliatelle [2] (v1.40.0 [3]) - Handles `struct` tags name casing.
   This linter is disabled by default, but will be enabled for this
   template to improve consistency across tag names.
2. errorlint [4] (v1.40.0 [3]) - This linter has been disabled in
   GH-39 [22] due to prevent false-positive errors, but will be enabled
   again with the newly introduced `errorf` option [5] being disabled to
   prevent this from happening again while still taking advantage of the
   `assert` and `comparison` checks.
3. wrapcheck [6] (v1.40.0 [3]) - This linter is known to cause
   false-positive errors for the main module (`go list -m`) of the
   repository where `golangic-lint` is being run, but in
   version `2.3.0` [7] the `ignorePackageGlobs` option was added that
   allows to ignore packages by pattern.
   Therefore in each project the main module should be added as
   wildcard. Also see tomarrell/wrapcheck#2 [8] for details and
   discussions about this known problem.
4. golint [9] (v1.40.1 [10]) - Remove deprecated linter.
   4.1 The recommended drop-in replacement is revive [21] which is
   disabled by default, but will be enabled for this template.
5. gofumpt [17] (v1.42.0 [16]) - Add the `lang-version` with value set
   to `1.17` to target the (currently) latest Go version.
6. bidichk [11] (v1.43.0 [12]) - Checks for dangerous unicode character
   sequences. This linter is disabled by default, but will be enabled
   for this template to prevent "trojan source" bugs.
7. nilnil [13] (v1.43.0 [12]) - Checks that there is no simultaneous
   return of `nil` error and an invalid value.
   This linter is disabled by default, but will be enabled for this
   template to prevent ambiguous returns.
8. tenv [14] (v1.43.0 [12]) - Detects using `os.Setenv` instead of
   `t.Setenv` since Go 1.17.
   This linter is disabled by default, but will be enabled for this
   template to prevent errors in tests.
9. contextcheck [15] (v1.43.0 [12]) - Checks if functions whether use a
   non-inherited context.
   This linter is disabled by default, but will be enabled for this
   template to broken call chains and loss of context information.
10. lll [18] - Add the `tab-width` option with value set to `2` to use
    two spaces for the width of one tab.
11. gci [19] - Add the comma-separated [list of prefixes for local
    package imports][20] to be put after 3rd-party packages.

[1]: https://github.com/golangci/golangci-lint/releases/tag/v1.43.0
[2]: https://github.com/ldez/tagliatelle
[3]: https://github.com/golangci/golangci-lint/releases/tag/v1.40.0
[4]: https://github.com/polyfloyd/go-errorlint
[5]: https://golangci-lint.run/usage/linters/#errorlint
[6]: https://github.com/tomarrell/wrapcheck
[7]: https://github.com/tomarrell/wrapcheck/releases/tag/v2.3.0
[8]: tomarrell/wrapcheck#2
[9]: https://github.com/golang/lint
[10]: https://github.com/golangci/golangci-lint/releases/tag/v1.40.1
[11]: https://github.com/breml/bidichk
[12]: https://github.com/golangci/golangci-lint/releases/tag/v1.43.0
[13]: https://github.com/Antonboom/nilnil
[14]: https://github.com/sivchari/tenv
[15]: https://github.com/sylvia7788/contextcheck
[16]: https://github.com/golangci/golangci-lint/releases/tag/v1.42.0
[17]: https://github.com/mvdan/gofumpt
[18]: https://github.com/walle/lll
[19]: https://github.com/daixiang0/gci
[20]: https://golangci-lint.run/usage/linters/#gci
[21]: https://github.com/mgechev/revive
[22]: #39

GH-64
  • Loading branch information
svengreb committed Nov 18, 2021
1 parent 97fdc14 commit 2c53dbd
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 6 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
# See https://github.com/golangci/golangci-lint-action for more details.
uses: golangci/golangci-lint-action@v2.5.2
with:
version: v1.39
version: v1.43
test:
strategy:
matrix:
Expand Down
88 changes: 83 additions & 5 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,14 @@ issues:
linters:
disable-all: true
enable:
- bidichk
- bodyclose
- deadcode
- depguard
- dogsled
- dupl
- errcheck
- errorlint
- exhaustive
- exportloopref
- gochecknoinits
Expand All @@ -42,7 +44,6 @@ linters:
- gofumpt
- goheader
- goimports
- golint
- gomnd
- gomodguard
- goprintffuncname
Expand All @@ -53,11 +54,14 @@ linters:
- lll
- misspell
- nakedret
- nilnil
- noctx
- nolintlint
- revive
- staticcheck
- structcheck
- stylecheck
- tenv
- tparallel
- typecheck
- unconvert
Expand Down Expand Up @@ -90,6 +94,16 @@ linters-settings:
# Example: `a := b.(CustomStruct)`
check-type-assertions: true

errorlint:
# Prevent false-positive matches for code lines that explicitly do not wrap the error to prevent it become part of
# the public API.
# See https://github.com/svengreb/tmpl-go/issues/39 and https://github.com/svengreb/tmpl-go/issues/64 for details.
errorf: false

gci:
# A comma-separated list of prefixes for local package imports to be put after 3rd-party packages.
local-prefixes: github.com/svengreb/tmpl-go

goconst:
min-len: 2
min-occurrences: 3
Expand All @@ -102,6 +116,7 @@ linters-settings:

gofumpt:
extra-rules: true
lang-version: "1.17"

goheader:
values:
Expand All @@ -118,9 +133,6 @@ linters-settings:
# A comma-separated list of prefixes for local package imports to be put after 3rd-party packages.
local-prefixes: github.com/svengreb/tmpl-go

golint:
min-confidence: 0.0

gomnd:
settings:
mnd:
Expand All @@ -133,6 +145,7 @@ linters-settings:

lll:
line-length: 160
tab-width: 2

misspell:
locale: US
Expand All @@ -141,9 +154,74 @@ linters-settings:
- tmpl-go
- tmplgo

# See https://github.com/mgechev/revive#available-rules and
# https://github.com/mgechev/revive#recommended-configuration for more details.
revive:
ignore-generated-header: false
severity: warning
error-code: 1
# Ignore linting errors with less than 0.2 confidence.
confidence: 0.2
rules:
- name: atomic
- name: context-as-argument
- name: deep-exit
- name: defer
- name: duplicated-imports
severity: error
- name: early-return
- name: empty-block
- name: empty-lines
- name: error-naming
- name: error-return
severity: error
- name: error-strings
- name: errorf
- name: exported
arguments:
- checkPrivateReceivers
- disableStutteringCheck
- name: identical-branches
- name: if-return
- name: import-shadowing
severity: error
- name: increment-decrement
- name: indent-error-flow
- name: package-comments
- name: range
- name: receiver-naming
- name: redefines-builtin-id
severity: error
- name: string-of-int
severity: error
- name: superfluous-else
- name: time-equal
- name: time-naming
- name: unconditional-recursion
- name: unexported-naming
- name: unexported-return
- name: unhandled-error
- name: unreachable-code
- name: useless-break
- name: var-declaration

tagliatelle:
case:
use-field-name: true
rules:
bson: goCamel
json: goCamel
mapstructure: snake
xml: goCamel
yaml: goCamel

wrapcheck:
ignorePackageGlobs:
- github.com/svengreb/tmpl-go/*

# Options for analysis runs.
run:
deadline: 15m

service:
golangci-lint-version: 1.39.x
golangci-lint-version: 1.43.x

0 comments on commit 2c53dbd

Please sign in to comment.