# Style checks that contradict .clang-format (braces on one-line ifs) or the hot-path design
# (deliberately uninitialised buffers, FASTMM_ macros, explicit enum widths) are disabled.
# bugprone-* and performance-* stay errors; everything else is advisory.
Checks: >
  bugprone-*,
  performance-*,
  modernize-*,
  readability-*,
  cppcoreguidelines-*,
  clang-analyzer-*,
  misc-*,
  concurrency-*,
  -modernize-use-trailing-return-type,
  -readability-magic-numbers,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-bounds-constant-array-index,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-pro-type-union-access,
  -cppcoreguidelines-avoid-c-arrays,
  -modernize-avoid-c-arrays,
  -readability-identifier-length,
  -readability-function-cognitive-complexity,
  -misc-non-private-member-variables-in-classes,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -bugprone-easily-swappable-parameters,
  -cppcoreguidelines-avoid-do-while,
  -misc-include-cleaner,
  -readability-convert-member-functions-to-static,
  -readability-braces-around-statements,
  -readability-redundant-member-init,
  -readability-uppercase-literal-suffix,
  -readability-named-parameter,
  -modernize-use-nodiscard,
  -misc-const-correctness,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-pro-type-member-init,
  -cppcoreguidelines-macro-usage,
  -cppcoreguidelines-special-member-functions,
  -cppcoreguidelines-pro-type-vararg,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-avoid-non-const-global-variables,
  -performance-enum-size
WarningsAsErrors: 'bugprone-*,performance-*'
HeaderFilterRegex: '^.*/(include|src|apps)/.*'
CheckOptions:
  readability-identifier-naming.ClassCase: CamelCase
  readability-identifier-naming.StructCase: CamelCase
  readability-identifier-naming.EnumCase: CamelCase
  readability-identifier-naming.FunctionCase: lower_case
  readability-identifier-naming.VariableCase: lower_case
  readability-identifier-naming.PrivateMemberSuffix: _
  readability-identifier-naming.ConstexprVariablePrefix: k
  readability-identifier-naming.ConstexprVariableCase: CamelCase
  readability-identifier-naming.EnumConstantPrefix: ''
  readability-identifier-naming.EnumConstantCase: CamelCase
  readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
  readability-identifier-naming.MacroDefinitionPrefix: FASTMM_
  readability-identifier-naming.TemplateParameterCase: CamelCase
