4.9 KiB
clang-tidy
Below are the reasoning why certain checks are (currently) disabled for out code base
Externals
We do not perform static analysis of the source of the external libraries. simplecpp
has its own CI with a clang-tidy workflow.
Disabled Checks
abseil-*
altera-*
android-*
boost-*
darwin-*
fuchsia-*
linuxkernel-*
llvm-*
llvmlibc-*
mpi-*
objc-*
openmp-*
zircon-*
These are disabled since the platforms/libraries in question are not targeted by us.
cert-*
cppcoreguidelines-*
google-*
hicpp-*
These are coding guidelines we do not follow. Some of the checks might be explicitly enabled though.
readability-braces-around-statements
readability-isolate-declaration
modernize-use-trailing-return-type
modernize-use-auto
readability-uppercase-literal-suffix
readability-else-after-return
modernize-use-default-member-init
readability-identifier-length
These do not relect the style we are (currently) enforcing.
readability-function-size
readability-function-cognitive-complexity
We are not interesting in the size/complexity of a function.
readability-magic-numbers
readability-redundant-member-init
readability-simplify-boolean-expr
These do not (always) increase readbility.
bugprone-macro-parentheses
readability-implicit-bool-conversion
readability-named-parameter
To be documented.
performance-faster-string-find
bugprone-narrowing-conversions
performance-no-automatic-move
It was decided not to apply these.
modernize-use-equals-default
modernize-loop-convert
These might change the behavior of code which might not be intended (need to file an upstream issue)
modernize-raw-string-literal
This leads to a mismatch of raw string literals and regular ones and does reduce the readability.
readability-convert-member-functions-to-static
Disabled because of false postives with Qt slot
methods (see https://github.com/llvm/llvm-project/issues/57520).
-clang-analyzer-*
Disable because of false positives (needs to file an upstream bug report).
misc-non-private-member-variables-in-classes
We actively use this.
misc-no-recursion
Leads to lots of "false positives". This seem to enforce a coding guidelines of certain codebases.
readability-use-anyofallof
We currently don't even apply our own useStlAlgorithm
findings.
bugprone-easily-swappable-parameters
This produces a lot of noise and they are not fixable that easily.
readability-container-data-pointer
Disable because of false positives and inconsistent warnings (need to file an upstream bug report).
misc-const-correctness
Work in progress.
bugprone-assignment-in-if-condition
Is reported for valid patterns we are using.
modernize-avoid-c-arrays
readability-container-size-empty
bugprone-branch-clone
readability-const-return-type
performance-unnecessary-value-param
modernize-return-braced-init-list
performance-inefficient-string-concatenation
misc-throw-by-value-catch-by-reference
readability-avoid-const-params-in-decls
readability-non-const-parameter
bugprone-suspicious-string-compare
bugprone-signed-char-misuse
bugprone-suspicious-include
modernize-replace-random-shuffle
readability-redundant-access-specifiers
performance-noexcept-move-constructor
concurrency-mt-unsafe
readability-suspicious-call-argument
To be evaluated.
portability-std-allocator-const
Only necessary for code which is exclusively compiled with libc++
. Also disabled for performance reasons - see https://github.com/llvm/llvm-project/issues/57527#issuecomment-1237935132.
modernize-deprecated-ios-base-aliases
Warns about aliases which are removed in C++20. Also disabled for performance reasons - see https://github.com/llvm/llvm-project/issues/57527#issuecomment-1237935132.
bugprone-unchecked-optional-access
We are not using any optional
implementation. Also disabled for performance reasons - see https://github.com/llvm/llvm-project/issues/57527#issuecomment-1237935132.
modernize-replace-auto-ptr
Still available until C++17. It is unlikely such code will ever be introduced. Also disabled for performance reasons - see https://github.com/llvm/llvm-project/issues/57527#issuecomment-1237935132.
readability-identifier-naming
We are currently using our own naming.json
to enforce naming schemes. Also disabled for performance reasons - see https://github.com/llvm/llvm-project/issues/57527#issuecomment-1237935132.
portability-simd-intrinsics
We are not using SIMD instructions and it suggests to use std::experiemental::
features which might not be commonly available. Also disabled for performance reasons - see https://github.com/llvm/llvm-project/issues/57527#issuecomment-1237935132.