2022-08-26 13:54:57 +00:00
|
|
|
# To run clang-tidy from CMake, build ClickHouse with -DENABLE_CLANG_TIDY=1. To show all warnings, it is
|
|
|
|
# recommended to pass "-k0" to Ninja.
|
|
|
|
|
2022-10-04 15:29:33 +00:00
|
|
|
# Enable all checks + disable selected checks. Feel free to remove disabled checks from below list if
|
2022-05-19 15:39:53 +00:00
|
|
|
# a) the new check is not controversial (this includes many checks in readability-* and google-*) or
|
|
|
|
# b) too noisy (checks with > 100 new warnings are considered noisy, this includes e.g. cppcoreguidelines-*).
|
2022-08-26 13:54:57 +00:00
|
|
|
|
|
|
|
# TODO Let clang-tidy check headers in further directories
|
|
|
|
# --> HeaderFilterRegex: '^.*/(src|base|programs|utils)/.*(h|hpp)$'
|
2024-02-28 22:47:34 +00:00
|
|
|
HeaderFilterRegex: '^.*/(base|programs|utils)/.*(h|hpp)$'
|
2022-08-26 13:54:57 +00:00
|
|
|
|
2024-03-11 10:56:26 +00:00
|
|
|
Checks: [
|
|
|
|
'*',
|
|
|
|
|
|
|
|
'-abseil-*',
|
|
|
|
|
|
|
|
'-altera-*',
|
|
|
|
|
|
|
|
'-android-*',
|
|
|
|
|
|
|
|
'-bugprone-assignment-in-if-condition',
|
|
|
|
'-bugprone-branch-clone',
|
|
|
|
'-bugprone-easily-swappable-parameters',
|
|
|
|
'-bugprone-exception-escape',
|
|
|
|
'-bugprone-implicit-widening-of-multiplication-result',
|
|
|
|
'-bugprone-narrowing-conversions',
|
|
|
|
'-bugprone-not-null-terminated-result',
|
|
|
|
'-bugprone-reserved-identifier', # useful but too slow, TODO retry when https://reviews.llvm.org/rG1c282052624f9d0bd273bde0b47b30c96699c6c7 is merged
|
|
|
|
'-bugprone-unchecked-optional-access',
|
|
|
|
|
|
|
|
'-cert-dcl16-c',
|
|
|
|
'-cert-dcl37-c',
|
|
|
|
'-cert-dcl51-cpp',
|
|
|
|
'-cert-err58-cpp',
|
|
|
|
'-cert-msc32-c',
|
|
|
|
'-cert-msc51-cpp',
|
|
|
|
'-cert-oop54-cpp',
|
|
|
|
'-cert-oop57-cpp',
|
|
|
|
|
|
|
|
'-clang-analyzer-unix.Malloc',
|
|
|
|
|
|
|
|
'-cppcoreguidelines-*', # impractical in a codebase as large as ClickHouse, also slow
|
|
|
|
|
|
|
|
'-darwin-*',
|
|
|
|
|
|
|
|
'-fuchsia-*',
|
|
|
|
|
|
|
|
'-google-build-using-namespace',
|
|
|
|
'-google-readability-braces-around-statements',
|
|
|
|
'-google-readability-casting',
|
|
|
|
'-google-readability-function-size',
|
|
|
|
'-google-readability-namespace-comments',
|
|
|
|
'-google-readability-todo',
|
|
|
|
|
|
|
|
'-hicpp-avoid-c-arrays',
|
|
|
|
'-hicpp-avoid-goto',
|
|
|
|
'-hicpp-braces-around-statements',
|
|
|
|
'-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-assembler',
|
|
|
|
'-hicpp-no-malloc',
|
|
|
|
'-hicpp-signed-bitwise',
|
|
|
|
'-hicpp-special-member-functions',
|
|
|
|
'-hicpp-uppercase-literal-suffix',
|
|
|
|
'-hicpp-use-auto',
|
|
|
|
'-hicpp-use-emplace',
|
|
|
|
'-hicpp-vararg',
|
|
|
|
|
|
|
|
'-linuxkernel-*',
|
|
|
|
|
|
|
|
'-llvm-*',
|
|
|
|
|
|
|
|
'-llvmlibc-*',
|
|
|
|
|
|
|
|
'-openmp-*',
|
|
|
|
|
|
|
|
'-misc-const-correctness',
|
|
|
|
'-misc-include-cleaner', # useful but far too many occurrences
|
|
|
|
'-misc-no-recursion',
|
|
|
|
'-misc-non-private-member-variables-in-classes',
|
|
|
|
'-misc-confusable-identifiers', # useful but slooo
|
|
|
|
'-misc-use-anonymous-namespace',
|
|
|
|
|
|
|
|
'-modernize-avoid-c-arrays',
|
|
|
|
'-modernize-concat-nested-namespaces',
|
|
|
|
'-modernize-macro-to-enum',
|
|
|
|
'-modernize-pass-by-value',
|
|
|
|
'-modernize-return-braced-init-list',
|
|
|
|
'-modernize-use-auto',
|
|
|
|
'-modernize-use-default-member-init',
|
|
|
|
'-modernize-use-emplace',
|
|
|
|
'-modernize-use-nodiscard',
|
|
|
|
'-modernize-use-override',
|
|
|
|
'-modernize-use-trailing-return-type',
|
|
|
|
|
|
|
|
'-performance-inefficient-string-concatenation',
|
|
|
|
'-performance-no-int-to-ptr',
|
|
|
|
'-performance-avoid-endl',
|
|
|
|
'-performance-unnecessary-value-param',
|
|
|
|
|
|
|
|
'-portability-simd-intrinsics',
|
|
|
|
|
|
|
|
'-readability-avoid-unconditional-preprocessor-if',
|
|
|
|
'-readability-braces-around-statements',
|
|
|
|
'-readability-convert-member-functions-to-static',
|
|
|
|
'-readability-else-after-return',
|
|
|
|
'-readability-function-cognitive-complexity',
|
|
|
|
'-readability-function-size',
|
|
|
|
'-readability-identifier-length',
|
|
|
|
'-readability-identifier-naming', # useful but too slow
|
|
|
|
'-readability-implicit-bool-conversion',
|
|
|
|
'-readability-isolate-declaration',
|
|
|
|
'-readability-magic-numbers',
|
|
|
|
'-readability-named-parameter',
|
|
|
|
'-readability-redundant-declaration',
|
|
|
|
'-readability-simplify-boolean-expr',
|
|
|
|
'-readability-static-accessed-through-instance',
|
|
|
|
'-readability-suspicious-call-argument',
|
|
|
|
'-readability-uppercase-literal-suffix',
|
|
|
|
'-readability-use-anyofallof',
|
|
|
|
|
|
|
|
'-zircon-*'
|
|
|
|
]
|
2022-05-04 17:24:02 +00:00
|
|
|
|
2020-03-08 20:17:49 +00:00
|
|
|
WarningsAsErrors: '*'
|
2020-03-23 02:12:31 +00:00
|
|
|
|
2023-09-21 10:54:09 +00:00
|
|
|
ExtraArgs:
|
|
|
|
# clang-tidy 17 started to complain (for unknown reasons) that various pragmas are unknown ("clang-diagnostic-unknown-pragmas").
|
|
|
|
# This is technically a compiler error, not a clang-tidy error. We could litter the code base with more pragmas that suppress
|
|
|
|
# this error but it is better to pass the following flag to the compiler:
|
|
|
|
- '-Wno-unknown-pragmas'
|
2023-09-21 18:39:02 +00:00
|
|
|
- '-Wno-unused-command-line-argument' # similar issue
|
2023-09-21 10:54:09 +00:00
|
|
|
|
2020-03-23 02:12:31 +00:00
|
|
|
CheckOptions:
|
2023-03-16 16:59:24 +00:00
|
|
|
readability-identifier-naming.ClassCase: CamelCase
|
2023-03-16 13:49:27 +00:00
|
|
|
readability-identifier-naming.EnumCase: CamelCase
|
|
|
|
readability-identifier-naming.LocalVariableCase: lower_case
|
|
|
|
readability-identifier-naming.StaticConstantCase: aNy_CasE
|
|
|
|
readability-identifier-naming.MemberCase: lower_case
|
|
|
|
readability-identifier-naming.PrivateMemberPrefix: ''
|
|
|
|
readability-identifier-naming.ProtectedMemberPrefix: ''
|
|
|
|
readability-identifier-naming.PublicMemberCase: lower_case
|
|
|
|
readability-identifier-naming.MethodCase: camelBack
|
|
|
|
readability-identifier-naming.PrivateMethodPrefix: ''
|
|
|
|
readability-identifier-naming.ProtectedMethodPrefix: ''
|
|
|
|
readability-identifier-naming.ParameterPackCase: lower_case
|
|
|
|
readability-identifier-naming.StructCase: CamelCase
|
|
|
|
readability-identifier-naming.TemplateTemplateParameterCase: CamelCase
|
2023-05-13 20:26:43 +00:00
|
|
|
readability-identifier-naming.TemplateParameterCase: lower_case
|
2023-03-16 13:49:27 +00:00
|
|
|
readability-identifier-naming.TypeTemplateParameterCase: CamelCase
|
|
|
|
readability-identifier-naming.TypedefCase: CamelCase
|
|
|
|
readability-identifier-naming.UnionCase: CamelCase
|
|
|
|
modernize-loop-convert.UseCxx20ReverseRanges: false
|
|
|
|
performance-move-const-arg.CheckTriviallyCopyableMove: false
|
|
|
|
# Workaround clang-tidy bug: https://github.com/llvm/llvm-project/issues/46097
|
|
|
|
readability-identifier-naming.TypeTemplateParameterIgnoredRegexp: expr-type
|
|
|
|
cppcoreguidelines-avoid-do-while.IgnoreMacros: true
|