Checks: [
    "-*",
    "bugprone-*",
    "readability-braces-around-statements",
    "readability-else-after-return",
    "cppcoreguidelines-interfaces-global-init",
    "cppcoreguidelines-pro-type-member-init",
    "cppcoreguidelines-pro-type-static-cast-downcast",
    "cppcoreguidelines-pro-type-union-access",
    "cppcoreguidelines-slicing",
    "cppcoreguidelines-special-member-functions",
    "clang-analyzer-*",
    "concurrency-*",
    "cppcoreguidelines-*",
    "misc-*",
    "modernize-*",
    "performance-*",
    "portability-*",
    "readability-*",
    "-cert-err58-cpp",
    "-cppcoreguidelines-avoid-c-arrays",
    "-cppcoreguidelines-avoid-magic-numbers",
    "-readability-magic-numbers",
    "-cppcoreguidelines-avoid-non-const-global-variables",
    "-cppcoreguidelines-non-private-member-variables-in-classes",
    "-cppcoreguidelines-pro-bounds-array-to-pointer-decay",
    "-cppcoreguidelines-pro-bounds-constant-array-index",
    "-cppcoreguidelines-pro-bounds-pointer-arithmetic",
    "-cppcoreguidelines-pro-type-const-cast",
    "-cppcoreguidelines-pro-type-vararg",
    "-misc-no-recursion",
    "-misc-non-private-member-variables-in-classes",
    "-cppcoreguidelines-owning-memory", # needed for nanogui
    # These are too much of a pain in the *** IMO...
    "-readability-identifier-length",
    "-bugprone-easily-swappable-parameters",
    "-modernize-use-trailing-return-type",
    "-readability-uppercase-literal-suffix",
    "-cppcoreguidelines-avoid-do-while",
    "-readability-math-missing-parentheses",
  ]

WarningsAsErrors: >
  -*,
  bugprone-*,
  cert-*,
  clang-analyzer-*,
  concurrency-*,
  cppcoreguidelines-*,
  misc-*,
  portability-*,
  readability-implicit-bool-conversion,
  -concurrency-mt-unsafe,
  -readability-function-cognitive-complexity

HeaderFilterRegex: ".*"
FormatStyle: file

# Based on https://github.com/BehaviorTree/BehaviorTree.CPP/ rules
CheckOptions:
  - key: readability-function-cognitive-complexity.IgnoreMacros
    value: "true"

  # This change makes it compatible with MISRA:2023 rule 4.14.1
  - key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value: "true"
