Checks: '-*,
    misc-throw-by-value-catch-by-reference,
    misc-misplaced-const,
    misc-unconventional-assign-operator,
    misc-redundant-expression,
    misc-static-assert,
    misc-unconventional-assign-operator,
    misc-uniqueptr-reset-release,
    misc-unused-alias-decls,
    misc-unused-parameters,
    misc-unused-using-decls,
    
    modernize-avoid-bind,
    modernize-loop-convert,
    modernize-make-shared,
    modernize-make-unique,
    modernize-raw-string-literal,
    modernize-redundant-void-arg,
    modernize-replace-auto-ptr,
    modernize-replace-random-shuffle,
    modernize-use-bool-literals,
    modernize-use-nullptr,
    modernize-use-using,
    modernize-use-equals-default,
    modernize-use-equals-delete,

    performance-faster-string-find,
    performance-for-range-copy,
    performance-implicit-conversion-in-loop,
    performance-inefficient-algorithm,
    performance-inefficient-vector-operation,
    performance-move-constructor-init,
    performance-no-automatic-move,
    performance-trivially-destructible,
    performance-unnecessary-copy-initialization,
    
    readability-avoid-const-params-in-decls,
    readability-const-return-type,
    readability-container-size-empty,
    readability-convert-member-functions-to-static,
    readability-delete-null-pointer,
    readability-deleted-default,
    readability-make-member-function-const,
    readability-misplaced-array-index,
    readability-non-const-parameter,
    readability-qualified-auto,
    readability-redundant-access-specifiers,
    readability-redundant-control-flow,
    readability-redundant-function-ptr-dereference,
    readability-redundant-smartptr-get,
    readability-redundant-string-cstr,
    readability-redundant-string-init,
    readability-static-definition-in-anonymous-namespace,
    readability-string-compare,
    readability-uniqueptr-delete-release,
    readability-redundant-member-init,
    readability-simplify-subscript-expr,
    readability-simplify-boolean-expr,
    readability-inconsistent-declaration-parameter-name,
    readability-identifier-naming,
    
    bugprone-undelegated-constructor,
    bugprone-argument-comment,
    bugprone-bad-signal-to-kill-thread,
    bugprone-bool-pointer-implicit-conversion,
    bugprone-copy-constructor-init,
    bugprone-dangling-handle,
    bugprone-forward-declaration-namespace,
    bugprone-fold-init-type,
    bugprone-inaccurate-erase,
    bugprone-incorrect-roundings,
    bugprone-infinite-loop,
    bugprone-integer-division,
    bugprone-macro-parentheses,
    bugprone-macro-repeated-side-effects,
    bugprone-misplaced-operator-in-strlen-in-alloc,
    bugprone-misplaced-pointer-artithmetic-in-alloc,
    bugprone-misplaced-widening-cast,
    bugprone-move-forwarding-reference,
    bugprone-multiple-statement-macro,
    bugprone-parent-virtual-call,
    bugprone-posix-return,
    bugprone-reserved-identifier,
    bugprone-signed-char-misuse,
    bugprone-sizeof-container,
    bugprone-sizeof-expression,
    bugprone-string-constructor,
    bugprone-string-integer-assignment,
    bugprone-string-literal-with-embedded-nul,
    bugprone-suspicious-enum-usage,
    bugprone-suspicious-include,
    bugprone-suspicious-memset-usage,
    bugprone-suspicious-missing-comma,
    bugprone-suspicious-string-compare,
    bugprone-swapped-arguments,
    bugprone-terminating-continue,
    bugprone-throw-keyword-missing,
    bugprone-too-small-loop-variable,
    bugprone-undefined-memory-manipulation,
    bugprone-unhandled-self-assignment,
    bugprone-unused-raii,
    bugprone-unused-return-value,
    bugprone-use-after-move,
    bugprone-virtual-near-miss,
    
    cert-dcl21-cpp,
    cert-dcl50-cpp,
    cert-env33-c,
    cert-err34-c,
    cert-err52-cpp,
    cert-flp30-c,
    cert-mem57-cpp,
    cert-msc50-cpp,
    cert-oop58-cpp,
    
    google-build-explicit-make-pair,
    google-build-namespaces,
    google-default-arguments,
    google-explicit-constructor,
    google-readability-casting,
    google-readability-avoid-underscore-in-googletest-name,
    google-runtime-int,
    google-runtime-operator,
    
    hicpp-exception-baseclass,
    
    clang-analyzer-core.CallAndMessage,
    clang-analyzer-core.DivideZero,
    clang-analyzer-core.NonNullParamChecker,
    clang-analyzer-core.NullDereference,
    clang-analyzer-core.StackAddressEscape,
    clang-analyzer-core.UndefinedBinaryOperatorResult,
    clang-analyzer-core.VLASize,
    clang-analyzer-core.uninitialized.ArraySubscript,
    clang-analyzer-core.uninitialized.Assign,
    clang-analyzer-core.uninitialized.Branch,
    clang-analyzer-core.uninitialized.CapturedBlockVariable,
    clang-analyzer-core.uninitialized.UndefReturn,
    clang-analyzer-cplusplus.InnerPointer,
    clang-analyzer-cplusplus.NewDelete,
    clang-analyzer-cplusplus.NewDeleteLeaks,
    clang-analyzer-cplusplus.PlacementNewChecker,
    clang-analyzer-cplusplus.SelfAssignment,
    clang-analyzer-deadcode.DeadStores,
    clang-analyzer-optin.cplusplus.VirtualCall,
    clang-analyzer-security.insecureAPI.UncheckedReturn,
    clang-analyzer-security.insecureAPI.bcmp,
    clang-analyzer-security.insecureAPI.bcopy,
    clang-analyzer-security.insecureAPI.bzero,
    clang-analyzer-security.insecureAPI.getpw,
    clang-analyzer-security.insecureAPI.gets,
    clang-analyzer-security.insecureAPI.mkstemp,
    clang-analyzer-security.insecureAPI.mktemp,
    clang-analyzer-security.insecureAPI.rand,
    clang-analyzer-security.insecureAPI.strcpy,
    clang-analyzer-unix.Malloc,
    clang-analyzer-unix.MallocSizeof,
    clang-analyzer-unix.MismatchedDeallocator,
    clang-analyzer-unix.Vfork,
    clang-analyzer-unix.cstring.BadSizeArg,
    clang-analyzer-unix.cstring.NullArg,

    boost-use-to-string,
'
WarningsAsErrors: '*'

CheckOptions:
  - key: readability-identifier-naming.ClassCase
    value: CamelCase
  - key: readability-identifier-naming.EnumCase
    value: CamelCase
  - key: readability-identifier-naming.LocalVariableCase
    value: lower_case
  - key: readability-identifier-naming.StaticConstantCase
    value: aNy_CasE
  - key: readability-identifier-naming.MemberCase
    value: lower_case
  - key: readability-identifier-naming.PrivateMemberPrefix
    value: ''
  - key: readability-identifier-naming.ProtectedMemberPrefix
    value: ''
  - key: readability-identifier-naming.PublicMemberCase
    value: lower_case
  - key: readability-identifier-naming.MethodCase
    value: camelBack
  - key: readability-identifier-naming.PrivateMethodPrefix
    value: ''
  - key: readability-identifier-naming.ProtectedMethodPrefix
    value: ''
  - key: readability-identifier-naming.ParameterPackCase
    value: lower_case
  - key: readability-identifier-naming.StructCase
    value: CamelCase
  - key: readability-identifier-naming.TemplateTemplateParameterCase
    value: CamelCase
  - key: readability-identifier-naming.TemplateUsingCase
    value: lower_case
  - key: readability-identifier-naming.TypeTemplateParameterCase
    value: CamelCase
  - key: readability-identifier-naming.TypedefCase
    value: CamelCase
  - key: readability-identifier-naming.UnionCase
    value: CamelCase
  - key: readability-identifier-naming.UsingCase
    value: CamelCase