From cf3712cd127336faaf3428696f1e3802191e996b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Thu, 31 Aug 2023 13:21:36 +0200 Subject: [PATCH] Update go-makefile-maker config --- .golangci.yaml | 135 ++++++++++++++++++++++++++++++++++++++++++++ Makefile.maker.yaml | 10 +++- 2 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 .golangci.yaml diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 00000000..ca04cfe9 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,135 @@ +################################################################################ +# This file is AUTOGENERATED with # +# Edit Makefile.maker.yaml instead. # +################################################################################ + +run: + deadline: 3m # 1m by default + modules-download-mode: vendor + +output: + # Do not print lines of code with issue. + print-issued-lines: false + +issues: + exclude: + # It is idiomatic Go to reuse the name 'err' with ':=' for subsequent errors. + # Ref: https://go.dev/doc/effective_go#redeclaration + - 'declaration of "err" shadows declaration at' + exclude-rules: + - path: _test\.go + linters: + - bodyclose + # '0' disables the following options. + max-issues-per-linter: 0 + max-same-issues: 0 + +linters-settings: + dupl: + # Tokens count to trigger issue, 150 by default. + threshold: 100 + errcheck: + # Report about assignment of errors to blank identifier. + check-blank: true + # Report about not checking of errors in type assertions. + check-type-assertions: true + forbidigo: + forbid: + # ioutil package has been deprecated: https://github.com/golang/go/issues/42026 + - ^ioutil\..*$ + # Using http.DefaultServeMux is discouraged because it's a global variable that some packages silently and magically add handlers to (esp. net/http/pprof). + # Applications wishing to use http.ServeMux should obtain local instances through http.NewServeMux() instead of using the global default instance. + - ^http.DefaultServeMux$ + - ^http.Handle(?:Func)?$ + gocritic: + enabled-checks: + - boolExprSimplify + - builtinShadow + - emptyStringTest + - evalOrder + - httpNoBody + - importShadow + - initClause + - methodExprCall + - paramTypeCombine + - preferFilepathJoin + - ptrToRefParam + - redundantSprint + - returnAfterHttpError + - stringConcatSimplify + - timeExprSimplify + - truncateCmp + - typeAssertChain + - typeUnparen + - unnamedResult + - unnecessaryBlock + - unnecessaryDefer + - weakCond + - yodaStyleExpr + goimports: + # Put local imports after 3rd-party packages. + local-prefixes: github.com/sapcc/backup-tools + gosec: + excludes: + # gosec wants us to set a short ReadHeaderTimeout to avoid Slowloris attacks, but doing so would expose us to Keep-Alive race conditions (see https://iximiuz.com/en/posts/reverse-proxy-http-keep-alive-and-502s/) + - G112 + # created file permissions are restricted by umask if necessary + - G306 + govet: + # Report about shadowed variables. + check-shadowing: true + nolintlint: + require-specific: true + usestdlibvars: + constant-kind: true + crypto-hash: true + default-rpc-path: true + http-method: true + http-status-code: true + os-dev-null: true + rpc-default-path: true + time-weekday: true + time-month: true + time-layout: true + tls-signature-scheme: true + whitespace: + # Enforce newlines (or comments) after multi-line function signatures. + multi-func: true + +linters: + # We use 'disable-all' and enable linters explicitly so that a newer version + # does not introduce new linters unexpectedly. + disable-all: true + enable: + - bodyclose + - containedctx + - dupl + - dupword + - durationcheck + - errcheck + - errorlint + - exportloopref + - forbidigo + - gocheckcompilerdirectives + - gocritic + - gofmt + - goimports + - gosec + - gosimple + - govet + - ineffassign + - misspell + - noctx + - nolintlint + - nosprintfhostport + - rowserrcheck + - sqlclosecheck + - staticcheck + - stylecheck + - tenv + - typecheck + - unconvert + - unparam + - unused + - usestdlibvars + - whitespace diff --git a/Makefile.maker.yaml b/Makefile.maker.yaml index b4af5e39..aeaced46 100644 --- a/Makefile.maker.yaml +++ b/Makefile.maker.yaml @@ -18,6 +18,13 @@ dockerfile: - curl # required for backup-tools.sh - jq # required for backup-tools.sh +golang: + enableVendoring: true + setGoModVersion: true + +golangciLint: + createConfig: true + githubWorkflow: ci: enabled: true @@ -38,9 +45,6 @@ renovate: - majewsky - SuperSandro2000 -vendoring: - enabled: true - # The "install" target is autogenerated to install the Go binary, but we also # need to install the backup-tools.sh script into $PATH. verbatim: |