#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# options for analysis running
run:
  issues-exit-code: 1
  skip-dirs-use-default: true
  modules-download-mode: readonly
  deadline: 5m
  skip-dirs:
    - pkg/client/clientset
    - pkg/client/informers
    - pkg/client/listers
  skip-files:
    - pkg/apis/yunikorn.apache.org/v1alpha1/zz_generated.deepcopy.go

# settings of specific linters
linters-settings:
  errcheck:
    check-type-assertions: true
    check-blank: true
  golint:
    min-confidence: 0.8
  gofmt:
    simplify: true
  goimports:
    local-prefixes: github.com/apache/incubator-yunikorn
  govet:
    check-shadowing: true
  funlen:
    lines: 120
    statements: 80
  depguard:
    list-type: blacklist
    include-go-root: false
    packages:
      - github.com/sirupsen/logrus
      - github.com/stretchr/testify
    packages-with-error-messages:
      github.com/sirupsen/logrus: "logging is standardised via yunikorn logger and zap"
      github.com/stretchr/testify: "test assertions must use gotest.tools/assert"

# linters to use
linters:
  disable-all: true
  fast: false
  enable:
    - errcheck
    - unused
    - staticcheck
    - gosimple
    - structcheck
    - varcheck
    - ineffassign
    - deadcode
    - funlen
    - golint
    - gofmt
    - goimports
    - govet
    - goconst
    - depguard
    - nakedret
    - gocritic
    - godox
    - gosec
    - dogsled
    - whitespace

issues:
  exclude-use-default: true

  # Maximum issues count per one linter. Set to 0 to disable. Default is 50.
  max-issues-per-linter: 0

  # Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
  max-same-issues: 0

  # Show only new issues: if there are unstaged changes or untracked files,
  # only those changes are analyzed, else only changes in HEAD~ are analyzed.
  # It's a super-useful option for integration of golangci-lint into existing
  # large codebase. It's not practical to fix all existing issues at the moment
  # of integration: much better don't allow issues in new code.
  # Default is false.
  new: false

  # Show only new issues created after git revision `REV`
  # new-from-rev: REV

  # Show only new issues created in git patch with set file path.
  # new-from-patch: path/to/patch/file

