# 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
    ignore-tests: true # re-enable once goconst 1.7.0+ merged into golangci-lint
    ignore-strings: '.html'
  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"
