---
# Clang-Tidy configuration for libaaruformat
# Enable useful checks while disabling overly strict/problematic ones

Checks: >
  bugprone-*,
  cert-*,
  clang-analyzer-*,
  concurrency-*,
  cppcoreguidelines-*,
  misc-*,
  performance-*,
  portability-*,
  readability-*,
  -bugprone-easily-swappable-parameters,
  -bugprone-narrowing-conversions,
  -cert-err33-c,
  -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-init-variables,
  -cppcoreguidelines-narrowing-conversions,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-type-cstyle-cast,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-pro-type-vararg,
  -misc-include-cleaner,
  -misc-unused-parameters,
  -performance-no-int-to-ptr,
  -portability-restrict-system-includes,
  -readability-braces-around-statements,
  -readability-function-cognitive-complexity,
  -readability-identifier-length,
  -readability-isolate-declaration,
  -readability-magic-numbers,
  -readability-math-missing-parentheses

CheckOptions:
  - key: bugprone-reserved-identifier.AllowedIdentifiers
    value: '__.*'
  - key: cert-dcl37-c.AggressiveDependentMemberLookup
    value: 'false'
  - key: cppcoreguidelines-avoid-magic-numbers.IgnoredIntegerValues
    value: '0;1;2;3;4;8;16;32;64;128;256;512;1024;2048;4096'
  - key: cppcoreguidelines-avoid-magic-numbers.IgnoredFloatingPointValues
    value: '0.0;1.0;2.0'
  - key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value: 'true'
  - key: performance-move-const-arg.CheckTriviallyCopyableMove
    value: 'false'
  - key: readability-braces-around-statements.ShortStatementLines
    value: '2'
  - key: readability-function-size.LineThreshold
    value: '200'
  - key: readability-function-size.StatementThreshold
    value: '150'
  - key: readability-function-size.BranchThreshold
    value: '25'
  - key: readability-function-size.ParameterThreshold
    value: '8'
  - key: readability-function-size.NestingThreshold
    value: '6'
  - key: readability-identifier-naming.FunctionCase
    value: 'lower_case'
  - key: readability-identifier-naming.VariableCase
    value: 'lower_case'
  - key: readability-identifier-naming.ParameterCase
    value: 'lower_case'
  - key: readability-identifier-naming.LocalVariableCase
    value: 'lower_case'
  - key: readability-identifier-naming.StructCase
    value: 'CamelCase'
  - key: readability-identifier-naming.UnionCase
    value: 'lower_case'
  - key: readability-identifier-naming.EnumCase
    value: 'CamelCase'
  - key: readability-identifier-naming.EnumConstantCase
    value: 'CamelCase'
  - key: readability-identifier-naming.MacroDefinitionCase
    value: 'UPPER_CASE'
  - key: readability-identifier-naming.GlobalConstantCase
    value: 'UPPER_CASE'
  - key: readability-simplify-boolean-expr.ChainedConditionalReturn
    value: 'true'
  - key: readability-simplify-boolean-expr.ChainedConditionalAssignment
    value: 'true'

WarningsAsErrors: ''
HeaderFilterRegex: '(src|include)/.*\.(h|hpp)$'
FormatStyle: file
