Bump golangci-lint to v2 (#5034)

This commit is contained in:
Robert Kaussow 2025-03-31 18:55:48 +02:00 committed by GitHub
parent 6865e9d5f0
commit 286794a800
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 216 additions and 199 deletions

View File

@ -1,23 +1,78 @@
linters-settings: version: '2'
gofmt: run:
simplify: true timeout: 15m
rewrite-rules: build-tags:
- pattern: interface{} - test
replacement: any linters:
misspell: default: none
locale: US enable:
gofumpt: - asciicheck
extra-rules: true - bidichk
forbidigo: - bodyclose
forbid: - contextcheck
- context\.WithCancel$ - depguard
- ^print.*$ - dogsled
- panic - durationcheck
- ^log.Fatal().*$ - errcheck
errorlint: - errchkjson
errorf-multi: true - errorlint
- forbidigo
- forcetypeassert
- gochecknoinits
- gocritic
- godot
- goheader
- gomoddirectives
- gomodguard
- goprintffuncname
- govet
- importas
- ineffassign
- makezero
- misspell
- mnd
- nolintlint
- revive
- rowserrcheck
- sqlclosecheck
- staticcheck
- unconvert
- unparam
- unused
- usetesting
- wastedassign
- whitespace
- zerologlint
settings:
depguard: depguard:
rules: rules:
agent:
list-mode: lax
files:
- '**/agent/**/*.go'
- '**/agent/*.go'
- '**/cmd/agent/**/*.go'
- '**/cmd/agent/*.go'
deny:
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/cli
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/server
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
- pkg: go.woodpecker-ci.org/woodpecker/v3/woodpecker-go/woodpecker
cli:
list-mode: lax
files:
- '**/cli/**/*.go'
- '**/cli/*.go'
- '**/cmd/cli/**/*.go'
- '**/cmd/cli/*.go'
deny:
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/agent
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/server
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
pipeline: pipeline:
list-mode: lax list-mode: lax
files: files:
@ -28,65 +83,11 @@ linters-settings:
- '!**/server/pipeline/*.go' - '!**/server/pipeline/*.go'
- '!**/server/pipeline/**/*.go' - '!**/server/pipeline/**/*.go'
deny: deny:
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/agent' - pkg: go.woodpecker-ci.org/woodpecker/v3/agent
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cli' - pkg: go.woodpecker-ci.org/woodpecker/v3/cli
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd' - pkg: go.woodpecker-ci.org/woodpecker/v3/cmd
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/server' - pkg: go.woodpecker-ci.org/woodpecker/v3/server
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/web' - pkg: go.woodpecker-ci.org/woodpecker/v3/web
shared:
list-mode: lax
files:
- '**/shared/**/*.go'
- '**/shared/*.go'
- '!**/pipeline/shared/*.go'
- '!**/pipeline/shared/**/*.go'
deny:
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/agent'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cli'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/pipeline'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/server'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/web'
woodpecker-go:
list-mode: lax
files:
- '**/woodpecker-go/woodpecker/**/*.go'
- '**/woodpecker-go/woodpecker/*.go'
deny:
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/agent'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cli'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/pipeline'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/server'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/shared'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/web'
agent:
list-mode: lax
files:
- '**/agent/**/*.go'
- '**/agent/*.go'
- '**/cmd/agent/**/*.go'
- '**/cmd/agent/*.go'
deny:
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cli'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd/cli'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd/server'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/server'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/web'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/woodpecker-go/woodpecker'
cli:
list-mode: lax
files:
- '**/cli/**/*.go'
- '**/cli/*.go'
- '**/cmd/cli/**/*.go'
- '**/cmd/cli/*.go'
deny:
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/agent'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/server'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd/agent'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd/server'
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/web'
server: server:
list-mode: lax list-mode: lax
files: files:
@ -97,17 +98,55 @@ linters-settings:
- '**/web/**/*.go' - '**/web/**/*.go'
- '**/web/*.go' - '**/web/*.go'
deny: deny:
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/agent' - pkg: go.woodpecker-ci.org/woodpecker/v3/agent
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cli' - pkg: go.woodpecker-ci.org/woodpecker/v3/cli
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd/agent' - pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/agent
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/cmd/cli' - pkg: go.woodpecker-ci.org/woodpecker/v3/cmd/cli
- pkg: 'go.woodpecker-ci.org/woodpecker/v3/woodpecker-go/woodpecker' - pkg: go.woodpecker-ci.org/woodpecker/v3/woodpecker-go/woodpecker
gci: shared:
custom-order: true list-mode: lax
sections: files:
- standard - '**/shared/**/*.go'
- default - '**/shared/*.go'
- prefix(go.woodpecker-ci.org/woodpecker) - '!**/pipeline/shared/*.go'
- '!**/pipeline/shared/**/*.go'
deny:
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd
- pkg: go.woodpecker-ci.org/woodpecker/v3/pipeline
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
woodpecker-go:
list-mode: lax
files:
- '**/woodpecker-go/woodpecker/**/*.go'
- '**/woodpecker-go/woodpecker/*.go'
deny:
- pkg: go.woodpecker-ci.org/woodpecker/v3/agent
- pkg: go.woodpecker-ci.org/woodpecker/v3/cli
- pkg: go.woodpecker-ci.org/woodpecker/v3/cmd
- pkg: go.woodpecker-ci.org/woodpecker/v3/pipeline
- pkg: go.woodpecker-ci.org/woodpecker/v3/server
- pkg: go.woodpecker-ci.org/woodpecker/v3/shared
- pkg: go.woodpecker-ci.org/woodpecker/v3/web
errorlint:
errorf-multi: true
forbidigo:
forbid:
- pattern: context\.WithCancel$
- pattern: ^print.*$
- pattern: panic
- pattern: ^log.Fatal().*$
godot:
scope: toplevel
exclude:
- '^\s*cSpell:'
- '^\s*TODO:'
capital: true
period: true
misspell:
locale: US
mnd: mnd:
ignored-numbers: ignored-numbers:
- '0o600' - '0o600'
@ -121,68 +160,43 @@ linters-settings:
- strings.Split - strings.Split
- callerName - callerName
- securecookie.GenerateRandomKey - securecookie.GenerateRandomKey
godot: exclusions:
scope: toplevel generated: lax
period: true presets:
capital: true - comments
exclude: - common-false-positives
- '^\s*cSpell:' - legacy
- '^\s*TODO:' - std-error-handling
rules:
linters: - linters:
disable-all: true - mnd
path: fixtures|cmd/agent/flags.go|cmd/server/flags.go|pipeline/backend/kubernetes/flags.go|_test.go
paths:
- third_party$
- builtin$
- examples$
formatters:
enable: enable:
- bidichk
- errcheck
- gofmt
- gosimple
- govet
- ineffassign
- misspell
- revive
- staticcheck
- typecheck
- unused
- gofumpt
- errorlint
- forbidigo
- zerologlint
- depguard
- asciicheck
- bodyclose
- dogsled
- durationcheck
- errchkjson
- gochecknoinits
- goheader
- gomoddirectives
- gomodguard
- goprintffuncname
- importas
- makezero
- rowserrcheck
- sqlclosecheck
- usetesting
- unconvert
- unparam
- wastedassign
- whitespace
- gocritic
- nolintlint
- stylecheck
- contextcheck
- forcetypeassert
- gci - gci
- mnd - gofmt
- godot - gofumpt
settings:
issues: gci:
exclude-rules: sections:
- path: 'fixtures|cmd/agent/flags.go|cmd/server/flags.go|pipeline/backend/kubernetes/flags.go|_test.go' - standard
linters: - default
- mnd - prefix(go.woodpecker-ci.org/woodpecker)
custom-order: true
run: gofmt:
timeout: 15m simplify: true
build-tags: rewrite-rules:
- test - pattern: interface{}
replacement: any
gofumpt:
extra-rules: true
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$

View File

@ -9,6 +9,8 @@ variables:
- 'go.*' - 'go.*'
# schema changes # schema changes
- 'pipeline/schema/**' - 'pipeline/schema/**'
# tools updates
- Makefile
event: pull_request event: pull_request
when: when:

View File

@ -129,7 +129,7 @@ check-xgo: ## Check if xgo is installed
install-tools: ## Install development tools install-tools: ## Install development tools
@hash golangci-lint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ @hash golangci-lint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest ; \ go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest ; \
fi ; \ fi ; \
hash gofumpt > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ hash gofumpt > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
go install mvdan.cc/gofumpt@latest; \ go install mvdan.cc/gofumpt@latest; \

View File

@ -511,6 +511,7 @@ func containerSecurityContext(sc *SecurityContext, stepPrivileged bool) *v1.Secu
return nil return nil
} }
//nolint:staticcheck
privileged := false privileged := false
// if security context privileged is set explicitly // if security context privileged is set explicitly

View File

@ -45,12 +45,12 @@ func createFilterFunc(agentFilter rpc.Filter) queue.FilterFn {
return false, 0 return false, 0
} }
switch { switch agentLabelValue {
// if agent label has a wildcard // if agent label has a wildcard
case agentLabelValue == "*": case "*":
score++ score++
// if agent label has an exact match // if agent label has an exact match
case agentLabelValue == taskLabelValue: case taskLabelValue:
score += 10 score += 10
// agent doesn't match // agent doesn't match
default: default:

View File

@ -491,7 +491,7 @@ func (s *RPC) ReportHealth(ctx context.Context, status string) error {
} }
if status != "I am alive!" { if status != "I am alive!" {
//nolint:stylecheck //nolint:staticcheck
return errors.New("Are you alive?") return errors.New("Are you alive?")
} }

View File

@ -75,8 +75,8 @@ func SetOrg() gin.HandlerFunc {
func MustOrg() gin.HandlerFunc { func MustOrg() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
org := Org(c) org := Org(c)
switch { switch org {
case org == nil: case nil:
c.String(http.StatusNotFound, "Organization not loaded") c.String(http.StatusNotFound, "Organization not loaded")
c.Abort() c.Abort()
default: default:

View File

@ -110,8 +110,8 @@ func MustRepoAdmin() gin.HandlerFunc {
func MustUser() gin.HandlerFunc { func MustUser() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
user := User(c) user := User(c)
switch { switch user {
case user == nil: case nil:
c.String(http.StatusUnauthorized, "User not authorized") c.String(http.StatusUnauthorized, "User not authorized")
c.Abort() c.Abort()
default: default:

View File

@ -146,7 +146,7 @@ func (f *forgeFetcherContext) getFirstAvailableConfig(c context.Context, configs
files, err := f.forge.Dir(c, f.user, f.repo, f.pipeline, strings.TrimSuffix(fileOrFolder, "/")) files, err := f.forge.Dir(c, f.user, f.repo, f.pipeline, strings.TrimSuffix(fileOrFolder, "/"))
// if folder is not supported we will get a "Not implemented" error and continue // if folder is not supported we will get a "Not implemented" error and continue
if err != nil { if err != nil {
if !(errors.Is(err, types.ErrNotImplemented) || errors.Is(err, &types.ErrConfigNotFound{})) { if !errors.Is(err, types.ErrNotImplemented) && !errors.Is(err, &types.ErrConfigNotFound{}) {
log.Error().Err(err).Str("repo", f.repo.FullName).Str("user", f.user.Login).Msgf("could not get folder from forge: %s", err) log.Error().Err(err).Str("repo", f.repo.FullName).Str("user", f.user.Login).Msgf("could not get folder from forge: %s", err)
forgeErr = append(forgeErr, err) forgeErr = append(forgeErr, err)
} }

View File

@ -29,7 +29,7 @@ const (
keyTypeNone = "none" keyTypeNone = "none"
keyIDAssociatedData = "Primary key id" keyIDAssociatedData = "Primary key id"
AES_GCM_SIV_NonceSize = 12 //nolint:revive,stylecheck AES_GCM_SIV_NonceSize = 12 //nolint:revive
) )
var ( var (

View File

@ -62,12 +62,12 @@ func (b builder) detectKeyType() (string, error) {
} }
func (b builder) serviceBuilder(keyType string) (types.EncryptionServiceBuilder, error) { func (b builder) serviceBuilder(keyType string) (types.EncryptionServiceBuilder, error) {
switch { switch keyType {
case keyType == keyTypeTink: case keyTypeTink:
return newTink(b.c, b.store), nil return newTink(b.c, b.store), nil
case keyType == keyTypeRaw: case keyTypeRaw:
return newAES(b.c, b.store), nil return newAES(b.c, b.store), nil
case keyType == keyTypeNone: case keyTypeNone:
return &noEncryptionBuilder{}, nil return &noEncryptionBuilder{}, nil
} }
return nil, fmt.Errorf(errMessageTemplateUnsupportedKeyType, keyType) return nil, fmt.Errorf(errMessageTemplateUnsupportedKeyType, keyType)