disabled some clang-tidy checks which are not necessary and slow down the analysis / documented disabled checks (#4468)
* added `clang-tidy.md` to document our `.clang-tidy` configuration * disabled some clang-tidy checks which are not necessary and slow down the analysis
This commit is contained in:
parent
b3ec225480
commit
888721ea12
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
Checks: '*,-abseil-*,-altera-*,-android-*,-boost-*,-cert-*,-cppcoreguidelines-*,-darwin-*,-fuchsia-*,-google-*,-hicpp-*,-linuxkernel-*,-llvm-*,-llvmlibc-*,-mpi-*,-objc-*,-openmp-*,-zircon-*,-readability-braces-around-statements,-readability-magic-numbers,-bugprone-macro-parentheses,-readability-isolate-declaration,-readability-function-size,-modernize-use-trailing-return-type,-readability-implicit-bool-conversion,-readability-uppercase-literal-suffix,-modernize-use-auto,-readability-else-after-return,-modernize-use-default-member-init,-readability-named-parameter,-readability-redundant-member-init,-performance-faster-string-find,-modernize-avoid-c-arrays,-modernize-use-equals-default,-readability-container-size-empty,-readability-simplify-boolean-expr,-bugprone-branch-clone,-bugprone-narrowing-conversions,-modernize-raw-string-literal,-readability-convert-member-functions-to-static,-modernize-loop-convert,-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,-misc-non-private-member-variables-in-classes,-bugprone-suspicious-string-compare,-clang-analyzer-*,-bugprone-signed-char-misuse,-misc-no-recursion,-readability-use-anyofallof,-performance-no-automatic-move,-bugprone-suspicious-include,-modernize-replace-random-shuffle,-readability-function-cognitive-complexity,-readability-redundant-access-specifiers,-performance-noexcept-move-constructor,-concurrency-mt-unsafe,-bugprone-easily-swappable-parameters,-readability-suspicious-call-argument,-readability-identifier-length,-readability-container-data-pointer,-bugprone-assignment-in-if-condition,-misc-const-correctness'
|
Checks: '*,-abseil-*,-altera-*,-android-*,-boost-*,-cert-*,-cppcoreguidelines-*,-darwin-*,-fuchsia-*,-google-*,-hicpp-*,-linuxkernel-*,-llvm-*,-llvmlibc-*,-mpi-*,-objc-*,-openmp-*,-zircon-*,-readability-braces-around-statements,-readability-magic-numbers,-bugprone-macro-parentheses,-readability-isolate-declaration,-readability-function-size,-modernize-use-trailing-return-type,-readability-implicit-bool-conversion,-readability-uppercase-literal-suffix,-modernize-use-auto,-readability-else-after-return,-modernize-use-default-member-init,-readability-named-parameter,-readability-redundant-member-init,-performance-faster-string-find,-modernize-avoid-c-arrays,-modernize-use-equals-default,-readability-container-size-empty,-readability-simplify-boolean-expr,-bugprone-branch-clone,-bugprone-narrowing-conversions,-modernize-raw-string-literal,-readability-convert-member-functions-to-static,-modernize-loop-convert,-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,-misc-non-private-member-variables-in-classes,-bugprone-suspicious-string-compare,-clang-analyzer-*,-bugprone-signed-char-misuse,-misc-no-recursion,-readability-use-anyofallof,-performance-no-automatic-move,-bugprone-suspicious-include,-modernize-replace-random-shuffle,-readability-function-cognitive-complexity,-readability-redundant-access-specifiers,-performance-noexcept-move-constructor,-concurrency-mt-unsafe,-bugprone-easily-swappable-parameters,-readability-suspicious-call-argument,-readability-identifier-length,-readability-container-data-pointer,-bugprone-assignment-in-if-condition,-misc-const-correctness,-portability-std-allocator-const,-modernize-deprecated-ios-base-aliases,-bugprone-unchecked-optional-access,-modernize-replace-auto-ptr,-readability-identifier-naming,-portability-simd-intrinsics'
|
||||||
WarningsAsErrors: '*'
|
WarningsAsErrors: '*'
|
||||||
CheckOptions:
|
CheckOptions:
|
||||||
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
|
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
|
||||||
|
|
|
@ -0,0 +1,156 @@
|
||||||
|
# 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-*`<br>
|
||||||
|
`altera-*`<br>
|
||||||
|
`android-*`<br>
|
||||||
|
`boost-*`<br>
|
||||||
|
`darwin-*`<br>
|
||||||
|
`fuchsia-*`<br>
|
||||||
|
`linuxkernel-*`<br>
|
||||||
|
`llvm-*`<br>
|
||||||
|
`llvmlibc-*`<br>
|
||||||
|
`mpi-*`<br>
|
||||||
|
`objc-*`<br>
|
||||||
|
`openmp-*`<br>
|
||||||
|
`zircon-*`<br>
|
||||||
|
|
||||||
|
These are disabled since the platforms/libraries in question are not targeted by us.
|
||||||
|
|
||||||
|
`cert-*`<br>
|
||||||
|
`cppcoreguidelines-*`<br>
|
||||||
|
`google-*`<br>
|
||||||
|
`hicpp-*`<br>
|
||||||
|
|
||||||
|
These are coding guidelines we do not follow. Some of the checks might be explicitly enabled though.
|
||||||
|
|
||||||
|
`readability-braces-around-statements`<br>
|
||||||
|
`readability-isolate-declaration`<br>
|
||||||
|
`modernize-use-trailing-return-type`<br>
|
||||||
|
`modernize-use-auto`<br>
|
||||||
|
`readability-uppercase-literal-suffix`<br>
|
||||||
|
`readability-else-after-return`<br>
|
||||||
|
`modernize-use-default-member-init`<br>
|
||||||
|
`readability-identifier-length`<br>
|
||||||
|
|
||||||
|
These do not relect the style we are (currently) enforcing.
|
||||||
|
|
||||||
|
`readability-function-size`<br>
|
||||||
|
`readability-function-cognitive-complexity`<br>
|
||||||
|
|
||||||
|
We are not interesting in the size/complexity of a function.
|
||||||
|
|
||||||
|
`readability-magic-numbers`<br>
|
||||||
|
`readability-redundant-member-init`<br>
|
||||||
|
`readability-simplify-boolean-expr`<br>
|
||||||
|
|
||||||
|
These do not (always) increase readbility.
|
||||||
|
|
||||||
|
`bugprone-macro-parentheses`<br>
|
||||||
|
`readability-implicit-bool-conversion`<br>
|
||||||
|
`readability-named-parameter`<br>
|
||||||
|
|
||||||
|
To be documented.
|
||||||
|
|
||||||
|
`performance-faster-string-find`<br>
|
||||||
|
`bugprone-narrowing-conversions`<br>
|
||||||
|
`performance-no-automatic-move`<br>
|
||||||
|
|
||||||
|
It was decided not to apply these.
|
||||||
|
|
||||||
|
`modernize-use-equals-default`<br>
|
||||||
|
`modernize-loop-convert`<br>
|
||||||
|
|
||||||
|
These might change the behavior of code which might not be intended (need to file an upstream issue)
|
||||||
|
|
||||||
|
`modernize-raw-string-literal`<br>
|
||||||
|
|
||||||
|
This leads to a mismatch of raw string literals and regular ones and does reduce the readability.
|
||||||
|
|
||||||
|
`readability-convert-member-functions-to-static`<br>
|
||||||
|
|
||||||
|
Disabled because of false postives with Qt `slot` methods (see https://github.com/llvm/llvm-project/issues/57520).
|
||||||
|
|
||||||
|
`-clang-analyzer-*`<br>
|
||||||
|
|
||||||
|
Disable because of false positives (needs to file an upstream bug report).
|
||||||
|
|
||||||
|
`misc-non-private-member-variables-in-classes`<br>
|
||||||
|
|
||||||
|
We actively use this.
|
||||||
|
|
||||||
|
`misc-no-recursion`<br>
|
||||||
|
|
||||||
|
Leads to lots of "false positives". This seem to enforce a coding guidelines of certain codebases.
|
||||||
|
|
||||||
|
`readability-use-anyofallof`<br>
|
||||||
|
|
||||||
|
We currently don't even apply our own `useStlAlgorithm` findings.
|
||||||
|
|
||||||
|
`bugprone-easily-swappable-parameters`<br>
|
||||||
|
|
||||||
|
This produces a lot of noise and they are not fixable that easily.
|
||||||
|
|
||||||
|
`readability-container-data-pointer`<br>
|
||||||
|
|
||||||
|
Disable because of false positives and inconsistent warnings (need to file an upstream bug report).
|
||||||
|
|
||||||
|
`misc-const-correctness`<br>
|
||||||
|
|
||||||
|
Work in progress.
|
||||||
|
|
||||||
|
`bugprone-assignment-in-if-condition`<br>
|
||||||
|
|
||||||
|
Is reported for valid patterns we are using.
|
||||||
|
|
||||||
|
`modernize-avoid-c-arrays`<br>
|
||||||
|
`readability-container-size-empty`<br>
|
||||||
|
`bugprone-branch-clone`<br>
|
||||||
|
`readability-const-return-type`<br>
|
||||||
|
`performance-unnecessary-value-param`<br>
|
||||||
|
`modernize-return-braced-init-list`<br>
|
||||||
|
`performance-inefficient-string-concatenation`<br>
|
||||||
|
`misc-throw-by-value-catch-by-reference`<br>
|
||||||
|
`readability-avoid-const-params-in-decls`<br>
|
||||||
|
`readability-non-const-parameter`<br>
|
||||||
|
`bugprone-suspicious-string-compare`<br>
|
||||||
|
`bugprone-signed-char-misuse`<br>
|
||||||
|
`bugprone-suspicious-include`<br>
|
||||||
|
`modernize-replace-random-shuffle`<br>
|
||||||
|
`readability-redundant-access-specifiers`<br>
|
||||||
|
`performance-noexcept-move-constructor`<br>
|
||||||
|
`concurrency-mt-unsafe`<br>
|
||||||
|
`readability-suspicious-call-argument`<br>
|
||||||
|
|
||||||
|
To be evaluated.
|
||||||
|
|
||||||
|
`portability-std-allocator-const`<br>
|
||||||
|
|
||||||
|
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`<br>
|
||||||
|
|
||||||
|
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`<br>
|
||||||
|
|
||||||
|
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`<br>
|
||||||
|
|
||||||
|
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`<br>
|
||||||
|
|
||||||
|
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`<br>
|
||||||
|
|
||||||
|
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.
|
Loading…
Reference in New Issue