# 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
  go: "1.18"
  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:
    - deadcode
    - depguard
    - dogsled
    - dupl
    - errcheck
    - funlen
    - goconst
    - gocritic
    - gocyclo
    - gofmt
    - goimports
    - revive
    - gosec
    - gosimple
    - govet
    - ineffassign
    - lll
    - misspell
    - nakedret
    - staticcheck
    - stylecheck
    - typecheck
    - unconvert
    - unused
    - varcheck
    - whitespace
  disable:
    - structcheck

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