Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-tidy
Original file line number Diff line number Diff line change
@@ -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: '*'
CheckOptions:
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
Expand Down
156 changes: 156 additions & 0 deletions clang-tidy.md
Original file line number Diff line number Diff line change
@@ -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.