diff --git a/.clang-tidy b/.clang-tidy index a16136785..19c7dc642 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,3 +1,33 @@ +# Style or vendor rule sets that do not fit a header-only library: +# altera-*, fuchsia-*, llvmlibc-*, android-cloexec-fopen, boost-use-ranges, llvm-header-guard, +# llvm-include-order, llvm-prefer-static-over-anonymous-namespace, llvm-use-ranges, +# misc-use-anonymous-namespace, google-runtime-float, google-runtime-int, hicpp-signed-bitwise, +# bugprone-signed-bitwise, hicpp-explicit-conversions, google-explicit-constructor, +# cppcoreguidelines-explicit-constructor, misc-explicit-constructor (implicit conversions are the +# API), readability-trailing-comma, +# hicpp-avoid-goto / cppcoreguidelines-avoid-goto, hicpp-no-array-decay, +# hicpp-uppercase-literal-suffix, readability-uppercase-literal-suffix, modernize-use-trailing-return-type. +# Constructs the library needs on purpose (the library supports C++11 and legacy compilers): +# cppcoreguidelines-macro-usage, cppcoreguidelines-avoid-do-while (macros), +# cppcoreguidelines-pro-bounds-*, cppcoreguidelines-pro-type-reinterpret-cast, +# cppcoreguidelines-pro-type-union-access (parsers, serializers, basic_json's value union), +# cppcoreguidelines-avoid-const-or-ref-data-members, cppcoreguidelines-rvalue-reference-param-not-moved, +# cppcoreguidelines-avoid-non-const-global-variables, misc-non-private-member-variables-in-classes, +# misc-no-recursion (value walks are recursive, bounded by detail::recursion_depth_limit()), +# modernize-type-traits, modernize-use-constraints, modernize-use-ranges, modernize-use-std-numbers, +# modernize-use-designated-initializers, modernize-use-nodiscard, modernize-concat-nested-namespaces, +# readability-redundant-typename, readability-redundant-parentheses, +# readability-redundant-access-specifiers, readability-simplify-boolean-expr, +# readability-use-concise-preprocessor-directives, modernize-use-string-view, +# modernize-use-integer-sign-comparison (needs std::cmp_less; the flagged +# static_cast(end - pos) < n comparisons are deliberate) +# (all need a newer standard or compiler than C++11, or would change macro-generated or +# deliberately explicit code). +# Too noisy to be useful (numeric parsing/formatting code, doctest, tests): +# bugprone-easily-swappable-parameters, cppcoreguidelines-avoid-magic-numbers, readability-magic-numbers, +# readability-identifier-length, readability-function-cognitive-complexity, performance-enum-size, +# concurrency-mt-unsafe, misc-confusable-identifiers, misc-include-cleaner (run on its own for +# the consumer headers in cmake/ci.cmake). # portability-avoid-pragma-once: kept disabled on purpose. #pragma once is accepted # by every supported compiler, and tools/amalgamate/amalgamate.py strips it from # single_include, so there is nothing left to fix here. @@ -10,14 +40,14 @@ Checks: '*, -android-cloexec-fopen, -boost-use-ranges, -bugprone-easily-swappable-parameters, - -cert-err58-cpp, - -clang-analyzer-webkit.NoUncountedMemberChecker, + -bugprone-signed-bitwise, -concurrency-mt-unsafe, -cppcoreguidelines-avoid-const-or-ref-data-members, -cppcoreguidelines-avoid-do-while, -cppcoreguidelines-avoid-goto, -cppcoreguidelines-avoid-magic-numbers, -cppcoreguidelines-avoid-non-const-global-variables, + -cppcoreguidelines-explicit-constructor, -cppcoreguidelines-macro-usage, -cppcoreguidelines-pro-bounds-avoid-unchecked-container-access, -cppcoreguidelines-pro-bounds-array-to-pointer-decay, @@ -26,19 +56,15 @@ Checks: '*, -cppcoreguidelines-pro-type-reinterpret-cast, -cppcoreguidelines-pro-type-union-access, -cppcoreguidelines-rvalue-reference-param-not-moved, - -cppcoreguidelines-virtual-class-destructor, -fuchsia-default-arguments-calls, -fuchsia-default-arguments-declarations, -fuchsia-overloaded-operator, -google-explicit-constructor, - -google-readability-function-size, -google-runtime-float, -google-runtime-int, -hicpp-avoid-goto, -hicpp-explicit-conversions, - -hicpp-function-size, -hicpp-no-array-decay, - -hicpp-no-assembler, -hicpp-signed-bitwise, -hicpp-uppercase-literal-suffix, -llvm-header-guard, @@ -48,6 +74,7 @@ Checks: '*, -llvmlibc-*, -misc-use-anonymous-namespace, -misc-confusable-identifiers, + -misc-explicit-constructor, -misc-include-cleaner, -misc-no-recursion, -misc-non-private-member-variables-in-classes, @@ -55,20 +82,22 @@ Checks: '*, -modernize-type-traits, -modernize-use-constraints, -modernize-use-designated-initializers, + -modernize-use-integer-sign-comparison, -modernize-use-nodiscard, -modernize-use-ranges, + -modernize-use-string-view, -modernize-use-std-numbers, -modernize-use-trailing-return-type, -performance-enum-size, -portability-avoid-pragma-once, -readability-function-cognitive-complexity, - -readability-function-size, -readability-identifier-length, -readability-magic-numbers, -readability-redundant-access-specifiers, -readability-redundant-parentheses, -readability-redundant-typename, -readability-simplify-boolean-expr, + -readability-trailing-comma, -readability-uppercase-literal-suffix, -readability-use-concise-preprocessor-directives'