7
7
"go/token"
8
8
"os"
9
9
"reflect"
10
+ "strings"
10
11
"sync"
11
12
12
13
"github.com/BurntSushi/toml"
@@ -186,6 +187,7 @@ func getReviveConfig(cfg *config.ReviveSettings) (*lint.Config, error) {
186
187
}
187
188
188
189
normalizeConfig (conf )
190
+ ignoreRules (conf )
189
191
190
192
reviveDebugf ("revive configuration: %#v" , conf )
191
193
@@ -254,23 +256,23 @@ func safeTomlSlice(r []interface{}) []interface{} {
254
256
// This element is not exported by revive, so we need copy the code.
255
257
// Extracted from https://github.com/mgechev/revive/blob/v1.1.4/config/config.go#L15
256
258
var defaultRules = []lint.Rule {
257
- & rule.VarDeclarationsRule {},
259
+ // &rule.VarDeclarationsRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (var-declaration)
258
260
& rule.PackageCommentsRule {},
259
261
& rule.DotImportsRule {},
260
262
& rule.BlankImportsRule {},
261
263
& rule.ExportedRule {},
262
264
& rule.VarNamingRule {},
263
265
& rule.IndentErrorFlowRule {},
264
266
& rule.RangeRule {},
265
- & rule.ErrorfRule {},
267
+ // &rule.ErrorfRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (errorf
266
268
& rule.ErrorNamingRule {},
267
269
& rule.ErrorStringsRule {},
268
270
& rule.ReceiverNamingRule {},
269
271
& rule.IncrementDecrementRule {},
270
272
& rule.ErrorReturnRule {},
271
- & rule.UnexportedReturnRule {},
272
- & rule.TimeNamingRule {},
273
- & rule.ContextKeysType {},
273
+ // &rule.UnexportedReturnRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (unexported-return)
274
+ // &rule.TimeNamingRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (time-naming)
275
+ // &rule.ContextKeysType{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (context-keys-type)
274
276
& rule.ContextAsArgumentRule {},
275
277
}
276
278
@@ -291,15 +293,15 @@ var allRules = append([]lint.Rule{
291
293
& rule.FlagParamRule {},
292
294
& rule.UnnecessaryStmtRule {},
293
295
& rule.StructTagRule {},
294
- & rule.ModifiesValRecRule {},
296
+ // &rule.ModifiesValRecRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (modifies-value-receiver)
295
297
& rule.ConstantLogicalExprRule {},
296
298
& rule.BoolLiteralRule {},
297
299
& rule.RedefinesBuiltinIDRule {},
298
300
& rule.ImportsBlacklistRule {},
299
301
& rule.FunctionResultsLimitRule {},
300
302
& rule.MaxPublicStructsRule {},
301
303
& rule.RangeValInClosureRule {},
302
- & rule.RangeValAddress {},
304
+ // &rule.RangeValAddress{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (range-val-address)
303
305
& rule.WaitGroupByValueRule {},
304
306
& rule.AtomicRule {},
305
307
& rule.EmptyLinesRule {},
@@ -309,9 +311,9 @@ var allRules = append([]lint.Rule{
309
311
& rule.ImportShadowingRule {},
310
312
& rule.BareReturnRule {},
311
313
& rule.UnusedReceiverRule {},
312
- & rule.UnhandledErrorRule {},
314
+ // &rule.UnhandledErrorRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (unhandled-error)
313
315
& rule.CognitiveComplexityRule {},
314
- & rule.StringOfIntRule {},
316
+ // &rule.StringOfIntRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (string-of-int)
315
317
& rule.StringFormatRule {},
316
318
& rule.EarlyReturnRule {},
317
319
& rule.UnconditionalRecursionRule {},
@@ -322,7 +324,7 @@ var allRules = append([]lint.Rule{
322
324
& rule.NestedStructs {},
323
325
& rule.IfReturnRule {},
324
326
& rule.UselessBreak {},
325
- & rule.TimeEqualRule {},
327
+ // &rule.TimeEqualRule{}, // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997 (time-equal)
326
328
& rule.BannedCharsRule {},
327
329
& rule.OptimizeOperandsOrderRule {},
328
330
}, defaultRules ... )
@@ -388,3 +390,33 @@ func defaultConfig() *lint.Config {
388
390
}
389
391
return & defaultConfig
390
392
}
393
+
394
+ // TODO(ldez) https://github.com/golangci/golangci-lint/issues/2997
395
+ func ignoreRules (conf * lint.Config ) {
396
+ f := []string {
397
+ "context-keys-type" ,
398
+ "errorf" ,
399
+ "modifies-value-receiver" ,
400
+ "range-val-address" ,
401
+ "string-of-int" ,
402
+ "time-equal" ,
403
+ "time-naming" ,
404
+ "unexported-return" ,
405
+ "unhandled-error" ,
406
+ "var-declaration" ,
407
+ }
408
+
409
+ var ignored []string
410
+ for _ , s := range f {
411
+ if _ , ok := conf .Rules [s ]; ok {
412
+ delete (conf .Rules , s )
413
+ ignored = append (ignored , s )
414
+ }
415
+ }
416
+
417
+ if len (ignored ) > 0 {
418
+ linterLogger .Warnf ("revive: the following rules (%s) are ignored due to a performance problem " +
419
+ "(https://github.com/golangci/golangci-lint/issues/2997)" ,
420
+ strings .Join (ignored , "," ))
421
+ }
422
+ }
0 commit comments