logginghandler/vendor/github.com/sylvia7788/contextcheck
Marvin Preuss d095180eb4
All checks were successful
continuous-integration/drone/push Build is passing
build: uses go modules for tool handling
2022-01-14 13:51:56 +01:00
..
.gitignore build: uses go modules for tool handling 2022-01-14 13:51:56 +01:00
contextcheck.go build: uses go modules for tool handling 2022-01-14 13:51:56 +01:00
go.mod build: uses go modules for tool handling 2022-01-14 13:51:56 +01:00
go.sum build: uses go modules for tool handling 2022-01-14 13:51:56 +01:00
LICENSE build: uses go modules for tool handling 2022-01-14 13:51:56 +01:00
Makefile build: uses go modules for tool handling 2022-01-14 13:51:56 +01:00
README.md build: uses go modules for tool handling 2022-01-14 13:51:56 +01:00

CircleCI

contextcheck

contextcheck is a static analysis tool, it is used to check the function whether use a non-inherited context, which will result in a broken call link.

For example:

func call1(ctx context.Context) {
    ...

    ctx = getNewCtx(ctx)
    call2(ctx) // OK

    call2(context.Background()) // Non-inherited new context, use function like `context.WithXXX` instead

    call3() // Function `call3` should pass the context parameter
    ...
}

func call2(ctx context.Context) {
    ...
}

func call3() {
    ctx := context.TODO()
    call2(ctx)
}

func getNewCtx(ctx context.Context) (newCtx context.Context) {
    ...
    return
}

Installation

You can get contextcheck by go get command.

$ go get -u github.com/sylvia7788/contextcheck

or build yourself.

$ make build
$ make install

Usage

Invoke contextcheck with your package name

$ contextcheck ./...
$ # or
$ go vet -vettool=`which contextcheck` ./...