# Explicit positive list of clang-tidy checks. # # Why an explicit list (vs category wildcards like bugprone-*, misc-*, ...): # upgrading the clang-tidy binary to a newer LLVM auto-enables every # newly-introduced check in those categories, producing surprise failures. # With an explicit list, new checks added by future LLVMs do NOT activate # until they are added here on purpose. # # Generated from `clang-tidy --list-checks` against LLVM 21 with the prior # wildcard config. 404 checks total. Re-generate after a deliberate # clang-tidy upgrade to pick up new checks. # # Checks the prior wildcard config explicitly excluded (and which therefore # remain absent here on purpose — do not add without discussion): # # This check is useless for us. Many objects (like tensors or problem descriptions) # have mutiple parameters of the same type # -bugprone-easily-swappable-parameters # # Too many narrowing conversions in our code # -bugprone-narrowing-conversions # # We shouldn't be using rand() # -cert-msc30-c # # We really shouldn't use bitwise operators with signed integers, but opencl leaves us no choice # -hicpp-signed-bitwise # # This one is extremely slow, and probably has lots of FPs # -misc-confusable-identifiers # # TODO We are not ready to use it, but very useful # -readability-function-cognitive-complexity # # We dont think this is a useful check. Disabled on migraphx # -readability-identifier-length # # There are many FPs with this, let's disable it (ditto in MIGraphX) # -readability-suspicious-call-argument # # TODO Code Quality WORKAROUND ROCm 5.1 update # -cert-err33-c # -google-readability-casting # -hicpp-use-emplace # -modernize-use-emplace # -performance-unnecessary-copy-initialization # -readability-container-data-pointer # # TODO Code Quality WORKAROUND ROCm 5.3 && Ubuntu 22.04 && C++17 && cppcheck 2.9 update # -bugprone-use-after-move # -clang-analyzer-cplusplus.NewDeleteLeaks # -hicpp-deprecated-headers # -hicpp-invalid-access-moved # -hicpp-member-init # -modernize-concat-nested-namespaces # -modernize-deprecated-headers # -modernize-macro-to-enum # -modernize-unary-static-assert # -modernize-use-nodiscard # -performance-no-automatic-move # -readability-redundant-declaration # -readability-simplify-boolean-expr # # TODO Code Quality WORKAROUND ROCm 5.4.2 # -misc-const-correctness # # TODO Code Quality WORKAROUND ROCm 5.6 # -cppcoreguidelines-avoid-const-or-ref-data-members # -cppcoreguidelines-avoid-do-while # -misc-use-anonymous-namespace # # TODO Code Quality WORKAROUND ROCm 5.7 # -bugprone-lambda-function-name # -cppcoreguidelines-avoid-capture-default-when-capturing-this # -cppcoreguidelines-rvalue-reference-param-not-moved # -llvmlibc-inline-function-decl # -readability-avoid-unconditional-preprocessor-if # # TODO Code Quality WORKAROUND ROCm 6.1 # -cppcoreguidelines-misleading-capture-default-by-value # -cppcoreguidelines-missing-std-forward # -cppcoreguidelines-use-default-member-init # -misc-include-cleaner # -modernize-type-traits # -performance-avoid-endl # # TODO Code Quality WORKAROUND ROCm 6.2 # -readability-container-size-empty # -bugprone-inc-dec-in-conditions # -readability-avoid-nested-conditional-operator # -performance-enum-size # -readability-redundant-member-init # -bugprone-multi-level-implicit-pointer-conversion # -clang-analyzer-optin.core.EnumCastOutOfRange # -cppcoreguidelines-macro-to-enum # -cppcoreguidelines-owning-memory # -readability-avoid-return-with-void-value # -bugprone-unused-local-non-trivial-variable # # Additional excluded checks (no rationale documented in original config): # -abseil-* # -altera-* # -fuchsia-* # -android-cloexec-fopen # -boost-use-ranges # -bugprone-crtp-constructor-accessibility # -bugprone-exception-escape # -bugprone-macro-parentheses # -bugprone-nondeterministic-pointer-iteration-order # -bugprone-return-const-ref-from-parameter # -bugprone-suspicious-stringview-data-usage # -bugprone-unintended-char-ostream-output # -cert-env33-c # -cert-int09-c # -cert-msc32-c # -cert-msc50-cpp # -cert-msc51-cpp # -clang-analyzer-alpha.core.CastToStruct # -clang-analyzer-optin.cplusplus.UninitializedObject # -clang-analyzer-optin.performance.Padding # -clang-diagnostic-extern-c-compat # -clang-diagnostic-missing-noreturn # -clang-diagnostic-unused-command-line-argument # -cppcoreguidelines-avoid-c-arrays # -cppcoreguidelines-avoid-magic-numbers # -cppcoreguidelines-explicit-virtual-functions # -cppcoreguidelines-init-variables # -cppcoreguidelines-macro-usage # -cppcoreguidelines-narrowing-conversions # -cppcoreguidelines-non-private-member-variables-in-classes # -cppcoreguidelines-prefer-member-initializer # -cppcoreguidelines-pro-bounds-array-to-pointer-decay # -cppcoreguidelines-pro-bounds-constant-array-index # -cppcoreguidelines-pro-bounds-pointer-arithmetic # -cppcoreguidelines-pro-type-member-init # -cppcoreguidelines-pro-type-reinterpret-cast # -cppcoreguidelines-pro-type-union-access # -cppcoreguidelines-pro-type-vararg # -cppcoreguidelines-special-member-functions # -cppcoreguidelines-use-enum-class # -google-explicit-constructor # -google-readability-braces-around-statements # -google-readability-todo # -google-runtime-int # -google-runtime-references # -hicpp-avoid-c-arrays # -hicpp-braces-around-statements # -hicpp-explicit-conversions # -hicpp-named-parameter # -hicpp-no-array-decay # -hicpp-special-member-functions # -hicpp-uppercase-literal-suffix # -hicpp-use-auto # -hicpp-use-equals-default # -hicpp-use-override # -hicpp-vararg # -llvm-else-after-return # -llvm-header-guard # -llvm-include-order # -llvm-prefer-static-over-anonymous-namespace # -llvm-qualified-auto # -llvmlibc-callee-namespace # -llvmlibc-implementation-in-namespace # -llvmlibc-restrict-system-libc-headers # -misc-misplaced-const # -misc-no-recursion # -misc-non-private-member-variables-in-classes # -misc-redundant-expression # -misc-use-internal-linkage # -modernize-avoid-bind # -modernize-avoid-c-arrays # -modernize-min-max-use-initializer-list # -modernize-pass-by-value # -modernize-use-auto # -modernize-use-constraints # -modernize-use-default-member-init # -modernize-use-designated-initializers # -modernize-use-equals-default # -modernize-use-integer-sign-comparison # -modernize-use-ranges # -modernize-use-scoped-lock # -modernize-use-trailing-return-type # -modernize-use-transparent-functors # -performance-unnecessary-value-param # -portability-avoid-pragma-once # -portability-template-virtual-member-function # -readability-braces-around-statements # -readability-container-contains # -readability-convert-member-functions-to-static # -readability-else-after-return # -readability-enum-initial-value # -readability-isolate-declaration # -readability-magic-numbers # -readability-math-missing-parentheses # -readability-named-parameter # -readability-qualified-auto # -readability-redundant-casting # -readability-redundant-inline-specifier # -readability-redundant-string-init # -readability-uppercase-literal-suffix # -readability-use-concise-preprocessor-directives # -readability-use-std-min-max # Checks: >- -*, android-cloexec-accept, android-cloexec-accept4, android-cloexec-creat, android-cloexec-dup, android-cloexec-epoll-create, android-cloexec-epoll-create1, android-cloexec-inotify-init, android-cloexec-inotify-init1, android-cloexec-memfd-create, android-cloexec-open, android-cloexec-pipe, android-cloexec-pipe2, android-cloexec-socket, android-comparison-in-temp-failure-retry, boost-use-to-string, 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-capturing-this-in-member-variable, bugprone-casting-through-void, bugprone-chained-comparison, bugprone-compare-pointer-to-member-virtual-function, bugprone-copy-constructor-init, bugprone-dangling-handle, bugprone-dynamic-static-initializers, bugprone-empty-catch, bugprone-fold-init-type, bugprone-forward-declaration-namespace, bugprone-forwarding-reference-overload, bugprone-implicit-widening-of-multiplication-result, bugprone-inaccurate-erase, bugprone-incorrect-enable-if, bugprone-incorrect-enable-shared-from-this, bugprone-incorrect-roundings, bugprone-infinite-loop, bugprone-integer-division, bugprone-macro-repeated-side-effects, bugprone-misleading-setter-of-reference, 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-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-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-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-raii, bugprone-unused-return-value, bugprone-virtual-near-miss, cert-arr39-c, cert-con36-c, cert-con54-cpp, cert-ctr56-cpp, cert-dcl03-c, cert-dcl16-c, cert-dcl37-c, cert-dcl50-cpp, cert-dcl51-cpp, cert-dcl54-cpp, cert-dcl58-cpp, cert-dcl59-cpp, cert-err09-cpp, cert-err34-c, cert-err52-cpp, cert-err58-cpp, cert-err60-cpp, cert-err61-cpp, cert-exp42-c, cert-fio38-c, cert-flp30-c, cert-flp37-c, cert-mem57-cpp, cert-msc24-c, cert-msc33-c, cert-msc54-cpp, cert-oop11-cpp, cert-oop54-cpp, cert-oop57-cpp, cert-oop58-cpp, cert-pos44-c, cert-pos47-c, cert-sig30-c, cert-str34-c, clang-analyzer-apiModeling.Errno, clang-analyzer-apiModeling.TrustNonnull, clang-analyzer-apiModeling.TrustReturnsNonnull, clang-analyzer-apiModeling.google.GTest, clang-analyzer-apiModeling.llvm.CastValue, clang-analyzer-apiModeling.llvm.ReturnValue, clang-analyzer-core.BitwiseShift, clang-analyzer-core.CallAndMessage, clang-analyzer-core.CallAndMessageModeling, clang-analyzer-core.DereferenceModeling, clang-analyzer-core.DivideZero, clang-analyzer-core.DynamicTypePropagation, clang-analyzer-core.FixedAddressDereference, clang-analyzer-core.NonNullParamChecker, clang-analyzer-core.NonnilStringConstants, clang-analyzer-core.NullDereference, clang-analyzer-core.StackAddrEscapeBase, clang-analyzer-core.StackAddressEscape, clang-analyzer-core.UndefinedBinaryOperatorResult, clang-analyzer-core.VLASize, clang-analyzer-core.builtin.AssumeModeling, clang-analyzer-core.builtin.BuiltinFunctions, clang-analyzer-core.builtin.NoReturnFunctions, clang-analyzer-core.uninitialized.ArraySubscript, clang-analyzer-core.uninitialized.Assign, clang-analyzer-core.uninitialized.Branch, clang-analyzer-core.uninitialized.CapturedBlockVariable, clang-analyzer-core.uninitialized.NewArraySize, clang-analyzer-core.uninitialized.UndefReturn, clang-analyzer-cplusplus.ArrayDelete, clang-analyzer-cplusplus.InnerPointer, clang-analyzer-cplusplus.Move, clang-analyzer-cplusplus.NewDelete, clang-analyzer-cplusplus.PlacementNew, clang-analyzer-cplusplus.PureVirtualCall, clang-analyzer-cplusplus.SelfAssignment, clang-analyzer-cplusplus.SmartPtrModeling, clang-analyzer-cplusplus.StringChecker, clang-analyzer-deadcode.DeadStores, clang-analyzer-fuchsia.HandleChecker, clang-analyzer-nullability.NullPassedToNonnull, clang-analyzer-nullability.NullReturnedFromNonnull, clang-analyzer-nullability.NullableDereferenced, clang-analyzer-nullability.NullablePassedToNonnull, clang-analyzer-nullability.NullableReturnedFromNonnull, clang-analyzer-optin.cplusplus.VirtualCall, clang-analyzer-optin.mpi.MPI-Checker, clang-analyzer-optin.osx.OSObjectCStyleCast, clang-analyzer-optin.osx.cocoa.localizability.EmptyLocalizationContextChecker, clang-analyzer-optin.osx.cocoa.localizability.NonLocalizedStringChecker, clang-analyzer-optin.performance.GCDAntipattern, clang-analyzer-optin.portability.UnixAPI, clang-analyzer-optin.taint.GenericTaint, clang-analyzer-optin.taint.TaintPropagation, clang-analyzer-optin.taint.TaintedAlloc, clang-analyzer-optin.taint.TaintedDiv, clang-analyzer-osx.API, clang-analyzer-osx.MIG, clang-analyzer-osx.NSOrCFErrorDerefChecker, clang-analyzer-osx.NumberObjectConversion, clang-analyzer-osx.OSObjectRetainCount, clang-analyzer-osx.ObjCProperty, clang-analyzer-osx.SecKeychainAPI, clang-analyzer-osx.cocoa.AtSync, clang-analyzer-osx.cocoa.AutoreleaseWrite, clang-analyzer-osx.cocoa.ClassRelease, clang-analyzer-osx.cocoa.Dealloc, clang-analyzer-osx.cocoa.IncompatibleMethodTypes, clang-analyzer-osx.cocoa.Loops, clang-analyzer-osx.cocoa.MissingSuperCall, clang-analyzer-osx.cocoa.NSAutoreleasePool, clang-analyzer-osx.cocoa.NSError, clang-analyzer-osx.cocoa.NilArg, clang-analyzer-osx.cocoa.NonNilReturnValue, clang-analyzer-osx.cocoa.ObjCGenerics, clang-analyzer-osx.cocoa.RetainCount, clang-analyzer-osx.cocoa.RetainCountBase, clang-analyzer-osx.cocoa.RunLoopAutoreleaseLeak, clang-analyzer-osx.cocoa.SelfInit, clang-analyzer-osx.cocoa.SuperDealloc, clang-analyzer-osx.cocoa.UnusedIvars, clang-analyzer-osx.cocoa.VariadicMethodTypes, clang-analyzer-osx.coreFoundation.CFError, clang-analyzer-osx.coreFoundation.CFNumber, clang-analyzer-osx.coreFoundation.CFRetainRelease, clang-analyzer-osx.coreFoundation.containers.OutOfBounds, clang-analyzer-osx.coreFoundation.containers.PointerSizedValues, clang-analyzer-security.ArrayBound, clang-analyzer-security.FloatLoopCounter, clang-analyzer-security.MmapWriteExec, clang-analyzer-security.PointerSub, clang-analyzer-security.PutenvStackArray, clang-analyzer-security.SetgidSetuidOrder, clang-analyzer-security.cert.env.InvalidPtr, clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling, clang-analyzer-security.insecureAPI.SecuritySyntaxChecker, clang-analyzer-security.insecureAPI.UncheckedReturn, clang-analyzer-security.insecureAPI.bcmp, clang-analyzer-security.insecureAPI.bcopy, clang-analyzer-security.insecureAPI.bzero, clang-analyzer-security.insecureAPI.decodeValueOfObjCType, 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-security.insecureAPI.vfork, clang-analyzer-unix.API, clang-analyzer-unix.BlockInCriticalSection, clang-analyzer-unix.Chroot, clang-analyzer-unix.DynamicMemoryModeling, clang-analyzer-unix.Errno, clang-analyzer-unix.Malloc, clang-analyzer-unix.MallocSizeof, clang-analyzer-unix.MismatchedDeallocator, clang-analyzer-unix.StdCLibraryFunctions, clang-analyzer-unix.Stream, clang-analyzer-unix.Vfork, clang-analyzer-unix.cstring.BadSizeArg, clang-analyzer-unix.cstring.CStringModeling, clang-analyzer-unix.cstring.NotNullTerminated, clang-analyzer-unix.cstring.NullArg, clang-analyzer-valist.CopyToSelf, clang-analyzer-valist.Uninitialized, clang-analyzer-valist.Unterminated, clang-analyzer-valist.ValistBase, clang-analyzer-webkit.NoUncountedMemberChecker, clang-analyzer-webkit.RefCntblBaseVirtualDtor, clang-analyzer-webkit.UncountedLambdaCapturesChecker, concurrency-mt-unsafe, concurrency-thread-canceltype-asynchronous, cppcoreguidelines-avoid-capturing-lambda-coroutines, cppcoreguidelines-avoid-goto, cppcoreguidelines-avoid-non-const-global-variables, cppcoreguidelines-avoid-reference-coroutine-parameters, cppcoreguidelines-c-copy-assignment-signature, cppcoreguidelines-interfaces-global-init, cppcoreguidelines-no-malloc, cppcoreguidelines-no-suspend-with-lock, cppcoreguidelines-noexcept-destructor, cppcoreguidelines-noexcept-move-operations, cppcoreguidelines-noexcept-swap, cppcoreguidelines-pro-type-const-cast, cppcoreguidelines-pro-type-cstyle-cast, cppcoreguidelines-pro-type-static-cast-downcast, cppcoreguidelines-slicing, cppcoreguidelines-virtual-class-destructor, darwin-avoid-spinlock, darwin-dispatch-once-nonstatic, google-build-explicit-make-pair, google-build-namespaces, google-build-using-namespace, google-default-arguments, google-global-names-in-headers, google-objc-avoid-nsobject-new, google-objc-avoid-throwing-exception, google-objc-function-naming, google-objc-global-variable-declaration, google-readability-avoid-underscore-in-googletest-name, google-readability-function-size, google-readability-namespace-comments, google-runtime-operator, google-upgrade-googletest-case, hicpp-avoid-goto, hicpp-exception-baseclass, hicpp-function-size, hicpp-ignored-remove-result, hicpp-move-const-arg, hicpp-multiway-paths-covered, hicpp-new-delete-operators, hicpp-no-assembler, hicpp-no-malloc, hicpp-noexcept-move, hicpp-static-assert, hicpp-undelegated-constructor, hicpp-use-equals-delete, hicpp-use-noexcept, hicpp-use-nullptr, linuxkernel-must-check-errs, llvm-namespace-comment, llvm-prefer-isa-or-dyn-cast-in-conditionals, llvm-prefer-register-over-unsigned, llvm-twine-local, misc-coroutine-hostile-raii, misc-definitions-in-headers, misc-header-include-cycle, misc-misleading-bidirectional, misc-misleading-identifier, misc-new-delete-overloads, misc-non-copyable-objects, 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, modernize-deprecated-ios-base-aliases, modernize-loop-convert, modernize-make-shared, modernize-make-unique, modernize-raw-string-literal, modernize-redundant-void-arg, modernize-replace-auto-ptr, modernize-replace-disallow-copy-and-assign-macro, modernize-replace-random-shuffle, modernize-return-braced-init-list, modernize-shrink-to-fit, modernize-use-bool-literals, modernize-use-equals-delete, modernize-use-noexcept, modernize-use-nullptr, modernize-use-override, modernize-use-starts-ends-with, modernize-use-std-format, modernize-use-std-numbers, modernize-use-std-print, modernize-use-uncaught-exceptions, modernize-use-using, mpi-buffer-deref, mpi-type-mismatch, objc-assert-equals, objc-avoid-nserror-init, objc-dealloc-in-category, objc-forbidden-subclassing, objc-missing-hash, objc-nsdate-formatter, objc-nsinvocation-argument-lifetime, objc-property-declaration, objc-super-self, openmp-exception-escape, openmp-use-default-none, 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-int-to-ptr, performance-noexcept-destructor, performance-noexcept-move-constructor, performance-noexcept-swap, performance-trivially-destructible, performance-type-promotion-in-math-fn, portability-restrict-system-includes, portability-simd-intrinsics, portability-std-allocator-const, readability-ambiguous-smartptr-reset-call, readability-avoid-const-params-in-decls, readability-const-return-type, readability-delete-null-pointer, readability-duplicate-include, readability-function-size, readability-identifier-naming, readability-implicit-bool-conversion, readability-inconsistent-declaration-parameter-name, readability-make-member-function-const, readability-misleading-indentation, readability-misplaced-array-index, readability-non-const-parameter, readability-operators-representation, readability-redundant-access-specifiers, readability-redundant-control-flow, readability-redundant-function-ptr-dereference, readability-redundant-preprocessor, readability-redundant-smartptr-get, readability-redundant-string-cstr, readability-reference-to-constructed-temporary, readability-simplify-subscript-expr, readability-static-accessed-through-instance, readability-static-definition-in-anonymous-namespace, readability-string-compare, readability-uniqueptr-delete-release, readability-use-anyofallof, zircon-temporary-objects, CheckOptions: - key: google-readability-braces-around-statements.ShortStatementLines value: '6' - key: hicpp-braces-around-statements.ShortStatementLines value: '6' - key: readability-braces-around-statements.ShortStatementLines # TODO: # Current value is 6. Even 4 is too much, but clang-tidy counts all lines after if(...) and with 2 # it generates warning even for trivial if-else statement: # if(...) # do_this(); # else # do_that(); # This also applies to aliases: # google-readability-braces-around-statements and # hicpp-braces-around-statements value: '6'