diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..efca570 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,29 @@ +--- +name: golangci-lint +on: + push: + paths: + - "go.sum" + - "go.mod" + - "**.go" + - ".github/workflows/lint.yml" + - ".golangci.yml" + pull_request: + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: install Go + uses: actions/setup-go@v3 + with: + go-version: 1.20.x + + - name: Lint + uses: golangci/golangci-lint-action@v3.4.0 + with: + version: v1.54.2 diff --git a/.golangcli.yml b/.golangcli.yml new file mode 100644 index 0000000..9338576 --- /dev/null +++ b/.golangcli.yml @@ -0,0 +1,68 @@ +--- +run: + deadline: 5m + skip-files: + # Skip autogenerated files. + - ^.*\.(pb|y)\.go$ + +output: + sort-results: true + +linters: + enable: + - depguard + - durationcheck + - errorlint + - exportloopref + - gofmt + - gofumpt + - goimports + - gosimple + - ineffassign + - misspell + - nolintlint + - predeclared + - revive + - staticcheck + - unconvert + - unused + - wastedassign + +issues: + max-same-issues: 0 + exclude-rules: + - path: _test.go + linters: + - errcheck + - govet + - structcheck + +linters-settings: + depguard: + rules: + main: + deny: + #- pkg: "sync/atomic" + # desc: "Use go.uber.org/atomic instead of sync/atomic" + - pkg: "github.com/stretchr/testify/assert" + desc: "Use github.com/stretchr/testify/require instead of github.com/stretchr/testify/assert" + - pkg: "github.com/go-kit/kit/log" + desc: "Use github.com/go-kit/log instead of github.com/go-kit/kit/log" + - pkg: "io/ioutil" + desc: "Use corresponding 'os' or 'io' functions instead." + #- pkg: "regexp" + # desc: "Use github.com/grafana/regexp instead of regexp" + errcheck: + exclude-functions: + # The following 2 methods always return nil as the error + - (*github.com/cespare/xxhash/v2.Digest).Write + - (*github.com/cespare/xxhash/v2.Digest).WriteString + - (*bufio.Writer).WriteRune + gofumpt: + extra-rules: true + revive: + rules: + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter + - name: unused-parameter + severity: warning + disabled: true