From 179fae914ad0952890ca8d0434182179130b6ece Mon Sep 17 00:00:00 2001 From: TP Honey Date: Tue, 26 Jul 2022 11:00:18 +0100 Subject: [PATCH] (maint) fixing naming and add more go best practice --- .drone.yml | 33 +++++++++++-- .golangci.yml | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+), 4 deletions(-) create mode 100644 .golangci.yml diff --git a/.drone.yml b/.drone.yml index 6636d8200..420cabcee 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,11 +1,10 @@ --- kind: pipeline -type: docker +type: vm name: default -platform: - os: linux - arch: amd64 +pool: + use: ubuntu steps: - name: vet @@ -15,6 +14,8 @@ steps: volumes: - name: gopath path: /go + depends_on: + - clone - name: test image: golang:1.15 @@ -23,6 +24,30 @@ steps: volumes: - name: gopath path: /go + depends_on: + - vet + +- name: check go.mod is up to date + image: golang:1.15 + commands: + - cp go.mod go.mod.bak + - go mod tidy + - diff go.mod go.mod.bak || (echo "go.mod is not up to date" && exit 1) + volumes: + - name: gopath + path: /go + depends_on: + - vet + +- name: golangci-lint + image: golangci/golangci-lint + commands: + - golangci-lint run --timeout 500s + volumes: + - name: gopath + path: /go + depends_on: + - clone volumes: - name: gopath diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 000000000..1ca20e4a8 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,130 @@ +linters-settings: + dupl: + threshold: 100 + funlen: + lines: 400 + statements: 100 + gci: + local-prefixes: github.com/golangci/golangci-lint + goconst: + min-len: 3 + min-occurrences: 3 + gocritic: + enabled-tags: + - diagnostic + - experimental + - opinionated + - performance + - style + disabled-checks: + - dupImport # https://github.com/go-critic/go-critic/issues/845 + - ifElseChain + - octalLiteral + - whyNoLint + - wrapperFunc + gocyclo: + min-complexity: 25 + goimports: + local-prefixes: github.com/golangci/golangci-lint + gomnd: + settings: + mnd: + # don't include the "operation" and "assign" + checks: argument,case,condition,return + govet: + check-shadowing: true + settings: + printf: + funcs: + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf + lll: + line-length: 200 + maligned: + suggest-new: true + misspell: + locale: US + nolintlint: + allow-leading-space: true # don't require machine-readable nolint directives (i.e. with no leading space) + allow-unused: false # report any unused nolint directives + require-explanation: false # don't require an explanation for nolint directives + require-specific: false # don't require nolint directives to be specific about which linter is being skipped + nakedret: + max-func-lines: 100 + +linters: + # please, do not use `enable-all`: it's deprecated and will be removed soon. + # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint + disable-all: true + enable: + - bodyclose + - deadcode + - depguard + - dogsled + - errcheck + - exportloopref + - exhaustive + - funlen + - gochecknoinits + - goconst + - gocritic + - gocyclo + - gofmt + - goimports + - gomnd + - goprintffuncname + - gosec + - gosimple + - govet + - ineffassign + - lll + - misspell + - nakedret + - noctx + - nolintlint + - revive + - rowserrcheck + - staticcheck + - structcheck + - stylecheck + - typecheck + - unconvert + - unparam + - unused + - varcheck + - whitespace + + # don't enable: + # - asciicheck + # - dupl + # - scopelint + # - gochecknoglobals + # - gocognit + # - godot + # - godox + # - goerr113 + # - interfacer + # - maligned + # - nestif + # - prealloc + # - testpackage + # - revive + # - wsl + +issues: + # Excluding configuration per-path, per-linter, per-text and per-source + exclude-rules: + - path: _test\.go + linters: + - gomnd + + # https://github.com/go-critic/go-critic/issues/926 + - linters: + - gocritic + text: "unnecessaryDefer:" + +run: + skip-files: + - _gen\.go