Checks:
  - bugprone-*
  - -bugprone-easily-swappable-parameters
  - -bugprone-narrowing-conversions
  - -bugprone-implicit-widening-of-multiplication-result
  - -bugprone-unchecked-optional-access
  - cert-*
  - clang-diagnostic-*
  - clang-analyzer-*
  - clang-analyzer-core.*
  - clang-analyzer-cplusplus.*
  - clang-analyzer-nullability.*
  - clang-analyzer-unix.*
  - cppcoreguidelines-*
  - -cppcoreguidelines-avoid-const-or-ref-data-members
  - -cppcoreguidelines-avoid-magic-numbers
  - -cppcoreguidelines-macro-usage
  - -cppcoreguidelines-narrowing-conversions
  - -cppcoreguidelines-pro-bounds-constant-array-index
  - -cppcoreguidelines-special-member-functions
  - modernize-*
  - -modernize-use-trailing-return-type
  - -modernize-macro-to-enum
  # already covered by cppcoreguidelines-avoid-c-arrays
  - -modernize-avoid-c-arrays
  - performance-*
  - -performance-enum-size
  - portability-*
  - -portability-template-virtual-member-function
  - readability-*
  - -readability-magic-numbers
  - -readability-identifier-length
  - -readability-implicit-bool-conversion
  - -readability-named-parameter
  - -readability-redundant-member-init
  - -readability-math-missing-parentheses
  - -readability-isolate-declaration
  - -readability-qualified-auto
# TODO
  - -cppcoreguidelines-init-variables
  - -cppcoreguidelines-pro-bounds-pointer-arithmetic
  - -cppcoreguidelines-pro-type-member-init
  - -cppcoreguidelines-pro-type-reinterpret-cast
  - -modernize-pass-by-value
  - -modernize-use-nodiscard
  - -modernize-use-designated-initializers
  - -readability-avoid-nested-conditional-operator
  - -readability-convert-member-functions-to-static
  - -readability-function-cognitive-complexity
  - -readability-function-size
WarningsAsErrors: 'bugprone-use-after-move'
UseColor: true
ExtraArgsBefore: ['-Wno-unknown-warning-option']
CheckOptions:
  - key: cppcoreguidelines-avoid-do-while.IgnoreMacros
    value: true
