#
# 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
  timeout: 10m

# settings of specific linters
linters-settings:
  errcheck:
    check-type-assertions: true
    check-blank: true
  revive:
    confidence: 0.8
  gofmt:
    simplify: true
  goimports:
    local-prefixes: github.com/apache/yunikorn
  govet:
    check-shadowing: true
  funlen:
    lines: 120
    statements: 80
  depguard:
    rules:
      main:
        files:
          - $all
        deny:
          - pkg: "github.com/sirupsen/logrus"
            desc: "logging is standardised via yunikorn logger and zap"
          - pkg: "github.com/stretchr/testify"
            desc: "test assertions must use gotest.tools/v3/assert"

# linters to use
linters:
  disable-all: true
  fast: false
  enable:
    - errcheck
    - unused
    - staticcheck
    - gosimple
    - ineffassign
    - funlen
    - revive
    - 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
