aboutsummaryrefslogtreecommitdiffstats
path: root/.golangci.yml
blob: 1a5171205d9c82dff4654e6f9f389c599bd53e82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Copyright 2019 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

run:
  deadline: 8m
  skip-dirs:
    - pkg/kd
    - tools/syz-trace2syz
  # Autogenerated files take too much time and memory to load,
  # even if we skip them with skip-dirs.
  # So we define this tag and use it in the autogenerated files.
  build-tags:
    - codeanalysis

output:
  print-linter-name: false

linters:
  enable:
    - lll
    - vet
    - gofmt
    - revive
    - unconvert
    - goconst
    - unused
    - gosimple
    - misspell
    - gocyclo
    - vetshadow
    - megacheck
    - stylecheck
    - govet
    - whitespace
    - nestif
    - goprintffuncname
    - godot
    - gocognit
    - funlen
    - dupl
    - staticcheck
    - syz-linter
    - errorlint
  disable:
    - bodyclose
    - depguard
    - dogsled
    - gochecknoglobals
    - gochecknoinits
    - godox
    - goimports
    - gomnd
    - gomodguard
    - gosec
    - maligned
    - rowserrcheck
    - testpackage
    - typecheck
    - ineffassign
    # errcheck would be good to enable, but we need to fix existing warnings first.
    - errcheck
    - interfacer
    - unparam
    - nakedret
    - prealloc
    - scopelint
    - gocritic
    - wsl

linters-settings:
  revive:
    rules:
    - name: package-comments
      disabled: true
  lll:
    line-length: 120
  gocyclo:
    # TODO: consider reducing this value.
    min-complexity: 24
  dupl:
    threshold: 60
  goconst:
    min-len: 3
    min-occurrences: 3
  nestif:
    # TODO: consider reducing this value.
    min-complexity: 12
  godot:
    scope: toplevel
  gocognit:
    # TODO: consider reducing this value.
    min-complexity: 70
  funlen:
    # TODO: consider reducing these value.
    lines: 140
    statements: 80
  custom:
    syz-linter:
      path: bin/syz-linter.so
  errorlint:
    comparison: false # we want to use "err == iterator.Done"

issues:
  exclude-use-default: false
  max-same-issues: 0
  exclude:
    - "exported .* should have comment"
    - "comment on .* should be of the form"
    - "at least one file in a package should have a package comment"
    # This check gives false positives related to the standard log.Fatalf
    # (which is strange, standard log package should be supported).#
    - "SA5011: possible nil pointer dereference"
  exclude-rules:
    - path: (pkg/csource/generated.go|pkg/build/linux_generated.go)
      linters:
        - lll
    - path: (sys/.*/init.*|sys/targets/common.go)
      text: "don't use ALL_CAPS in Go names|should not use ALL_CAPS in Go names"
    - path: (prog/.*)
      text: "methods on the same type should have the same receiver name"
    - path: (dashboard/app/.*_test\.go)
      linters:
        - dupl
    - path: (prog/.*_test\.go)
      linters:
        - goconst
    - path: (.*_test\.go)
      text: "Function '.*' is too long"