Modernize golangci-lint config and switch formatter to gofumpt#435
Merged
Conversation
- Enable bodyclose and prealloc linters
- Move exclude-files/exclude-dirs to linters.exclusions.paths (golangci-lint
v2 location) and fix over-escaped regex generated.*\\.go -> generated.*\.go
- Switch formatter from gofmt to gofumpt and drop the interface{} -> any
rewrite rule (gofumpt is a stricter superset)
- Preallocate error slices flagged by prealloc in server start options
validation and graphql query execution
- Apply resulting gofumpt formatting
Signed-off-by: Tamal Saha <tamal@appscode.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Modernize the
.golangci.ymlconfiguration for golangci-lint v2 and switch the configured formatter to gofumpt (mirrors kmodules/resource-metadata#657).This aligns the linter with the build image (
ghcr.io/appscode/golang-dev:1.25), wheregofmtis already a symlink shim to gofumpt v0.7.0 — somake fmt(viahack/fmt.sh'sgofmt -s -w) and the linter now enforce the same formatting. No change tohack/fmt.shis needed..golangci.ymlbodycloseandprealloclinters (unparamwas already enabled).exclude-files/exclude-dirsout of the deprecatedissues:block intolinters.exclusions.paths— the correct location in golangci-lint v2.generated.*\\.go→generated.*\.go(the double backslash matched a literal backslash rather than a dot).gofmt→gofumptand drop the now-unneededinterface{}→anyrewrite rule (gofumpt performs this itself at go1.18+, and go.mod pins go1.25).golangci-lint config verifypasses andgolangci-lint runreports 0 issues.Code fixes for the newly enabled linters
pkg/cmds/server/start.go: preallocate the validationerrorsslice (prealloc), capturingRecommendedOptions.Validate()once instead of calling it twice.pkg/graph/setup.go: preallocate theerrsslice withlen(result.Errors)capacity (prealloc).Resulting formatting
gofumpt reformat of several files (multi-line call-argument wrapping in
apis/**/register.go,pkg/apiserver,pkg/graph,pkg/registry/**, and a controller test).Test plan
golangci-lint config verify— validgolangci-lint run— 0 issuesgo build ./pkg/cmds/server/... ./pkg/graph/...