diff --git a/.clang-tidy b/.clang-tidy index 28edb4f45..eb16ead47 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,43 +1,197 @@ ---- # SPDX-License-Identifier: CC0-1.0 -# SPDX-FileCopyrightText: 2018-2023, Collabora, Ltd. and the Monado contributors -# Ideally we'd turn back on some of these that are disabled. -# Things on the same line are synonyms +# SPDX-FileCopyrightText: 2018-2025, Collabora, Ltd. and the Monado contributors + +# The first block contains the enabled checks, the second block contains the disabled checks, +# and the third block contains the temporarily disabled checks Checks: | - clang-diagnostic-*, - clang-analyzer-*, - hicpp-signed-bitwise, - performance-*, + android-*, bugprone-*, cert-*, - readability-*, + clang-analyzer-*, + clang-diagnostic-*, + concurrency-*, + cppcoreguidelines-*', + hicpp-*, misc-*, - -modernize-*, + modernize-*, + performance-*, + portability-*, + readability-*, + + -android-cloexec-dup, + -android-cloexec-fopen, + -android-cloexec-open, + -bugprone-assignment-in-if-condition, + -bugprone-bool-pointer-implicit-conversion, + -bugprone-branch-clone, + -bugprone-casting-through-void, + -bugprone-crtp-constructor-accessibility, + -bugprone-easily-swappable-parameters, + -bugprone-exception-escape, + -bugprone-implicit-widening-of-multiplication-result, + -bugprone-inc-dec-in-conditions, + -bugprone-incorrect-roundings, + -bugprone-integer-division, -bugprone-macro-parentheses, - -bugprone-reserved-identifier,-cert-dcl37-c,-cert-dcl51-cpp, - -cert-dcl21-cpp, + -bugprone-misplaced-widening-cast, + -bugprone-multi-level-implicit-pointer-conversion, + -bugprone-narrowing-conversions, + -bugprone-reserved-identifier, + -bugprone-signed-char-misuse, + -bugprone-sizeof-expression, + -bugprone-suspicious-include, + -bugprone-suspicious-memory-comparison, + -bugprone-suspicious-realloc-usage, + -bugprone-suspicious-string-compare, + -bugprone-switch-missing-default-case, + -bugprone-undefined-memory-manipulation, + -bugprone-unhandled-self-assignment, + -cert-dcl03-c, + -cert-dcl16-c, + -cert-dcl37-c, + -cert-dcl50-cpp, + -cert-dcl51-cpp, + -cert-err33-c, + -cert-err34-c, + -cert-err58-cpp, + -cert-exp42-c, + -cert-flp30-c, + -cert-flp37-c, + -cert-int09-c, + -cert-msc30-c, + -cert-msc32-c, + -cert-msc50-cpp, + -cert-msc51-cpp, + -cert-oop54-cpp, + -cert-str34-c, + -clang-analyzer-core.CallAndMessage, + -clang-analyzer-core.NonNullParamChecker, + -clang-analyzer-core.NullDereference, + -clang-analyzer-core.UndefinedBinaryOperatorResult, + -clang-analyzer-core.uninitialized.Assign, + -clang-analyzer-core.uninitialized.Branch, + -clang-analyzer-cplusplus.InnerPointer, + -clang-analyzer-deadcode.DeadStores, + -clang-analyzer-optin.core.EnumCastOutOfRange, + -clang-analyzer-optin.cplusplus.UninitializedObject, + -clang-analyzer-optin.performance.Padding, + -clang-analyzer-optin.portability.UnixAPI, + -clang-analyzer-security.FloatLoopCounter, -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling, -clang-analyzer-security.insecureAPI.strcpy, - -clang-diagnostic-missing-braces, - -clang-diagnostic-missing-field-initializers, - -clang-diagnostic-unused-function, + -clang-analyzer-unix.Malloc, + -clang-analyzer-unix.StdCLibraryFunctions, + -clang-diagnostic-newline-eof, + -concurrency-mt-unsafe, + -hicpp-avoid-c-arrays, + -hicpp-braces-around-statements, + -hicpp-deprecated-headers, + -hicpp-explicit-conversions, + -hicpp-function-size, + -hicpp-member-init, + -hicpp-move-const-arg, + -hicpp-multiway-paths-covered, + -hicpp-named-parameter, + -hicpp-no-array-decay, + -hicpp-no-malloc, + -hicpp-noexcept-move, + -hicpp-signed-bitwise, + -hicpp-special-member-functions, + -hicpp-static-assert, + -hicpp-uppercase-literal-suffix, + -hicpp-use-auto, + -hicpp-use-emplace, + -hicpp-use-equals-default, + -hicpp-use-nullptr, + -hicpp-use-override, + -hicpp-vararg, + -misc-const-correctness, + -misc-header-include-cycle, + -misc-include-cleaner, + -misc-misplaced-const, + -misc-no-recursion, -misc-non-private-member-variables-in-classes, - -misc-static-assert,-cert-dcl03-c, - -misc-unused-using-decls, + -misc-redundant-expression, + -misc-static-assert, -misc-unused-parameters, + -misc-unused-using-decls, + -misc-unusedparameters, -misc-use-anonymous-namespace, + -misc-use-internal-linkage, + -modernize-avoid-c-arrays, + -modernize-concat-nested-namespaces, + -modernize-deprecated-headers, + -modernize-loop-convert, + -modernize-macro-to-enum, + -modernize-min-max-use-initializer-list, + -modernize-pass-by-value, + -modernize-raw-string-literal, + -modernize-redundant-void-arg, + -modernize-return-braced-init-list, + -modernize-type-traits, + -modernize-use-auto, + -modernize-use-bool-literals, + -modernize-use-constraints, + -modernize-use-designated-initializers, + -modernize-use-emplace, + -modernize-use-equals-default, + -modernize-use-nodiscard, + -modernize-use-nullptr, + -modernize-use-override, + -modernize-use-ranges, + -modernize-use-std-numbers, + -modernize-use-trailing-return-type, + -modernize-use-transparent-functors, + -modernize-use-using, + -performance-avoid-endl, + -performance-enum-size, + -performance-inefficient-string-concatenation, + -performance-inefficient-vector-operation, + -performance-move-const-arg, -performance-no-int-to-ptr, + -performance-noexcept-move-constructor, + -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-duplicate-include, + -readability-else-after-return, + -readability-enum-initial-value, -readability-function-cognitive-complexity, + -readability-function-size, -readability-identifier-length, -readability-implicit-bool-conversion, + -readability-inconsistent-declaration-parameter-name, + -readability-isolate-declaration, + -readability-magic-numbers, + -readability-make-member-function-const, + -readability-math-missing-parentheses, + -readability-named-parameter, + -readability-non-const-parameter, + -readability-qualified-auto, -readability-redundant-access-specifiers, - -readability-uppercase-literal-suffix,-hicpp-uppercase-literal-suffix, -# Notes: -# misc-static-assert turns our assert(false) in failure/bad cases into static_asserts. We should revise them, but not like that. -# cert-dcl21-cpp is an overkill "recommendation" to return a special type from iterator post-increment -WarningsAsErrors: '' -HeaderFilterRegex: 'src/xrt/.*' -AnalyzeTemporaryDtors: false + -readability-redundant-casting, + -readability-redundant-control-flow, + -readability-redundant-declaration, + -readability-redundant-inline-specifier, + -readability-redundant-member-init, + -readability-simplify-boolean-expr, + -readability-static-accessed-through-instance, + -readability-static-definition-in-anonymous-namespace, + -readability-suspicious-call-argument, + -readability-uppercase-literal-suffix, + -readability-use-anyofallof, + -readability-use-std-min-max, + +WarningsAsErrors: '*' +HeaderFilterRegex: '' FormatStyle: file -... diff --git a/src/external/.clang-tidy b/src/external/.clang-tidy new file mode 100644 index 000000000..9872fc973 --- /dev/null +++ b/src/external/.clang-tidy @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: CC0-1.0 +# SPDX-FileCopyrightText: 2025, Collabora, Ltd. and the Monado contributors + +# Disable all checks in this folder. +# misc-definitions-in-headers is a dummy check to avoid the `Error: no checks enabled.` error from +# clang-tidy prior to version 18 without the `--allow-empty-check` option +# See https://stackoverflow.com/a/58379342/22230066 +Checks: '-*,misc-definitions-in-headers' +CheckOptions: + - { key: HeaderFileExtensions, value: "x" }