---
# Don't match any files that are not immediately under `qt/`, they are most likely auto generated headers
HeaderFilterRegex: .*/qt/[^/]*$

# Many of these checks are disabled only because the code hasn't been
# cleaned up yet. Pull requests welcomed.
Checks:
  - bugprone-*
  - -bugprone-branch-clone
  - -bugprone-easily-swappable-parameters
  - -bugprone-narrowing-conversions
  - cert-*
  - -cert-err58-cpp,
  - -cert-int09-c
  - clang-analyzer-*
  - cppcoreguidelines-*
  - -cppcoreguidelines-avoid-const-or-ref-data-members
  - -cppcoreguidelines-avoid-magic-numbers
  - -cppcoreguidelines-macro-usage
  - -cppcoreguidelines-narrowing-conversions
  - -cppcoreguidelines-non-private-member-variables-in-classes
  - -cppcoreguidelines-owning-memory
  - -cppcoreguidelines-pro-bounds-constant-array-index
  - -cppcoreguidelines-pro-bounds-pointer-arithmetic
  - -cppcoreguidelines-pro-type-const-cast
  - google-readability-*
  - google-runtime-operator
  - hicpp-*
  - -hicpp-multiway-paths-covered
  - -hicpp-named-parameter # alias of `readability-named-parameter`
  - -hicpp-signed-bitwise
  - -hicpp-special-member-functions # alias of `cppcoreguidelines-special-member-functions`
  - -hicpp-use-equals-delete # alias of `modernize-use-equals-delete`
  - misc-*
  - -misc-include-cleaner
  - -misc-no-recursion
  - -misc-non-private-member-variables-in-classes
  - modernize-*
  - -modernize-use-trailing-return-type # keep
  - performance-*
  - readability-*
  - -readability-container-contains
  - -readability-convert-member-functions-to-static
  - -readability-enum-initial-value
  - -readability-function-cognitive-complexity
  - -readability-identifier-length
  - -readability-implicit-bool-conversion
  - -readability-magic-numbers
  - -readability-redundant-access-specifiers # keep: 'private' vs 'private slots'

CheckOptions:
  - { key: cppcoreguidelines-avoid-do-while.IgnoreMacros,                   value: true       }
  - { key: readability-identifier-naming.ClassCase,                         value: CamelCase  }
#  - { key: readability-identifier-naming.ClassMethodCase,                   value: lower_case } TODO: enable later
  - { key: readability-identifier-naming.ConstexprVariableCase,             value: CamelCase  }
#  - { key: readability-identifier-naming.EnumConstantCase,                  value: UPPER_CASE } TODO: enable later
#  - { key: readability-identifier-naming.FunctionCase,                      value: lower_case } TODO: enable later
  - { key: readability-identifier-naming.GlobalConstantCase,                value: CamelCase  }
  - { key: readability-identifier-naming.MemberConstantCase,                value: CamelCase  }
  - { key: readability-identifier-naming.NamespaceCase,                     value: lower_case }
  - { key: readability-identifier-naming.PrivateMemberSuffix,               value: _          }
  - { key: readability-identifier-naming.ProtectedMemberSuffix,             value: _          }
  - { key: readability-identifier-naming.StaticConstantCase,                value: CamelCase  }
  - { key: readability-identifier-naming.StructCase,                        value: CamelCase  }
  - { key: readability-identifier-naming.TemplateParameterCase,             value: CamelCase  }
  - { key: readability-identifier-naming.VariableCase,                      value: lower_case }
  - { key: readability-implicit-bool-conversion.UseUpperCaseLiteralSuffix,  value: true       }
