# 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
  skip-dirs:
    - third-party

linters-settings:
  govet:
    check-shadowing: true
  revive:
    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-infra-e2e
  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"
