package waitgroup
import "golang.org/x/tools/go/analysis/passes/waitgroup"
Package waitgroup defines an Analyzer that detects simple misuses of sync.WaitGroup.
Analyzer waitgroup
waitgroup: check for misuses of sync.WaitGroup
This analyzer detects mistaken calls to the (*sync.WaitGroup).Add method from inside a new goroutine, causing Add to race with Wait:
// WRONG var wg sync.WaitGroup go func() { wg.Add(1) // "WaitGroup.Add called from inside new goroutine" defer wg.Done() ... }() wg.Wait() // (may return prematurely before new goroutine starts)
The correct code calls Add before starting the goroutine:
// RIGHT var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() ... }() wg.Wait()
Package waitgroup defines an Analyzer that detects simple misuses of sync.WaitGroup.
Index ¶
Variables ¶
var Analyzer = &analysis.Analyzer{ Name: "waitgroup", Doc: analysisutil.MustExtractDoc(doc, "waitgroup"), URL: "https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/waitgroup", Requires: []*analysis.Analyzer{inspect.Analyzer}, Run: run, }
Source Files ¶
doc.go waitgroup.go
- Version
- v0.30.0 (latest)
- Published
- Feb 10, 2025
- Platform
- linux/amd64
- Imports
- 9 packages
- Last checked
- 3 hours ago –
Tools for package owners.