Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: introduce golangci-lint #48

Merged
merged 2 commits into from
Oct 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: golangci-lint
on:
push:
tags:
- v*
branches:
- master
- main
pull_request:
permissions:
contents: read
pull-requests: read
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v3
with:
go-version: 1.*
- uses: actions/checkout@v3
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.50
only-new-issues: true
6 changes: 0 additions & 6 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,6 @@ jobs:
run: |
fmt=$(gofmt -l .)
test -z $fmt || (echo "please run gofmt" ; echo $fmt ; exit 1)
- name: Go Staticcheck
run: go run honnef.co/go/tools/cmd/staticcheck@latest ./...
- name: Spelling
run: go run github.com/client9/misspell/cmd/misspell@v0.3.4 -error .
- name: Ineffective assignments
run: go run github.com/gordonklaus/ineffassign@4cc7213 .
- name: Goimports
run: |
go run golang.org/x/tools/cmd/goimports@latest -w .
Expand Down
146 changes: 146 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Options for analysis running.
run:
concurrency: 4
timeout: 5m
tests: true
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
skip-dirs-use-default: true
modules-download-mode: readonly
allow-parallel-runners: false
go: '1.19'

# output configuration options
output:
# Format: colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions
#
# Multiple can be specified by separating them by comma, output can be provided
# for each of them by separating format name and path by colon symbol.
# Output path can be either `stdout`, `stderr` or path to the file to write to.
# Example: "checkstyle:report.json,colored-line-number"
#
# Default: colored-line-number
format: tab
print-issued-lines: true
print-linter-name: true
uniq-by-line: true
sort-results: true

linters:
disable-all: true
enable:
- bidichk
- bodyclose
- containedctx
- contextcheck
- cyclop
- durationcheck
- errcheck
- errname
- errorlint
- exhaustive
- exportloopref
- forbidigo
- forcetypeassert
- gocognit
- goconst
- gocritic
- goerr113
- gofmt
- gomnd
- gomoddirectives
- gosec
- gosimple
- govet
- grouper
- ineffassign
- makezero
- misspell
- nakedret
- nestif
- nilerr
- nilnil
- noctx
- nolintlint
- nosprintfhostport
- paralleltest
- prealloc
- predeclared
- revive
- staticcheck
- tenv
- testpackage
- thelper
- tparallel
- typecheck
- unconvert
- unparam
- unused
- usestdlibvars
- varnamelen
- wrapcheck
- wsl

issues:
new: false
fix: false
new-from-rev: b5fdfaa2bd30e666511e4648f27d8a26fd8512cb
exclude-rules:
- path: _test\.go
linters:
- containedctx
- forcetypeassert
- goconst
- goerr113
- varnamelen
- wrapcheck

severity:
default-severity: blocker
rules: # code-climate format from gitlab supports: info, minor, major, critical, or blocker
- severity: critical
linters:
- gosec
- severity: major
linters:
- goerr113
- prealloc
- wrapcheck
- severity: minor
linters:
- cyclop
- decorder
- errname
- goconst
- gocognit
- predeclared
- testpackage
- tparallel
- usestdlibvars
- varnamelen
- severity: info
linters:
- paralleltest
- thelper
- wsl

linters-settings:
gomnd:
ignored-functions:
- context.WithTimeout
nolintlint:
require-specific: true
require-explanation: true
revive:
rules:
- name: var-naming
disabled: true
varnamelen:
max-distance: 10
ignore-type-assert-ok: true
ignore-map-index-ok: true
ignore-chan-recv-ok: true
ignore-names:
- err
- id
ignore-decls:
- i int