From 3a809f644c863a17ac665e19d7dcbf7209688d18 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Fri, 31 Jul 2026 13:26:27 +0200 Subject: [PATCH] [libc++abi] Add a clang-tidy config and test (#207324) This essentially copies the `.clang-tidy` file from libc++ into libc++abi, except that the naming conventions are updated to not add underscores and some checks are disabled that don't pass currently. They will be fixed in follow-ups. --- libcxx/test/libcxx/clang_tidy.sh.py | 5 +-- libcxxabi/.clang-tidy | 55 +++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 libcxxabi/.clang-tidy diff --git a/libcxx/test/libcxx/clang_tidy.sh.py b/libcxx/test/libcxx/clang_tidy.sh.py index 630428564597..7d270d199fbd 100644 --- a/libcxx/test/libcxx/clang_tidy.sh.py +++ b/libcxx/test/libcxx/clang_tidy.sh.py @@ -11,5 +11,6 @@ # RUN: %{python} %{libcxx-dir}/../clang-tools-extra/clang-tidy/tool/run-clang-tidy.py \ # RUN: -clang-tidy-binary %{clang-tidy} \ # RUN: -warnings-as-errors "*" \ -# RUN: -source-filter=".*libcxx/src.*" \ -# RUN: -quiet -p %{bin-dir}/.. +# RUN: -source-filter=".*libcxx(abi?)/src.*" \ +# RUN: -quiet -p %{bin-dir}/.. \ +# RUN: -header-filter=".*libcxx(abi?)/src.*" diff --git a/libcxxabi/.clang-tidy b/libcxxabi/.clang-tidy new file mode 100644 index 000000000000..cbb235141989 --- /dev/null +++ b/libcxxabi/.clang-tidy @@ -0,0 +1,55 @@ +Checks: > + bugprone-copy-constructor-init, + bugprone-dangling-handle, + bugprone-infinite-loop, + bugprone-stringview-nullptr, + bugprone-use-after-move, + + misc-definitions-in-headers, + misc-misplaced-const, + misc-non-copyable-objects, + misc-uniqueptr-reset-release, + + modernize-redundant-void-arg, + + readability-duplicate-include, + readability-function-cognitive-complexity, + readability-function-size, + readability-misplaced-array-index, + readability-redundant-control-flow, + readability-redundant-function-ptr-dereference, + readability-redundant-preprocessor, + readability-simplify-subscript-expr, + readability-uniqueptr-delete-release, + +CheckOptions: + - key: readability-function-cognitive-complexity.Threshold + value: 176 # TODO: bring that number down + - key: readability-function-size.LineThreshold + value: 491 # TODO: bring that number down + - key: readability-identifier-naming.GetConfigPerFile + value: false + - key: readability-identifier-naming.ParameterCase + value: lower_case + - key: readability-identifier-naming.PrivateMemberCase + value: lower_case + - key: readability-identifier-naming.PrivateMemberSuffix + value: _ + - key: readability-identifier-naming.LocalVariableCase + value: lower_case + - key: readability-identifier-naming.TemplateParameterCase + value: CamelCase + - key: readability-identifier-naming.ValueTemplateParameterCase + value: CamelCase + - key: readability-identifier-naming.ValueTemplateParameterIgnoredRegexp + value: (__[a-z_]|_[A-Z]).* # TODO: Converge on a single style for value template parameters + +# TODO: Enable these checks +# llvm-include-order, +# llvm-namespace-comment, +# modernize-loop-convert, +# modernize-use-equals-delete, +# modernize-use-nullptr, +# modernize-use-override, +# readability-identifier-naming, +# readability-simplify-boolean-expr,