@@ -126,10 +126,10 @@ func (r *registry) InitializeLinters(cfg config.Linters, lintersCfg config.Linte
126
126
for _ , init := range r .getEnabledInitializers (cfg ) {
127
127
var linterConfig any
128
128
129
- if init . IsConfigurable () {
129
+ if ci , ok := isConfigurable ( init ); ok {
130
130
var err error
131
131
132
- linterConfig , err = getLinterTypedConfig (init , lintersCfg )
132
+ linterConfig , err = getLinterTypedConfig (ci , lintersCfg )
133
133
if err != nil {
134
134
errs = append (errs , fmt .Errorf ("failed to get linter config: %w" , err ))
135
135
}
@@ -154,18 +154,13 @@ func (r *registry) validateLintersConfig(cfg config.Linters, lintersCfg config.L
154
154
validatedLinters := sets .New [string ]()
155
155
156
156
for _ , init := range r .getEnabledInitializers (cfg ) {
157
- if init . IsConfigurable () {
158
- linterConfig , err := getLinterTypedConfig (init , lintersCfg )
157
+ if ci , ok := isConfigurable ( init ); ok {
158
+ linterConfig , err := getLinterTypedConfig (ci , lintersCfg )
159
159
if err != nil {
160
160
fieldErrors = append (fieldErrors , field .Invalid (fieldPath .Child (init .Name ()), linterConfig , err .Error ()))
161
161
continue
162
162
}
163
163
164
- ci , ok := init .(initializer.ConfigurableAnalyzerInitializer )
165
- if ! ok {
166
- panic (fmt .Sprintf ("Analyzer %s claims to be configurable but does not implement the ConfigurableAnalyzerInitializer interface" , init .Name ()))
167
- }
168
-
169
164
fieldErrors = append (fieldErrors , ci .ValidateConfig (linterConfig , fieldPath .Child (init .Name ()))... )
170
165
171
166
validatedLinters .Insert (init .Name ())
@@ -198,13 +193,8 @@ func (r *registry) getEnabledInitializers(cfg config.Linters) []initializer.Anal
198
193
}
199
194
200
195
// getLinterTypedConfig returns the typed config for a linter.
201
- func getLinterTypedConfig (init initializer.AnalyzerInitializer , lintersCfg config.LintersConfig ) (any , error ) {
202
- ci , ok := init .(initializer.ConfigurableAnalyzerInitializer )
203
- if ! ok {
204
- panic (fmt .Sprintf ("Analyzer %s claims to be configurable but does not implement the ConfigurableAnalyzerInitializer interface" , init .Name ()))
205
- }
206
-
207
- rawConfig , ok := getConfigByName (init .Name (), lintersCfg )
196
+ func getLinterTypedConfig (ci initializer.ConfigurableAnalyzerInitializer , lintersCfg config.LintersConfig ) (any , error ) {
197
+ rawConfig , ok := getConfigByName (ci .Name (), lintersCfg )
208
198
if ! ok {
209
199
return ci .ConfigType (), nil
210
200
}
@@ -257,3 +247,10 @@ func validateUnusedLinters(lintersCfg config.LintersConfig, validatedLinters set
257
247
258
248
return fieldErrors
259
249
}
250
+
251
+ // isConfigurable determines whether or not the initializer expects to be provided a config.
252
+ // When true, the initializer should also match the ConfigurableAnalyzerInitializer interface.
253
+ func isConfigurable (init initializer.AnalyzerInitializer ) (initializer.ConfigurableAnalyzerInitializer , bool ) {
254
+ ci , ok := init .(initializer.ConfigurableAnalyzerInitializer )
255
+ return ci , ok
256
+ }
0 commit comments