# Licensed to 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. Apache Software Foundation (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.
# 

run:
  tests: false

linters-settings:
  govet:
    check-shadowing: true
  revive:
    min-confidence: 0
  gocyclo:
    min-complexity: 20
  maligned:
    suggest-new: true
  dupl:
    threshold: 200
  goconst:
    min-len: 2
    min-occurrences: 2
  depguard:
    list-type: blacklist
    include-go-root: true
    packages-with-error-messages:
      fmt: "logging is allowed only by logutils.Log"
  misspell:
    locale: US
    ignore-words:
      - analogue
      - analyse
      - artefact
      - authorised
      - calibre
      - cancelled
      - catalogue
      - categorise
      - centre
      - emphasised
      - favour
      - favourite
      - fulfil
      - fulfilment
      - initialise
      - labelling
      - labour
      - licence
      - maximise
      - modelled
      - modelling
      - offence
      - optimise
      - organisation
      - organise
      - practise
      - programme
      - realise
      - recognise
      - signalling
      - utilisation
  lll:
    line-length: 150
  goimports:
    local-prefixes: github.com/apache/skywalking-eyes/license-eye
  gocritic:
    enabled-tags:
      - diagnostic
      - experimental
      - opinionated
      - performance
      - style
    disabled-checks:
      - ifElseChain
  funlen:
    lines: 100
    statements: 50
  whitespace:
    multi-if: false
    multi-func: false

linters:
  enable:
    - bodyclose
    - deadcode
    - depguard
    - dogsled
    - dupl
    - errcheck
    - funlen
    - goconst
    - gocritic
    - gocyclo
    - gofmt
    - goimports
    - revive
    - gosec
    - gosimple
    - govet
    - ineffassign
    - lll
    - misspell
    - nakedret
    - staticcheck
    - structcheck
    - stylecheck
    - typecheck
    - unconvert
    - unparam
    - unused
    - varcheck
    - whitespace

service:
  golangci-lint-version: 1.20.x
  prepare:
    - echo "here I can run custom commands, but no preparation needed for this repo"
