noctx
finds function calls without context.Context.
If you are using net/http package and sql/database package, you should use noctx.
Passing context.Context
enables library user to cancel request, getting trace information and so on.
go vet is a Go standard tool for analyzing source code.
- Install noctx.
$ go install github.com/sonatard/noctx/cmd/noctx@latest
- Execute noctx
$ go vet -vettool=`which noctx` main.go
./main.go:6:11: net/http.Get must not be called
golangci-lint is a fast Go linters runner.
-
Install golangci-lint. golangci-lint - Install
-
Setup .golangci.yml
# Add noctx to enable linters.
linters:
enable:
- noctx
# Or enable-all is true.
linters:
default: all
disable:
- xxx # Add unused linter to disable linters.
- Execute noctx
# Use .golangci.yml
$ golangci-lint run
# Only execute noctx
golangci-lint run --enable-only noctx
https://github.com/sonatard/noctx/blob/03bbcad02284bb6257428c0e5d489e0d113bfee8/noctx.go#L41-L50
https://github.com/sonatard/noctx/blob/03bbcad02284bb6257428c0e5d489e0d113bfee8/testdata/src/http_client/http_client.go#L11 https://github.com/sonatard/noctx/blob/03bbcad02284bb6257428c0e5d489e0d113bfee8/testdata/src/http_request/http_request.go#L17
https://github.com/sonatard/noctx/blob/03bbcad02284bb6257428c0e5d489e0d113bfee8/noctx.go#L26-L39
https://github.com/sonatard/noctx/blob/03bbcad02284bb6257428c0e5d489e0d113bfee8/noctx.go#L52-L66
https://github.com/sonatard/noctx/blob/03bbcad02284bb6257428c0e5d489e0d113bfee8/noctx.go#L68-L71