feat: go1.19 support (#3037)
This commit is contained in:
parent
6313fa9a67
commit
1557692e59
6
.github/workflows/post-release.yml
vendored
6
.github/workflows/post-release.yml
vendored
@ -14,8 +14,10 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
go-version: 1.18
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
|
go-version: 1.19
|
||||||
|
|
||||||
- name: Update GitHub action config
|
- name: Update GitHub action config
|
||||||
run: make assets/github-action-config.json
|
run: make assets/github-action-config.json
|
||||||
|
6
.github/workflows/pr-extra.yml
vendored
6
.github/workflows/pr-extra.yml
vendored
@ -13,8 +13,10 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
go-version: 1.18
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
|
go-version: 1.19
|
||||||
- name: Run go list
|
- name: Run go list
|
||||||
run: go list -json -m all > go.list
|
run: go list -json -m all > go.list
|
||||||
- name: Nancy
|
- name: Nancy
|
||||||
|
31
.github/workflows/pr.yml
vendored
31
.github/workflows/pr.yml
vendored
@ -6,7 +6,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GO_VERSION: 1.18
|
GO_VERSION: 1.19
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Check if there any dirty change for go mod tidy
|
# Check if there any dirty change for go mod tidy
|
||||||
@ -16,7 +16,9 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -34,8 +36,11 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
go-version: ${{ env.GO_VERSION }}
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
|
# go-version: ${{ env.GO_VERSION }} # todo(ldez) uncomment after the next release v1.48.0
|
||||||
|
go-version: 1.18
|
||||||
- name: lint
|
- name: lint
|
||||||
uses: golangci/golangci-lint-action@v3.2.0
|
uses: golangci/golangci-lint-action@v3.2.0
|
||||||
with:
|
with:
|
||||||
@ -52,7 +57,9 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI
|
go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: make.exe test
|
run: make.exe test
|
||||||
@ -66,7 +73,9 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI
|
go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: make test
|
run: make test
|
||||||
@ -77,14 +86,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
golang:
|
golang:
|
||||||
- 1.17
|
|
||||||
- 1.18
|
- 1.18
|
||||||
|
- 1.19
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
go-version: ${{ matrix.golang }}
|
go-version: ${{ matrix.golang }}
|
||||||
- uses: actions/cache@v3
|
- uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
@ -108,7 +119,9 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
- name: Check generated files are up to date
|
- name: Check generated files are up to date
|
||||||
run: make fast_check_generated
|
run: make fast_check_generated
|
||||||
|
12
.github/workflows/tag.yml
vendored
12
.github/workflows/tag.yml
vendored
@ -14,8 +14,10 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
go-version: 1.18
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
|
go-version: 1.19
|
||||||
- name: Unshallow
|
- name: Unshallow
|
||||||
run: git fetch --prune --unshallow
|
run: git fetch --prune --unshallow
|
||||||
|
|
||||||
@ -41,8 +43,10 @@ jobs:
|
|||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||||
go-version: 1.18
|
# https://github.com/actions/setup-go#supported-version-syntax
|
||||||
|
# stable: 'false'
|
||||||
|
go-version: 1.19
|
||||||
|
|
||||||
- name: Unshallow
|
- name: Unshallow
|
||||||
run: git fetch --prune --unshallow
|
run: git fetch --prune --unshallow
|
||||||
|
@ -68,9 +68,9 @@ run:
|
|||||||
allow-parallel-runners: false
|
allow-parallel-runners: false
|
||||||
|
|
||||||
# Define the Go version limit.
|
# Define the Go version limit.
|
||||||
# Mainly related to generics support in go1.18.
|
# Mainly related to generics support since go1.18.
|
||||||
# Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.17
|
# Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.18
|
||||||
go: '1.18'
|
go: '1.19'
|
||||||
|
|
||||||
|
|
||||||
# output configuration options
|
# output configuration options
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# stage 1 building the code
|
# stage 1 building the code
|
||||||
FROM golang:1.18 as builder
|
FROM golang:1.19 as builder
|
||||||
|
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
ARG SHORT_COMMIT
|
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
|
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
|
# stage 2
|
||||||
FROM golang:1.18
|
FROM golang:1.19
|
||||||
# don't place it into $GOPATH/bin because Drone mounts $GOPATH as volume
|
# don't place it into $GOPATH/bin because Drone mounts $GOPATH as volume
|
||||||
COPY --from=builder /golangci/golangci-lint /usr/bin/
|
COPY --from=builder /golangci/golangci-lint /usr/bin/
|
||||||
CMD ["golangci-lint"]
|
CMD ["golangci-lint"]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# stage 1 building the code
|
# stage 1 building the code
|
||||||
FROM golang:1.18-alpine as builder
|
FROM golang:1.19-alpine as builder
|
||||||
|
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
ARG SHORT_COMMIT
|
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
|
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
|
# stage 2
|
||||||
FROM golang:1.18-alpine
|
FROM golang:1.19-alpine
|
||||||
# gcc is required to support cgo;
|
# gcc is required to support cgo;
|
||||||
# git and mercurial are needed most times for go get`, etc.
|
# git and mercurial are needed most times for go get`, etc.
|
||||||
# See https://github.com/docker-library/golang/issues/80
|
# See https://github.com/docker-library/golang/issues/80
|
||||||
|
2
go.mod
2
go.mod
@ -1,6 +1,6 @@
|
|||||||
module github.com/golangci/golangci-lint
|
module github.com/golangci/golangci-lint
|
||||||
|
|
||||||
go 1.18
|
go 1.19
|
||||||
|
|
||||||
require (
|
require (
|
||||||
4d63.com/gochecknoglobals v0.1.0
|
4d63.com/gochecknoglobals v0.1.0
|
||||||
|
@ -121,7 +121,15 @@ func (lp *loadingPackage) loadFromSource(loadMode LoadMode) error {
|
|||||||
|
|
||||||
pkg.IllTyped = true
|
pkg.IllTyped = true
|
||||||
|
|
||||||
pkg.TypesInfo = newTypesInfo()
|
pkg.TypesInfo = &types.Info{
|
||||||
|
Types: make(map[ast.Expr]types.TypeAndValue),
|
||||||
|
Instances: make(map[*ast.Ident]types.Instance),
|
||||||
|
Defs: make(map[*ast.Ident]types.Object),
|
||||||
|
Uses: make(map[*ast.Ident]types.Object),
|
||||||
|
Implicits: make(map[ast.Node]types.Object),
|
||||||
|
Scopes: make(map[ast.Node]*types.Scope),
|
||||||
|
Selections: make(map[*ast.SelectorExpr]*types.Selection),
|
||||||
|
}
|
||||||
|
|
||||||
importer := func(path string) (*types.Package, error) {
|
importer := func(path string) (*types.Package, error) {
|
||||||
if path == unsafePkgName {
|
if path == unsafePkgName {
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
//go:build go1.18
|
|
||||||
// +build go1.18
|
|
||||||
|
|
||||||
package goanalysis
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go/ast"
|
|
||||||
"go/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
func newTypesInfo() *types.Info {
|
|
||||||
return &types.Info{
|
|
||||||
Types: make(map[ast.Expr]types.TypeAndValue),
|
|
||||||
Instances: make(map[*ast.Ident]types.Instance),
|
|
||||||
Defs: make(map[*ast.Ident]types.Object),
|
|
||||||
Uses: make(map[*ast.Ident]types.Object),
|
|
||||||
Implicits: make(map[ast.Node]types.Object),
|
|
||||||
Scopes: make(map[ast.Node]*types.Scope),
|
|
||||||
Selections: make(map[*ast.SelectorExpr]*types.Selection),
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
//go:build go1.17 && !go1.18
|
|
||||||
// +build go1.17,!go1.18
|
|
||||||
|
|
||||||
package goanalysis
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go/ast"
|
|
||||||
"go/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
func newTypesInfo() *types.Info {
|
|
||||||
return &types.Info{
|
|
||||||
Types: make(map[ast.Expr]types.TypeAndValue),
|
|
||||||
Defs: make(map[*ast.Ident]types.Object),
|
|
||||||
Uses: make(map[*ast.Ident]types.Object),
|
|
||||||
Implicits: make(map[ast.Node]types.Object),
|
|
||||||
Scopes: make(map[ast.Node]*types.Scope),
|
|
||||||
Selections: make(map[*ast.SelectorExpr]*types.Selection),
|
|
||||||
}
|
|
||||||
}
|
|
@ -98,6 +98,7 @@ func staticCheckConfig(settings *config.StaticCheckSettings) *scconfig.Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/dominikh/go-tools/blob/9bf17c0388a65710524ba04c2d821469e639fdc2/lintcmd/lint.go#L437-L477
|
// https://github.com/dominikh/go-tools/blob/9bf17c0388a65710524ba04c2d821469e639fdc2/lintcmd/lint.go#L437-L477
|
||||||
|
//
|
||||||
//nolint:gocritic // Keep the original source code.
|
//nolint:gocritic // Keep the original source code.
|
||||||
func filterAnalyzerNames(analyzers []string, checks []string) map[string]bool {
|
func filterAnalyzerNames(analyzers []string, checks []string) map[string]bool {
|
||||||
allowedChecks := map[string]bool{}
|
allowedChecks := map[string]bool{}
|
||||||
|
@ -21,8 +21,8 @@ type Noop struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (n Noop) Run(_ context.Context, lintCtx *Context) ([]result.Issue, error) {
|
func (n Noop) Run(_ context.Context, lintCtx *Context) ([]result.Issue, error) {
|
||||||
lintCtx.Log.Warnf("%s is disabled because of go1.18."+
|
lintCtx.Log.Warnf("%s is disabled because of generics."+
|
||||||
" You can track the evolution of the go1.18 support by following the https://github.com/golangci/golangci-lint/issues/2649.", n.name)
|
" You can track the evolution of the generics support by following the https://github.com/golangci/golangci-lint/issues/2649.", n.name)
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,15 +312,10 @@ func extractRunContextFromComments(t *testing.T, sourcePath string) *runContext
|
|||||||
require.Failf(t, "invalid prefix of comment line %s", line)
|
require.Failf(t, "invalid prefix of comment line %s", line)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(ldez) replace that by strings.Cut when we will drop go1.17
|
before, after, found := strings.Cut(line, " ")
|
||||||
var before string
|
require.Truef(t, found, "invalid prefix of comment line %s", line)
|
||||||
var after string
|
|
||||||
if i := strings.Index(line, " "); i >= 0 {
|
after = strings.TrimSpace(after)
|
||||||
before = line[:i]
|
|
||||||
after = strings.TrimSpace(line[i+len(" "):])
|
|
||||||
} else {
|
|
||||||
require.Failf(t, "invalid prefix of comment line %s", line)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch before {
|
switch before {
|
||||||
case "//golangcitest:args":
|
case "//golangcitest:args":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user