toolsgolang.org/x/tools/go/analysis/passes/reflectvaluecompare Index | Files

package reflectvaluecompare

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

Package reflectvaluecompare defines an Analyzer that checks for accidentally using == or reflect.DeepEqual to compare reflect.Value values. See issues 43993 and 18871.

Analyzer reflectvaluecompare

reflectvaluecompare: check for comparing reflect.Value values with == or reflect.DeepEqual

The reflectvaluecompare checker looks for expressions of the form:

v1 == v2
v1 != v2
reflect.DeepEqual(v1, v2)

where v1 or v2 are reflect.Values. Comparing reflect.Values directly is almost certainly not correct, as it compares the reflect package's internal representation, not the underlying value. Likely what is intended is:

v1.Interface() == v2.Interface()
v1.Interface() != v2.Interface()
reflect.DeepEqual(v1.Interface(), v2.Interface())

Index

Variables

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

Source Files

doc.go reflectvaluecompare.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.