Checks: >
  -*,
  arcadia-typeid-name-restriction,

  bugprone-argument-comment,
  bugprone-branch-clone,
  bugprone-exception-escape,
  bugprone-infinite-loop,
  bugprone-lambda-function-name,
  bugprone-signed-char-misuse,
  bugprone-string-integer-assignment,
  bugprone-suspicious-include,
  bugprone-use-after-move,

  cppcoreguidelines-avoid-non-const-global-variables,
  cppcoreguidelines-explicit-virtual-functions,
  cppcoreguidelines-pro-type-member-init,

  modernize-avoid-bind,
  modernize-concat-nested-namespaces,
  modernize-make-unique,
  modernize-use-default-member-init,
  modernize-use-equals-default,
  modernize-use-equals-delete,
  modernize-use-nullptr,
  modernize-use-using,

  performance-faster-string-find,
  performance-implicit-conversion-in-loop,
  performance-inefficient-algorith,
  performance-inefficient-string-concatenation,
  performance-inefficient-vector-operation,
  performance-move-const-arg,
  performance-move-constructor-init,
  performance-noexcept-move-constructor,
  performance-trivially-destructible,

  readability-braces-around-statements,
  readability-const-return-type,
  readability-container-size-empty,
  readability-convert-member-functions-to-static,
  readability-else-after-return,
  readability-identifier-naming,
  readability-inconsistent-declaration-parameter-name,
  readability-isolate-declaration,
  readability-make-member-function-const,
  readability-non-const-parameter,
  readability-redundant-control-flow,
  readability-redundant-declaration,
  readability-redundant-member-init,
  readability-redundant-smartptr-get,
  readability-redundant-string-cstr,
  readability-redundant-string-init,
  readability-simplify-boolean-expr,
  readability-static-accessed-through-instance,
  readability-static-definition-in-anonymous-namespace,
CheckOptions:
  - key: cppcoreguidelines-pro-type-member-init.IgnoreArrays
    value: true
  - key: cppcoreguidelines-pro-type-member-init.UseAssignment
    value: true
  - key: modernize-use-default-member-init.UseAssignment
    value: true
  - key: readability-identifier-naming.ClassCase
    value: CamelCase
  - key: readability-identifier-naming.PublicMemberCase
    value: CamelCase
  - key: readability-identifier-naming.ProtectedMemberCase
    value: CamelCase
  - key: readability-identifier-naming.ProtectedMemberSuffix
    value: _
  - key: readability-identifier-naming.PrivateMemberCase
    value: CamelCase
  - key: readability-identifier-naming.PrivateMemberSuffix
    value: _
  - key: readability-identifier-naming.FunctionCase
    value: CamelCase
  # do not tide public begin / end methods to workaround clang-tidy bug in range-based for loops
  - key: readability-identifier-naming.PublicMethodIgnoredRegexp
    value: "(begin|end|empty|size|ysize|front|back)"
  - key: readability-identifier-naming.PublicMethodCase
    value: CamelCase
  - key: readability-identifier-naming.ProtectedMethodCase
    value: CamelCase
  - key: readability-identifier-naming.PrivateMethodCase
    value: CamelCase
  - key: readability-identifier-naming.MacroDefinitionCase
    value: UPPER_CASE
  - key: readability-simplify-boolean-expr.ChainedConditionalReturn
    value: true
  - key: readability-simplify-boolean-expr.ChainedConditionalAssignment
    value: true
