package defers

import "golang.org/x/tools/go/analysis/passes/defers"

Package defers defines an Analyzer that checks for common mistakes in defer statements.

Analyzer defers

defers: report common mistakes in defer statements

The defers analyzer reports a diagnostic when a defer statement would result in a non-deferred call to time.Since, as experience has shown that this is nearly always a mistake.

For example:

start := time.Now()
...
defer recordLatency(time.Since(start)) // error: call to time.Since is not deferred

The correct code is:

defer func() { recordLatency(time.Since(start)) }()

Index

Variables

var Analyzer = &analysis.Analyzer{
	Name:     "defers",
	Requires: []*analysis.Analyzer{inspect.Analyzer},
	URL:      "https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/defers",
	Doc:      analysisutil.MustExtractDoc(doc, "defers"),
	Run:      run,
}

Analyzer is the defers analyzer.

Source Files

defers.go doc.go

Directories

PathSynopsis
go/analysis/passes/defers/cmd
go/analysis/passes/defers/cmd/defersThe defers command runs the defers analyzer.
Version
v0.30.0 (latest)
Published
Feb 10, 2025
Platform
linux/amd64
Imports
8 packages
Last checked
3 hours ago

Tools for package owners.