# 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
  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-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
    - 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"
