autoCorrect: true
failFast: false

build:
  warningThreshold: 0
  failThreshold: 0
  weights:
    complexity: 2
    formatting: 1
    LongParameterList: 1
    comments: 1

potential-bugs:
  active: true
  DuplicateCaseInWhenExpression:
    active: true
  EqualsWithHashCodeExist:
    active: true
  ExplicitGarbageCollectionCall:
    active: true
  LateinitUsage:
    active: false
  UnsafeCallOnNullableType:
    active: false
  UnsafeCast:
    active: false

performance:
  active: true
  ForEachOnRange:
    active: true
  SpreadOperator:
    active: true

exceptions:
  active: true

empty-blocks:
  active: true

complexity:
  active: true
  LongMethod:
    threshold: 20
  LongParameterList:
    threshold: 5
  LargeClass:
    threshold: 150
  ComplexMethod:
    threshold: 10
  TooManyFunctions:
    threshold: 20
  ComplexCondition:
    threshold: 3
  LabeledExpression:
    active: false

code-smell:
  active: true
  FeatureEnvy:
    threshold: 0.5
    weight: 0.45
    base: 0.5

formatting:
  active: false

style:
  active: true
  NewLineAtEndOfFile:
    active: true
  ForbiddenComment:
    active: true
    values: 'TODO:,FIXME:,STOPSHIP:'
  WildcardImport:
    active: true
  MaxLineLength:
    active: true
    maxLineLength: 120
    excludePackageStatements: false
    excludeImportStatements: false
  NamingConventionViolation:
    active: true
    variablePattern: '^(_)?[a-z$][a-zA-Z$0-9]*$'
    constantPattern: '^([A-Z_]*|serialVersionUID)$'
    methodPattern: '^[a-z\s`$][a-zA-Z\s$0-9`]*$'
    classPattern: '[A-Z$][a-zA-Z$]*'
    enumEntryPattern: '^[A-Z$][a-zA-Z_$0-9]*$'

comments:
  active: true
  CommentOverPrivateMethod:
    active: true
  CommentOverPrivateProperty:
    active: true
  UndocumentedPublicClass:
    active: false
    searchInNestedClass: true
    searchInInnerClass: true
    searchInInnerInterface: true
  UndocumentedPublicFunction:
    active: false

# *experimental feature*
# Migration rules can be defined in the same config file or a new one
migration:
  active: false
  imports:
    # your.package.Class: new.package.or.Class
    # for example:
    # io.gitlab.arturbosch.detekt.api.Rule: io.gitlab.arturbosch.detekt.rule.Rule