---
# Configure clang-tidy for this project
Checks: >
  -*,
  bugprone-*,
  clang-analyzer-*,
  performance-*,
  portability-*,
  readability-*,
  -readability-magic-numbers,
  -readability-braces-around-statements,
  -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling

# Turn all warnings into errors
WarningsAsErrors: ''

# Configure clang-tidy to ignore certain headers
HeaderFilterRegex: '.*'

# Configure checks that allow for exceptions
CheckOptions:
  - { key: readability-function-cognitive-complexity.Threshold, value: 50         }
  - { key: readability-magic-numbers.IgnoredIntegerValues,     value: '1;2;3;4;8;16;32;64;128;256;512;1024;2048;4096;8192' }
  - { key: bugprone-argument-comment.StrictMode,               value: 0 }
  - { key: bugprone-easily-swappable-parameters.MinimumLength, value: 4 }
  - { key: bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField, value: 1 }
  - { key: readability-function-cognitive-complexity.Threshold, value: 50 }
  - { key: readability-function-size.LineThreshold,            value: 150 }
  - { key: readability-function-size.StatementThreshold,       value: 100 }
  - { key: readability-function-size.ParameterThreshold,       value: 10 }
  - { key: bugprone-assert-side-effect.AssertMacros,           value: 'assert'   }
  - { key: bugprone-assert-side-effect.CheckFunctionCalls,     value: 1          }
  - { key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic, value: 1 }
  - { key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic, value: 1 }