golangci/golangci-lint · error
plugin does not abide by 'AnalyzerPlugin' interface: %T
Error message
plugin does not abide by 'AnalyzerPlugin' interface: %T
What it means
Type-assertion guard in PluginGoBuilder.lookupAnalyzerPlugin: the plugin exports 'AnalyzerPlugin' but the symbol does not implement the expected AnalyzerPlugin interface, so the assertion fails and the concrete type is reported. This is the legacy plugin path, which also emits a deprecation warning.
Source
Thrown at pkg/lint/lintersdb/builder_plugin_go.go:145
}
return constructor(settings)
}
func (b *PluginGoBuilder) lookupAnalyzerPlugin(plug *plugin.Plugin) ([]*analysis.Analyzer, error) {
//nolint:staticcheck,nolintlint // Ignore because the implementation on Windows returns nil
symbol, err := plug.Lookup("AnalyzerPlugin")
//nolint:staticcheck,nolintlint // Ignore because the implementation on Windows returns nil
if err != nil {
return nil, err
}
b.log.Warnf("plugin: 'AnalyzerPlugin' plugins are deprecated, please use the new plugin signature: " +
"https://golangci-lint.run/docs/plugins/go-plugins#create-a-plugin")
analyzerPlugin, ok := symbol.(AnalyzerPlugin)
if !ok {
return nil, fmt.Errorf("plugin does not abide by 'AnalyzerPlugin' interface: %T", symbol)
}
return analyzerPlugin.GetAnalyzers(), nil
}
View on GitHub (pinned to ed7a235d2d)
Solutions
- Make the exported AnalyzerPlugin value implement the expected interface (GetAnalyzers method)
- Prefer migrating the plugin to the newer New-function signature
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/lint/lintersdb/builder_plugin_go.go:145 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of golangci/golangci-lint@ed7a235d2d (2026-09-02).
Data as JSON: /api/errors/74193a1231ff60ec.
Report an issue: GitHub.