summaryrefslogtreecommitdiff
path: root/.golangci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.golangci.yml')
-rw-r--r--.golangci.yml108
1 files changed, 103 insertions, 5 deletions
diff --git a/.golangci.yml b/.golangci.yml
index a6b3ed0..6b9a830 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -1,13 +1,111 @@
-# Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com>
+# Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com>
#
# SPDX-License-Identifier: GPL-2.0-or-later
linters:
+ enable-all: true
disable:
- - structcheck # doesn't support Go 1.18 yet
- enable:
- - forbidigo
- - gofmt
+ # Deprecated
+ - deadcode # deprecated, replaced by 'unused'
+ - exhaustivestruct # deprecated, replaced by 'exhauststruct'
+ - golint # deprecated, replaced by 'revive'
+ - ifshort # deprecated
+ - interfacer # deprecated
+ - maligned # deprecated, replaced by 'govet fieldalignement'
+ - nosnakecase # deprecated, replaced by 'revive var-naming'
+ - scopelint # deprecated, replaced by 'exportloopref'
+ - structcheck # deprecated, replaced by 'unused'
+ - varcheck # deprecated, replaced by 'unused'
+
+ # Don't support Go 1.18 generics yet
+ - rowserrcheck
+ - sqlclosecheck
+ - wastedassign
+ - ireturn # golangci-lint doesn't claim it doesn't, but it doesn't
+
+ # Style
+ - godot
+ - lll
+ - nlreturn
+ - nonamedreturns # I name returns for godoc purposes.
+ - wsl
+
+ # Complexity; sometimes code is just complex.
+ - cyclop
+ - funlen
+ - gocognit
+ - gocyclo
+ - maintidx
+ - nestif
+
+ # Miscellaneous
+ - goerr113 # forbids fmt.Errorf(%w), which is just silly
+ - godox # I'm OK checking in to-be-completed tasks
+
+ # These are disabled not because I think they're bad, but because
+ # they currently don't pass, and I haven't really evaluated them yet.
+ - exhaustive
+ - exhaustruct
+ - gochecknoglobals
+ - gochecknoinits
+ - revive
+ - testpackage
+ - thelper
+ - unparam
+ - varnamelen
+ - wrapcheck
linters-settings:
+ errcheck:
+ exclude-functions:
+ - "git.lukeshu.com/btrfs-progs-ng/lib/textui.Fprintf"
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(git.lukeshu.com/btrfs-progs-ng)
+ gocritic:
+ disabled-checks:
+ - appendAssign
gofmt:
simplify: true
+ gomnd:
+ ignored-numbers:
+ - '2'
+ ignored-functions:
+ - 'binutil.NeedNBytes'
+ - 'textui.Tunable'
+ gomoddirectives:
+ replace-allow-list:
+ - github.com/jacobsa/fuse
+ gosec:
+ excludes:
+ - G104 # duplicates errcheck
+ - G304 # this program opens arbitrary files
+ nolintlint:
+ require-explanation: true
+ require-specific: true
+ allow-no-explanation:
+ - dupword
+ stylecheck:
+ checks:
+ - "all"
+ - "-ST1003" # CONST_VAL names for consistency with other btrfs code
+ - "-ST1000" # TODO: get this to pass
+ - "-ST1020" # TODO: get this to pass
+ - "-ST1021" # TODO: get this to pass
+ tagliatelle:
+ case:
+ use-field-name: true
+ rules:
+ json: pascal
+issues:
+ exclude-use-default: false
+ exclude-rules:
+ # Ignore false positives that don't actually have any words.
+ - linters: [dupword]
+ source: "^[^a-zA-Z]*$"
+ # https://github.com/dominikh/go-tools/issues/1347
+ - linters: [stylecheck]
+ text: '^ST1016: methods on the same type should have the same receiver name \(seen 1x "(a|dst)", \d+x "[^"]+"\)$'
+ max-issues-per-linter: 0
+ max-same-issues: 0