# 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
  golint:
    min-confidence: 0
  gocyclo:
    min-complexity: 15
  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
    - golint
    - gosec
    - gosimple
    - govet
    - ineffassign
    - interfacer
    - 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"
