go1.21 support (#3922)
This commit is contained in:
parent
c37828a8af
commit
e0a8bd8543
2
.github/workflows/documentation.yml
vendored
2
.github/workflows/documentation.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
||||
name: Build and deploy documentation
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GO_VERSION: '1.20'
|
||||
GO_VERSION: '1.21'
|
||||
NODE_VERSION: '20.x'
|
||||
CGO_ENABLED: 0
|
||||
|
||||
|
2
.github/workflows/post-release.yml
vendored
2
.github/workflows/post-release.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
||||
# ex:
|
||||
# - 1.18beta1 -> 1.18.0-beta.1
|
||||
# - 1.18rc1 -> 1.18.0-rc.1
|
||||
go-version: '1.20'
|
||||
go-version: '1.21'
|
||||
|
||||
- name: Update GitHub action config
|
||||
run: make assets/github-action-config.json
|
||||
|
2
.github/workflows/pr-extra.yml
vendored
2
.github/workflows/pr-extra.yml
vendored
@ -17,7 +17,7 @@ jobs:
|
||||
# ex:
|
||||
# - 1.18beta1 -> 1.18.0-beta.1
|
||||
# - 1.18rc1 -> 1.18.0-rc.1
|
||||
go-version: '1.20'
|
||||
go-version: '1.21'
|
||||
- name: Run go list
|
||||
run: go list -json -m all > go.list
|
||||
- name: Nancy
|
||||
|
8
.github/workflows/pr.yml
vendored
8
.github/workflows/pr.yml
vendored
@ -6,7 +6,7 @@ on:
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
GO_VERSION: '1.20'
|
||||
GO_VERSION: '1.21'
|
||||
|
||||
jobs:
|
||||
# Check if there is any dirty change for go mod tidy
|
||||
@ -41,7 +41,9 @@ jobs:
|
||||
# ex:
|
||||
# - 1.18beta1 -> 1.18.0-beta.1
|
||||
# - 1.18rc1 -> 1.18.0-rc.1
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
# TODO(ldez) must be changed after the first release of golangci-lint with go1.21
|
||||
# go-version: ${{ env.GO_VERSION }}
|
||||
go-version: '1.20'
|
||||
- name: lint
|
||||
uses: golangci/golangci-lint-action@v3.6.0
|
||||
with:
|
||||
@ -88,8 +90,8 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
golang:
|
||||
- 1.19
|
||||
- '1.20'
|
||||
- '1.21'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Go
|
||||
|
4
.github/workflows/tag.yml
vendored
4
.github/workflows/tag.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
||||
# ex:
|
||||
# - 1.18beta1 -> 1.18.0-beta.1
|
||||
# - 1.18rc1 -> 1.18.0-rc.1
|
||||
go-version: '1.20'
|
||||
go-version: '1.21'
|
||||
- name: Unshallow
|
||||
run: git fetch --prune --unshallow
|
||||
|
||||
@ -48,7 +48,7 @@ jobs:
|
||||
# ex:
|
||||
# - 1.18beta1 -> 1.18.0-beta.1
|
||||
# - 1.18rc1 -> 1.18.0-rc.1
|
||||
go-version: '1.20'
|
||||
go-version: '1.21'
|
||||
|
||||
- name: Unshallow
|
||||
run: git fetch --prune --unshallow
|
||||
|
@ -155,6 +155,8 @@ issues:
|
||||
text: "SA1019: (.+).(GoVersion|LangVersion) is deprecated: use the global `run.go` instead."
|
||||
- path: pkg/golinters/unused.go
|
||||
text: "rangeValCopy: each iteration copies 160 bytes \\(consider pointers or indexing\\)"
|
||||
- path: test/(fix|linters)_test.go
|
||||
text: "string `gocritic.go` has 3 occurrences, make it a constant"
|
||||
|
||||
run:
|
||||
timeout: 5m
|
||||
|
@ -1,5 +1,5 @@
|
||||
# stage 1 building the code
|
||||
FROM golang:1.20 as builder
|
||||
FROM golang:1.21 as builder
|
||||
|
||||
ARG VERSION
|
||||
ARG SHORT_COMMIT
|
||||
@ -10,7 +10,7 @@ WORKDIR /golangci
|
||||
RUN CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=$VERSION -X main.commit=$SHORT_COMMIT -X main.date=$DATE" -o golangci-lint ./cmd/golangci-lint/main.go
|
||||
|
||||
# stage 2
|
||||
FROM golang:1.20
|
||||
FROM golang:1.21
|
||||
# related to https://github.com/golangci/golangci-lint/issues/3107
|
||||
ENV GOROOT /usr/local/go
|
||||
# don't place it into $GOPATH/bin because Drone mounts $GOPATH as volume
|
||||
|
@ -1,5 +1,5 @@
|
||||
# stage 1 building the code
|
||||
FROM golang:1.20-alpine as builder
|
||||
FROM golang:1.21-alpine as builder
|
||||
|
||||
ARG VERSION
|
||||
ARG SHORT_COMMIT
|
||||
@ -15,7 +15,7 @@ RUN apk --no-cache add gcc musl-dev git mercurial
|
||||
RUN CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=$VERSION -X main.commit=$SHORT_COMMIT -X main.date=$DATE" -o golangci-lint ./cmd/golangci-lint/main.go
|
||||
|
||||
# stage 2
|
||||
FROM golang:1.20-alpine
|
||||
FROM golang:1.21-alpine
|
||||
# related to https://github.com/golangci/golangci-lint/issues/3107
|
||||
ENV GOROOT /usr/local/go
|
||||
# gcc is required to support cgo;
|
||||
|
2
go.mod
2
go.mod
@ -1,6 +1,6 @@
|
||||
module github.com/golangci/golangci-lint
|
||||
|
||||
go 1.19
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
4d63.com/gocheckcompilerdirectives v1.2.1
|
||||
|
@ -41,13 +41,13 @@ type Version struct {
|
||||
Debug bool `mapstructure:"debug"`
|
||||
}
|
||||
|
||||
func IsGreaterThanOrEqualGo118(v string) bool {
|
||||
func IsGreaterThanOrEqualGo121(v string) bool {
|
||||
v1, err := hcversion.NewVersion(strings.TrimPrefix(v, "go"))
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
limit, err := hcversion.NewVersion("1.18")
|
||||
limit, err := hcversion.NewVersion("1.21")
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
@ -283,6 +283,20 @@ func newGoCriticSettingsWrapper(settings *config.GoCriticSettings, logger loguti
|
||||
allCheckerMap[checkInfo.Name] = checkInfo
|
||||
}
|
||||
|
||||
if settings != nil && config.IsGreaterThanOrEqualGo121(settings.Go) {
|
||||
var enabledChecks []string
|
||||
for _, check := range settings.EnabledChecks {
|
||||
if check == "ruleguard" {
|
||||
logger.Warnf("%s: check %q is disabled for go1.21 https://github.com/golangci/golangci-lint/issues/3933", goCriticName, "ruleguard")
|
||||
continue
|
||||
}
|
||||
|
||||
enabledChecks = append(enabledChecks, check)
|
||||
}
|
||||
|
||||
settings.EnabledChecks = enabledChecks
|
||||
}
|
||||
|
||||
return &goCriticSettingsWrapper{
|
||||
GoCriticSettings: settings,
|
||||
logger: logger,
|
||||
|
@ -134,7 +134,7 @@ func (lc *Config) Name() string {
|
||||
}
|
||||
|
||||
func (lc *Config) WithNoopFallback(cfg *config.Config) *Config {
|
||||
if cfg != nil && config.IsGreaterThanOrEqualGo118(cfg.Run.Go) {
|
||||
if cfg != nil && config.IsGreaterThanOrEqualGo121(cfg.Run.Go) {
|
||||
lc.Linter = &Noop{
|
||||
name: lc.Linter.Name(),
|
||||
desc: lc.Linter.Desc(),
|
||||
|
@ -43,6 +43,13 @@ func TestFix(t *testing.T) {
|
||||
|
||||
for _, input := range sources {
|
||||
input := input
|
||||
|
||||
// TODO(ldez): remove this limitation when gocritic/ruleguard will be fixed.
|
||||
if filepath.Base(input) == "gocritic.go" {
|
||||
t.Logf("skip gocritic because of a bug with ruleguard")
|
||||
continue
|
||||
}
|
||||
|
||||
t.Run(filepath.Base(input), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@ -80,6 +87,13 @@ func TestFix_pathPrefix(t *testing.T) {
|
||||
|
||||
for _, input := range sources {
|
||||
input := input
|
||||
|
||||
// TODO(ldez): remove this limitation when gocritic/ruleguard will be fixed.
|
||||
if filepath.Base(input) == "gocritic.go" {
|
||||
t.Logf("skip gocritic because of a bug with ruleguard")
|
||||
continue
|
||||
}
|
||||
|
||||
t.Run(filepath.Base(input), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
@ -62,6 +62,13 @@ func testSourcesFromDir(t *testing.T, dir string) {
|
||||
|
||||
for _, source := range sources {
|
||||
source := source
|
||||
|
||||
// TODO(ldez): remove this limitation when gocritic/ruleguard will be fixed.
|
||||
if filepath.Base(source) == "gocritic.go" {
|
||||
t.Logf("skip gocritic because of a bug with ruleguard")
|
||||
continue
|
||||
}
|
||||
|
||||
t.Run(filepath.Base(source), func(subTest *testing.T) {
|
||||
subTest.Parallel()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user