disabled_rules:
  - trailing_whitespace
  - unused_setter_value
  - redundant_discardable_let
  - identifier_name

opt_in_rules:  
  - force_unwrapping
  - private_action
  - explicit_init
  - shorthand_optional_binding
  - trailing_closure

included:
  - ElementX
  - UnitTests
  - UITests
  - Tools/Scripts/Templates
excluded:
  - IntegrationTests
  - ElementX/Sources/Generated

line_length:
  warning: 250
  error: 1000

file_length:
  warning: 2000

type_name:
  min_length: 3
  max_length:
    warning: 150
    error: 1000

type_body_length:
  warning: 1000
  error: 1000

function_body_length:
  warning: 100
  error: 100

function_parameter_count:
  warning: 10
  error: 10

cyclomatic_complexity:
  ignores_case_statements: true

nesting:
  type_level:
    warning: 5

custom_rules:
  vstack_spacing:
    regex: "(?-s)VStack((?!spacing:).)*\\s*\\{"
    match_kinds: identifier
    message: "Please use explicit spacing in VStacks."
    severity: warning

  hstack_spacing:
    regex: "(?-s)HStack((?!spacing:).)*\\s*\\{"
    match_kinds: identifier
    message: "Please use explicit spacing in HStacks."
    severity: warning

  compound_color_conversion:
    regex: "UIColor\\(\\.compound"
    match_kinds: identifier
    message: "Please use the UIColor token directly to ensure the colour scheme is honoured."
    severity: warning

  print_deprecation:
    regex: "\\b(print)\\b"
    match_kinds: identifier
    message: "MXLog should be used instead of print()"
    severity: error

  print_ln_deprecation:
    regex: "\\b(println)\\b"
    match_kinds: identifier
    message: "MXLog should be used instead of println()"
    severity: error

  os_log_deprecation:
    regex: "\\b(os_log)\\b"
    match_kinds: identifier
    message: "MXLog should be used instead of os_log()"
    severity: error
