mirror of
https://github.com/Crocmagnon/fatcontext.git
synced 2024-09-19 02:27:39 +02:00
747 B
747 B
foreshadow
foreshadow
is a Go linter which detects un-shadowed contexts in loops.
They can lead to performance issues, as documented here: https://gabnotes.org/fat-contexts/
Example
package main
import "context"
func ok() {
ctx := context.Background()
for i := 0; i < 10; i++ {
ctx := context.WithValue(ctx, "key", i)
_ = ctx
}
}
func notOk() {
ctx := context.Background()
for i := 0; i < 10; i++ {
ctx = context.WithValue(ctx, "key", i) // "context not shadowed in loop"
_ = ctx
}
}
Development
Setup pre-commit locally:
pre-commit install
Run tests & linter:
make lint test
To release, just publish a git tag:
git tag -a v0.1.0 -m "v0.1.0"
git push --follow-tags