summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Milde <daniel@milde.cz>2024-04-30 13:04:09 +0200
committerDaniel Milde <daniel@milde.cz>2024-04-30 13:07:41 +0200
commit002e182b3103af5bc9ef119887e511032e35c97c (patch)
tree61ed39f1ef5fd7412b40634b8e7c2a766f86a2e9
parent173458b73a8a6dcf0b075b4b78e0e033ab089288 (diff)
ci: golangci-lint config
-rw-r--r--.golangci.yml122
-rw-r--r--Makefile4
2 files changed, 126 insertions, 0 deletions
diff --git a/.golangci.yml b/.golangci.yml
new file mode 100644
index 0000000..e5e9a87
--- /dev/null
+++ b/.golangci.yml
@@ -0,0 +1,122 @@
+linters-settings:
+ errcheck:
+ check-blank: true
+ revive:
+ rules:
+ - name: blank-imports
+ - name: context-as-argument
+ - name: context-keys-type
+ - name: dot-imports
+ - name: error-return
+ - name: error-strings
+ - name: error-naming
+ - name: exported
+ - name: increment-decrement
+ - name: var-naming
+ - name: var-declaration
+ - name: package-comments
+ - name: range
+ - name: receiver-naming
+ - name: time-naming
+ - name: unexported-return
+ - name: indent-error-flow
+ - name: errorf
+ - name: empty-block
+ - name: superfluous-else
+ - name: unreachable-code
+ - name: redefines-builtin-id
+ # While we agree with this rule, right now it would break too many
+ # projects. So, we disable it by default.
+ - name: unused-parameter
+ disabled: true
+ gocyclo:
+ min-complexity: 25
+ dupl:
+ threshold: 100
+ goconst:
+ min-len: 3
+ min-occurrences: 3
+ lll:
+ line-length: 160
+ gocritic:
+ enabled-tags:
+ - diagnostic
+ - experimental
+ - opinionated
+ - performance
+ - style
+ disabled-checks:
+ - whyNoLint
+ funlen:
+ lines: 500
+ statements: 50
+ govet:
+ enable:
+ - shadow
+
+linters:
+ disable-all: true
+ enable:
+ - bodyclose
+ - dogsled
+ - errcheck
+ - errorlint
+ - exhaustive
+ - exportloopref
+ - funlen
+ - goconst
+ - gocritic
+ - gocyclo
+ - gofmt
+ - goimports
+ - revive
+ - gosimple
+ - govet
+ - ineffassign
+ - lll
+ - nakedret
+ - staticcheck
+ - typecheck
+ - unparam
+ - unused
+ - whitespace
+
+issues:
+ exclude:
+ # We allow error shadowing
+ - 'declaration of "err" shadows declaration at'
+
+ # Excluding configuration per-path, per-linter, per-text and per-source
+ exclude-rules:
+ # Exclude some linters from running on tests files.
+ - path: _test\.go
+ linters:
+ - gocyclo
+ - errcheck
+ - gosec
+ - funlen
+ - gocritic
+ - gochecknoglobals # Globals in test files are tolerated.
+ - goconst # Repeated consts in test files are tolerated.
+ # This rule is buggy and breaks on our `///Block` lines. Disable for now.
+ - linters:
+ - gocritic
+ text: "commentFormatting: put a space"
+ # This rule incorrectly flags nil references after assert.Assert(t, x != nil)
+ - path: _test\.go
+ text: "SA5011"
+ linters:
+ - staticcheck
+ - linters:
+ - lll
+ source: "^//go:generate "
+ - linters:
+ - lll
+ - gocritic
+ path: \.resolvers\.go
+ source: '^func \(r \*[a-zA-Z]+Resolvers\) '
+
+output:
+ formats:
+ - format: colored-line-number
+ sort-results: true
diff --git a/Makefile b/Makefile
index d258479..5699d58 100644
--- a/Makefile
+++ b/Makefile
@@ -130,6 +130,9 @@ benchmark:
'gdu -npc ~' 'gdu -gnpc ~' 'gdu -npc --use-storage ~'
sudo cpupower frequency-set -g schedutil
+lint:
+ golangci-lint run -c .golangci.yml
+
clean:
go mod tidy
-rm coverage.txt
@@ -151,5 +154,6 @@ install-dev-dependencies:
go install gotest.tools/gotestsum@latest
go install github.com/mitchellh/gox@latest
go install honnef.co/go/gotraceui/cmd/gotraceui@master
+ go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
.PHONY: run build build-static build-all test gobench benchmark coverage coverage-html clean clean-uncompressed-dist man show-man release