Checks: >-
  *,
  -abseil-*,
  -altera-*,
  -android-*,
  -darwin-*,
  -fuchsia-*,
  -linuxkernel-*,
  -llvm-*,
  -llvmlibc-*,
  -zircon-*,
  -readability-convert-member-functions-to-static,
  -modernize-use-trailing-return-type,
  -cppcoreguidelines-pro-type-vararg,
  -hicpp-vararg,
  -hicpp-uppercase-literal-suffix,
  -readability-uppercase-literal-suffix,
  -cert-dcl16-c,
  -cppcoreguidelines-macro-usage,
  -cppcoreguidelines-pro-type-cstyle-cast,
  -cppcoreguidelines-avoid-c-arrays,
  -performance-noexcept-move-constructor,
  -bugprone-unhandled-exception-at-new,
  -bugprone-lambda-function-name,
  -readability-identifier-length,
  -cert-err58-cpp,
  -hicpp-avoid-c-arrays,
  -misc-non-private-member-variables-in-classes,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -google-runtime-int,
  -google-default-arguments,
  -google-readability-casting,
  -bugprone-easily-swappable-parameters,
  -cppcoreguidelines-owning-memory,
  -modernize-avoid-c-arrays,
  -hicpp-named-parameter,
  -readability-named-parameter,
  -readability-implicit-bool-conversion,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -readability-function-cognitive-complexity,
  -cppcoreguidelines-pro-type-union-access,
  -hicpp-signed-bitwise,
  -hicpp-deprecated-headers,
  -hicpp-no-array-decay,
  -modernize-deprecated-headers,
  -readability-duplicate-include,
  -cert-err33-c,
  -misc-use-anonymous-namespace,
  -misc-include-cleaner,
  -*-use-nodiscard,
  -performance-enum-size,
  -modernize-use-designated-initializers,
  -cppcoreguidelines-avoid-goto,
  -hicpp-avoid-goto,
  -google-build-using-namespace,
  -hicpp-use-auto,
  -modernize-use-auto,
  -modernize-use-ranges,
  -boost-use-ranges,
  -misc-use-internal-linkage,
  -readability-redundant-member-init,
  -readability-qualified-auto,
  -readability-else-after-return,
  -readability-avoid-unconditional-preprocessor-if,
  -cppcoreguidelines-pro-bounds-constant-array-index,
  -cppcoreguidelines-avoid-do-while,
  -readability-math-missing-parentheses,
  -hicpp-multiway-paths-covered,
  -readability-avoid-nested-conditional-operator,
  -modernize-loop-convert,
  -cppcoreguidelines-special-member-functions,
  -hicpp-special-member-functions,
  -cppcoreguidelines-init-variables,
  -cppcoreguidelines-pro-type-member-init,
  -hicpp-member-init,
  -readability-inconsistent-declaration-parameter-name,
  -clang-analyzer-*,
  -bugprone-assignment-in-if-condition,
  -bugprone-macro-parentheses,
  -readability-static-accessed-through-instance,
  -misc-unused-parameters,
  -misc-no-recursion,
  -cppcoreguidelines-avoid-non-const-global-variables,
  -bugprone-implicit-widening-of-multiplication-result,
  -modernize-use-using,
  -performance-unnecessary-value-param,
  -bugprone-suspicious-stringview-data-usage,
  -readability-simplify-boolean-expr,
  -readability-redundant-string-cstr,
  -readability-redundant-casting,
  -performance-inefficient-vector-operation,
  -bugprone-branch-clone,
  -readability-make-member-function-const,
  -hicpp-use-equals-default,
  -modernize-use-equals-default,
  -bugprone-switch-missing-default-case,
  -google-readability-todo,
  -readability-identifier-naming,
  -concurrency-mt-unsafe,
  -cppcoreguidelines-use-enum-class,
  -portability-template-virtual-member-function,
  -modernize-use-integer-sign-comparison,
  -misc-const-correctness,
  -cppcoreguidelines-avoid-magic-numbers,
  -readability-magic-numbers

WarningsAsErrors: '*'

CheckOptions: [
  { key: readability-identifier-naming.PublicMemberPrefix, value: '' },
  { key: readability-identifier-naming.ProtectedMemberPrefix, value: 'm_' },
  { key: readability-identifier-naming.PrivateMemberPrefix, value: 'm_' },
  { key: readability-identifier-naming.GlobalVariablePrefix, value: 'g_' },

  { key: readability-identifier-naming.MemberCase, value: lower_case },
  { key: readability-identifier-naming.VariableCase, value: lower_case },
  { key: readability-identifier-naming.GlobalVariableCase, value: lower_case },
  { key: readability-identifier-naming.FunctionCase, value: lower_case },
  { key: readability-identifier-naming.MethodCase, value: lower_case },
  { key: readability-identifier-naming.NamespaceCase, value: lower_case },
  { key: readability-identifier-naming.LocalConstantCase, value: lower_case },
  { key: readability-identifier-naming.LocalConstexprVariableCase, value: UPPER_CASE },
  { key: readability-identifier-naming.StaticConstantCase, value: UPPER_CASE },

  { key: readability-identifier-naming.TemplateParameterCase, value: CamelCase },
  { key: readability-identifier-naming.StructCase, value: CamelCase },
  { key: readability-identifier-naming.ClassCase, value: CamelCase },
  { key: readability-identifier-naming.UnionCase, value: CamelCase },
  { key: readability-identifier-naming.EnumCase, value: CamelCase },
  { key: readability-identifier-naming.TypedefCase, value: CamelCase },
  { key: readability-identifier-naming.TypeAliasCase, value: CamelCase },

  { key: readability-identifier-naming.ConstantCase, value: UPPER_CASE },
  { key: readability-identifier-naming.ValueTemplateParameterCase, value: UPPER_CASE },

  { key: readability-magic-numbers.IgnorePowersOf2IntegerValues, value: true },
  { key: readability-magic-numbers.IgnoredIntegerValues, value: '3;5;6;7;9;10;443;1000' },
  { key: readability-magic-numbers.IgnoredFloatingPointValues, value: '1000000.0' },

  { key: cppcoreguidelines-avoid-magic-numbers.IgnorePowersOf2IntegerValues, value: true },
  { key: cppcoreguidelines-avoid-magic-numbers.IgnoredIntegerValues, value: '3;5;6;7;9;10;443;1000' },
  { key: cppcoreguidelines-avoid-magic-numbers.IgnoredFloatingPointValues, value: '1000000.0' },

  { key: cppcoreguidelines-pro-type-member-init.IgnoreArrays, value: true },

  { key: cppcoreguidelines-avoid-do-while.IgnoreMacros, value: true },
  { key: misc-const-correctness.AnalyzeValues, value: false },

  { key: performance-move-const-arg.CheckTriviallyCopyableMove, value: false },

  { key: concurrency-mt-unsafe.FunctionSet, value: 'glibc' },

  { key: bugprone-unchecked-optional-access.IgnoreValueCalls, value: true },

  { key: modernize-use-scoped-lock.WarnOnSingleLocks, value: false },
]
