Merge pull request #7 from romdo/upgrade-ci-and-linter

This commit is contained in:
2025-10-30 21:27:53 +00:00
committed by GitHub
4 changed files with 157 additions and 161 deletions

View File

@@ -7,28 +7,23 @@ jobs:
name: Lint name: Lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
- name: golangci-lint - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
uses: golangci/golangci-lint-action@v2
with: with:
version: v1.42 go-version-file: go.mod
env: - name: golangci-lint
VERBOSE: "true" uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0
with:
version: v2.6
tidy: tidy:
name: Tidy name: Tidy
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
- uses: actions/setup-go@v2 - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
with: with:
go-version: 1.15 go-version-file: go.mod
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Check if mods are tidy - name: Check if mods are tidy
run: make check-tidy run: make check-tidy
@@ -63,31 +58,31 @@ jobs:
# github-token: ${{ secrets.GITHUB_TOKEN }} # github-token: ${{ secrets.GITHUB_TOKEN }}
# auto-push: false # auto-push: false
cov: # cov:
name: Coverage # name: Coverage
runs-on: ubuntu-latest # runs-on: ubuntu-latest
steps: # steps:
- uses: actions/checkout@v2 # - uses: actions/checkout@v2
- uses: actions/setup-go@v2 # - uses: actions/setup-go@v2
with: # with:
go-version: 1.15 # go-version: 1.15
- uses: actions/cache@v2 # - uses: actions/cache@v2
with: # with:
path: ~/go/pkg/mod # path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} # key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: | # restore-keys: |
${{ runner.os }}-go- # ${{ runner.os }}-go-
- name: Publish coverage # - name: Publish coverage
uses: paambaati/codeclimate-action@v2.7.4 # uses: paambaati/codeclimate-action@v2.7.4
env: # env:
VERBOSE: "true" # VERBOSE: "true"
GOMAXPROCS: 4 # GOMAXPROCS: 4
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} # CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
with: # with:
coverageCommand: make cov # coverageCommand: make cov
prefix: github.com/${{ github.repository }} # prefix: github.com/${{ github.repository }}
coverageLocations: | # coverageLocations: |
${{ github.workspace }}/coverage.out:gocov # ${{ github.workspace }}/coverage.out:gocov
test: test:
name: Test name: Test
@@ -98,22 +93,19 @@ jobs:
go_version: go_version:
- "1.15" - "1.15"
- "1.16" - "1.16"
- "1.17" - "1.18"
- "1.20"
- "1.25"
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
- uses: actions/setup-go@v2 - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
with: with:
go-version: ${{ matrix.terraform_version }} go-version-file: go.mod
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run tests - name: Run tests
run: make test run: make test
env: env:
VERBOSE: "true" VERBOSE: "true"
# benchmark-store: # benchmark-store:
# name: Store benchmarks # name: Store benchmarks
# runs-on: ubuntu-latest # runs-on: ubuntu-latest

View File

@@ -1,50 +1,25 @@
linters-settings: version: "2"
funlen: run:
lines: 100 modules-download-mode: readonly
statements: 150 allow-parallel-runners: true
goconst:
min-occurrences: 5
gocyclo:
min-complexity: 20
golint:
min-confidence: 0
govet:
check-shadowing: true
enable-all: true
disable:
- fieldalignment
lll:
line-length: 80
tab-width: 4
maligned:
suggest-new: true
misspell:
locale: US
linters: linters:
disable-all: true default: none
enable: enable:
- asciicheck - asciicheck
- bodyclose - bodyclose
- deadcode
- depguard
- dupl - dupl
- durationcheck - durationcheck
- errcheck - errcheck
- errorlint - errorlint
- exhaustive - exhaustive
- exportloopref
- funlen - funlen
- gochecknoinits - gochecknoinits
- goconst - goconst
- gocritic - gocritic
- gocyclo - gocyclo
- godot - godot
- gofumpt
- goimports
- goprintffuncname - goprintffuncname
- gosec - gosec
- gosimple
- govet - govet
- importas - importas
- ineffassign - ineffassign
@@ -60,40 +35,69 @@ linters:
- rowserrcheck - rowserrcheck
- sqlclosecheck - sqlclosecheck
- staticcheck - staticcheck
- structcheck
- tparallel - tparallel
- typecheck
- unconvert - unconvert
- unparam - unparam
- unused - unused
- varcheck
- wastedassign - wastedassign
- whitespace - whitespace
settings:
issues: funlen:
exclude: lines: 100
- Using the variable on range scope `tt` in function literal statements: 150
- Using the variable on range scope `tc` in function literal goconst:
exclude-rules: min-occurrences: 5
- path: "_test\\.go" gocyclo:
linters: min-complexity: 20
- funlen govet:
disable:
- fieldalignment
enable-all: true
lll:
line-length: 80
tab-width: 4
misspell:
locale: US
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
- linters:
- dupl - dupl
- funlen
- goconst - goconst
- source: "^//go:generate " path: _test\.go
linters: - linters:
- lll - lll
- source: "`json:" source: "^//go:generate "
linters: - linters:
- lll - lll
- source: "`yaml:" source: "`json:"
linters: - linters:
- lll - lll
- source: "`form:" source: "`yaml:"
linters: - linters:
- lll - lll
source: "`form:"
run: - path: (.+)\.go$
timeout: 2m text: Using the variable on range scope `tt` in function literal
allow-parallel-runners: true - path: (.+)\.go$
modules-download-mode: readonly text: Using the variable on range scope `tc` in function literal
paths:
- third_party$
- builtin$
- examples$
formatters:
enable:
- gofumpt
- goimports
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$

View File

@@ -48,7 +48,7 @@ endef
$(eval $(call tool,godoc,golang.org/x/tools/cmd/godoc)) $(eval $(call tool,godoc,golang.org/x/tools/cmd/godoc))
$(eval $(call tool,gofumports,mvdan.cc/gofumpt/gofumports)) $(eval $(call tool,gofumports,mvdan.cc/gofumpt/gofumports))
$(eval $(call tool,golangci-lint,github.com/golangci/golangci-lint/cmd/golangci-lint@v1.42)) $(eval $(call tool,golangci-lint,github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.6))
$(eval $(call tool,gomod,github.com/Helcaraxan/gomod)) $(eval $(call tool,gomod,github.com/Helcaraxan/gomod))
.PHONY: tools .PHONY: tools

View File

@@ -1,7 +1,7 @@
// Package validate is yet another Go struct/object validation package, with a // Package validate is yet another Go struct/object validation package, with a
// focus on simplicity, flexibility, and full control over validation logic. // focus on simplicity, flexibility, and full control over validation logic.
// //
// Interface // # Interface
// //
// To add validation to any type, simply implement the Validatable interface: // To add validation to any type, simply implement the Validatable interface:
// //
@@ -17,7 +17,7 @@
// can be fully validated, and the nested path to each object is tracked and // can be fully validated, and the nested path to each object is tracked and
// reported back any validation errors. // reported back any validation errors.
// //
// Multiple Errors // # Multiple Errors
// //
// Multiple errors can be reported from the Validate method using one of the // Multiple errors can be reported from the Validate method using one of the
// available Append helper functions which append errors together. Under the // available Append helper functions which append errors together. Under the
@@ -25,7 +25,7 @@
// a single error return type, and you can in fact just directly use multierr in // a single error return type, and you can in fact just directly use multierr in
// the a type's Validate method. // the a type's Validate method.
// //
// Structs and Field-specific Errors // # Structs and Field-specific Errors
// //
// When validating a struct, you are likely to have multiple errors for multiple // When validating a struct, you are likely to have multiple errors for multiple
// fields. To specify which field on the struct the error relates to, you have // fields. To specify which field on the struct the error relates to, you have
@@ -65,13 +65,13 @@
// Title: is required // Title: is required
// Kind: is required // Kind: is required
// //
// Error type // # Error type
// //
// All errors will be wrapped in a *Error before being returned, which is used // All errors will be wrapped in a *Error before being returned, which is used
// to keep track of the path and field the error relates to. There are various // to keep track of the path and field the error relates to. There are various
// helpers available to create Error instances. // helpers available to create Error instances.
// //
// Handling Validation Errors // # Handling Validation Errors
// //
// As mentioned above, multiple errors are wrapped up into a single error return // As mentioned above, multiple errors are wrapped up into a single error return
// value using go.uber.org/multierr. You can access all errors individually with // value using go.uber.org/multierr. You can access all errors individually with
@@ -79,7 +79,7 @@
// function is just wrapper around multierr.Errors(), so you could use that // function is just wrapper around multierr.Errors(), so you could use that
// instead if you prefer. // instead if you prefer.
// //
// Struct Field Tags // # Struct Field Tags
// //
// Fields on a struct which customize the name via a json, yaml, or form field // Fields on a struct which customize the name via a json, yaml, or form field
// tag, will automatically have the field name converted to the name in the tag // tag, will automatically have the field name converted to the name in the tag
@@ -88,7 +88,7 @@
// You can customize the field name conversion logic by creating a custom // You can customize the field name conversion logic by creating a custom
// Validator instance, and calling FieldNameFunc() on it. // Validator instance, and calling FieldNameFunc() on it.
// //
// Nested Validatable Objects // # Nested Validatable Objects
// //
// All items/fields on any structs, maps, slices or arrays which are encountered // All items/fields on any structs, maps, slices or arrays which are encountered
// will be validated if they implement the Validatable interface. While // will be validated if they implement the Validatable interface. While