# list all enabled checks: clang-tidy -list-checks
# list all checks: clang-tidy -checks='*' -list-checks
# run checks on the cmd line: clang-tidy -checks='bugprone-*' *.cc (followed by all our includes, look it up in our wiki
#
Checks: '
    -*,
    bugprone-argument-comment,
    bugprone-assert-side-effect,
    bugprone-assignment-in-if-condition,
    bugprone-bad-signal-to-kill-thread,
    bugprone-bitwise-pointer-cast,
    bugprone-bool-pointer-implicit-conversion,
    bugprone-branch-clone,
    bugprone-casting-through-void,
    bugprone-chained-comparison,
    bugprone-compare-pointer-to-member-virtual-function,
    bugprone-copy-constructor-init,
    bugprone-crtp-constructor-accessibility,
    bugprone-dangling-handle,
    bugprone-dynamic-static-initializers,
    bugprone-empty-catch,
    bugprone-exception-escape,
    bugprone-fold-init-type,
    bugprone-forward-declaration-namespace,
    bugprone-forwarding-reference-overload,
   -bugprone-implicit-widening-of-multiplication-result,
    bugprone-inaccurate-erase,
    bugprone-inc-dec-in-conditions,
    bugprone-incorrect-enable-if,
    bugprone-incorrect-enable-shared-from-this,
    bugprone-incorrect-roundings,
    bugprone-infinite-loop,
    bugprone-integer-division,
    bugprone-lambda-function-name,
    bugprone-macro-parentheses,
    bugprone-macro-repeated-side-effects,
    bugprone-misplaced-operator-in-strlen-in-alloc,
    bugprone-misplaced-pointer-arithmetic-in-alloc,
    bugprone-misplaced-widening-cast,
    bugprone-move-forwarding-reference,
    bugprone-multiple-new-in-one-expression,
    bugprone-multiple-statement-macro,
    bugprone-no-escape,
    bugprone-non-zero-enum-to-bool-conversion,
    bugprone-nondeterministic-pointer-iteration-order,
    bugprone-not-null-terminated-result,
    bugprone-optional-value-conversion,
    bugprone-parent-virtual-call,
   -bugprone-pointer-arithmetic-on-polymorphic-object,
    bugprone-posix-return,
    bugprone-redundant-branch-condition,
    bugprone-reserved-identifier,
    bugprone-return-const-ref-from-parameter,
    bugprone-shared-ptr-array-mismatch,
    bugprone-signal-handler,
    bugprone-signed-char-misuse,
    bugprone-sizeof-container,
    bugprone-sizeof-expression,
    bugprone-spuriously-wake-up-functions,
    bugprone-standalone-empty,
    bugprone-string-constructor,
    bugprone-string-integer-assignment,
    bugprone-string-literal-with-embedded-nul,
    bugprone-stringview-nullptr,
    bugprone-suspicious-enum-usage,
    bugprone-suspicious-include,
    bugprone-suspicious-memory-comparison,
    bugprone-suspicious-memset-usage,
    bugprone-suspicious-missing-comma,
    bugprone-suspicious-realloc-usage,
    bugprone-suspicious-semicolon,
    bugprone-suspicious-string-compare,
    bugprone-suspicious-stringview-data-usage,
    bugprone-swapped-arguments,
    bugprone-switch-missing-default-case,
    bugprone-tagged-union-member-count,
    bugprone-terminating-continue,
    bugprone-throw-keyword-missing,
    bugprone-too-small-loop-variable,
    bugprone-unchecked-optional-access,
    bugprone-undefined-memory-manipulation,
    bugprone-undelegated-constructor,
    bugprone-unhandled-exception-at-new,
    bugprone-unhandled-self-assignment,
    bugprone-unique-ptr-array-mismatch,
    bugprone-unsafe-functions,
    bugprone-unused-local-non-trivial-variable,
    bugprone-unused-raii,
    bugprone-unused-return-value,
    bugprone-use-after-move,
    bugprone-virtual-near-miss,
   -cppcoreguidelines-macro-usage,
    cppcoreguidelines-prefer-member-initializer,
   -cppcoreguidelines-pro-type-static-cast-downcast,
    cppcoreguidelines-virtual-class-destructor,
    google-build-using-namespace,
    google-global-names-in-headers,
    hicpp-avoid-goto,
    hicpp-braces-around-statements,
    hicpp-deprecated-headers,
    hicpp-exception-baseclass,
    hicpp-explicit-conversions,
   -hicpp-function-size,
    hicpp-ignored-remove-result,
    hicpp-invalid-access-moved,
    hicpp-member-init,
    hicpp-move-const-arg,
    hicpp-multiway-paths-covered,
    hicpp-named-parameter,
    hicpp-new-delete-operators,
    hicpp-no-assembler,
    hicpp-no-malloc,
    hicpp-noexcept-move,
    hicpp-signed-bitwise,
    hicpp-special-member-functions,
    hicpp-static-assert,
    hicpp-undelegated-constructor,
    hicpp-uppercase-literal-suffix,
    hicpp-use-emplace,
    hicpp-use-equals-default,
    hicpp-use-equals-delete,
    hicpp-use-noexcept,
    hicpp-use-nullptr,
    hicpp-use-override,
    hicpp-vararg,
    misc-confusable-identifiers,
    misc-coroutine-hostile-raii,
    misc-definitions-in-headers,
    misc-header-include-cycle,
    misc-misleading-bidirectional,
    misc-misleading-identifier,
    misc-misplaced-const,
    misc-new-delete-overloads,
    -misc-no-recursion,
    misc-non-copyable-objects,
    misc-non-private-member-variables-in-classes,
    misc-redundant-expression,
    misc-static-assert,
    misc-throw-by-value-catch-by-reference,
    misc-unconventional-assign-operator,
    misc-uniqueptr-reset-release,
    misc-unused-alias-decls,
    misc-unused-parameters,
    misc-unused-using-decls,
    misc-use-anonymous-namespace,
    modernize-loop-convert,
    modernize-redundant-void-arg,
    modernize-use-bool-literals,
    modernize-use-emplace,
    modernize-use-equals-default,
    modernize-use-nullptr,
    modernize-use-using,
   -performance-enum-size,
    performance-faster-string-find,
    performance-for-range-copy,
    performance-implicit-conversion-in-loop,
    performance-inefficient-algorithm,
    performance-inefficient-string-concatenation,
    performance-inefficient-vector-operation,
    performance-move-const-arg,
    performance-move-constructor-init,
    performance-no-automatic-move,
    performance-no-int-to-ptr,
    performance-noexcept-destructor,
    performance-noexcept-move-constructor,
    performance-noexcept-swap,
    performance-trivially-destructible,
    performance-type-promotion-in-math-fn,
    performance-unnecessary-copy-initialization,
    performance-unnecessary-value-param,
    readability-avoid-const-params-in-decls,
    readability-avoid-nested-conditional-operator,
    readability-avoid-return-with-void-value,
    readability-avoid-unconditional-preprocessor-if,
    readability-braces-around-statements,
    readability-const-return-type,
    readability-container-contains,
    readability-container-data-pointer,
    readability-container-size-empty,
   -readability-convert-member-functions-to-static,
    readability-delete-null-pointer,
    readability-duplicate-include,
    readability-else-after-return,
    readability-enum-initial-value,
   -readability-function-size,
    readability-identifier-naming,
    readability-inconsistent-declaration-parameter-name,
    readability-isolate-declaration,
    readability-make-member-function-const,
   -readability-math-missing-parentheses,
    readability-misleading-indentation,
    readability-misplaced-array-index,
    readability-named-parameter,
    readability-non-const-parameter,
    readability-operators-representation,
    readability-qualified-auto,
    readability-redundant-access-specifiers,
    readability-redundant-casting,
    readability-redundant-declaration,
    readability-redundant-function-ptr-dereference,
    readability-redundant-inline-specifier,
    readability-redundant-member-init,
    readability-redundant-preprocessor,
    readability-redundant-smartptr-get,
    readability-redundant-string-cstr,
    readability-redundant-string-init,
    readability-reference-to-constructed-temporary,
    readability-simplify-subscript-expr,
    readability-static-accessed-through-instance,
    readability-static-definition-in-anonymous-namespace,
    readability-string-compare,
    readability-suspicious-call-argument,
    readability-uniqueptr-delete-release,
    readability-uppercase-literal-suffix,
    -readability-use-anyofallof,
    readability-use-std-min-max
    '

CheckOptions:
  readability-operators-representation.BinaryOperators: '&&;&=;&;|;~;!;!=;||;|=;^;^='
