Skip to content

Commit

Permalink
Merge pull request #146 from biojppm/fix/clang_tidy
Browse files Browse the repository at this point in the history
fix clang tidy workflow and warnings
  • Loading branch information
biojppm authored Jan 16, 2025
2 parents f480f05 + 53d35e8 commit c4d060f
Show file tree
Hide file tree
Showing 32 changed files with 448 additions and 281 deletions.
111 changes: 111 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
Checks:
- '*' # enable everything
# but disable the following:
- -altera-id-dependent-backward-branch # backward branch (for loop) is ID-dependent due to variable reference to 'n' and may cause performance degradation
- -altera-struct-pack-align # accessing fields in struct 'base64_wrapper_<char>' is inefficient due to poor alignment; currently aligned to 8 bytes, but recommended alignment is 16 bytes
- -altera-unroll-loops # kernel performance could be improved by unrolling this loop with a '#pragma unroll' directive
- -bugprone-branch-clone # repeated branch body in conditional chain
- -bugprone-easily-swappable-parameters # 2 adjacent parameters of 'Tree' of similar type are easily swapped by mistake
- -bugprone-reserved-identifier # warnings on identifiers with leading _
- -bugprone-switch-missing-default-case # switching on non-enum value without default case may not cover all cases
- -cert-dcl37-c # warnings on identifiers with leading _
- -cert-dcl51-cpp # warnings on identifiers with leading _
- -cert-dcl59-cpp,fuchsia-header-anon-namespaces # do not use unnamed namespaces in header files
- -clang-analyzer-optin.core.EnumCastOutOfRange # The value '44' provided to the cast expression is not in the valid range of values for the enum
- -clang-diagnostic-pragma-system-header-outside-header # #pragma system_header ignored in main file
- -clang-diagnostic-unknown-warning-option # unknown compiler options
- -cppcoreguidelines-avoid-c-arrays # allow C arrays
- -cppcoreguidelines-avoid-do-while # avoid do-while loops
- -cppcoreguidelines-avoid-magic-numbers
- -cppcoreguidelines-avoid-non-const-global-variables # variable 's_default_callbacks' is non-const and globally accessible, consider making it const
- -cppcoreguidelines-init-variables # variable 'node' is not initialized
- -cppcoreguidelines-macro-to-enum # replace macro with enum
- -cppcoreguidelines-macro-usage # function-like macro 'c4append_' used; consider a 'constexpr' template function
- -cppcoreguidelines-no-malloc # do not manage memory manually; consider a container or a smart pointer
- -cppcoreguidelines-owning-memory # initializing non-owner 'void *' with a newly created 'gsl::owner<>'
- -cppcoreguidelines-pro-bounds-array-to-pointer-decay
- -cppcoreguidelines-pro-bounds-constant-array-index # do not use array subscript when the index is not an integer constant expression
- -cppcoreguidelines-pro-bounds-pointer-arithmetic # do not use pointer arithmetic
- -cppcoreguidelines-pro-type-cstyle-cast # do not use C-style cast to convert between unrelated types
- -cppcoreguidelines-pro-type-member-init # constructor does not initialize these fields: len
- -cppcoreguidelines-pro-type-vararg # do not call c-style vararg functions
- -cppcoreguidelines-use-default-member-init # use default member initializer for 'm_pos'
- -fuchsia-default-arguments-calls # calling a function that uses a default argument is disallowed
- -fuchsia-default-arguments-declarations # declaring a parameter with a default argument is disallowed
- -fuchsia-overloaded-operator # overloading 'operator[]' is disallowed
- -fuchsia-statically-constructed-objects # static objects are disallowed; if possible, use a constexpr constructor instead
- -fuchsia-trailing-return # a trailing return type is disallowed for this function declaration
- -google-build-namespaces # do not use unnamed namespaces in header files
- -google-build-using-namespace # do not use namespace using-directives; use using-declarations instead
- -google-explicit-constructor # single-argument constructors must be marked explicit to avoid unintentional implicit conversions
- -google-readability-braces-around-statements # statement should be inside braces
- -google-readability-casting # C-style casts are discouraged; use static_cast
- -google-readability-function-size # function '_handle_map_block' exceeds recommended size/complexity thresholds
- -google-readability-namespace-comments # anonymous namespace not terminated with a closing comment
- -google-readability-todo # missing username/bug in TODO
- -hicpp-avoid-c-arrays # allow C arrays
- -hicpp-braces-around-statements # statement should be inside braces
- -hicpp-deprecated-headers # inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead
- -hicpp-explicit-conversions # single-argument constructors must be marked explicit to avoid unintentional implicit conversions
- -hicpp-function-size # function '_handle_map_block' exceeds recommended size/complexity thresholds
- -hicpp-member-init # constructor does not initialize these fields: len
- -hicpp-named-parameter # all parameters should be named in a function
- -hicpp-no-array-decay # do not implicitly decay an array into a pointer; consider using gsl::array_view or an explicit cast instead
- -hicpp-no-malloc # do not manage memory manually; consider a container or a smart pointer
- -hicpp-uppercase-literal-suffix # integer literal has suffix 'u', which is not uppercase
- -hicpp-use-auto,modernize-use-auto # use auto when initializing with a cast to avoid duplicating the type name
- -hicpp-vararg # do not call c-style vararg functions
- -llvm-else-after-return,readability-else-after-return # do not use 'else' after 'return'
- -llvm-header-guard # header guard does not follow preferred style
- -llvm-include-order # #includes are not sorted properly
- -llvm-namespace-comment # anonymous namespace not terminated with a closing comment
- -llvmlibc-callee-namespace # ... must resolve to a function declared within the namespace defined by the ... macro
- -llvmlibc-implementation-in-namespace # the outermost namespace should be the 'LIBC_NAMESPACE' macro
- -llvmlibc-inline-function-decl # '_is_idchar' must be tagged with the LIBC_INLINE macro; the macro should be placed at the beginning of the declaration
- -llvmlibc-restrict-system-libc-headers # system include stdlib.h not allowed
- -misc-const-correctness # variable 's2c' of type 'char' can be declared 'const'
- -misc-include-cleaner # no header providing ... is directly included
- -misc-no-recursion # function 'reserve' is within a recursive call chain
- -misc-non-private-member-variables-in-classes # member variable 'data' has public visibility
- -modernize-avoid-c-arrays # allow C arrays
- -modernize-concat-nested-namespaces # nested namespaces can be concatenated
- -modernize-deprecated-headers # inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead
- -modernize-deprecated-headers # inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead
- -modernize-loop-convert # use range-based for loop instead
- -modernize-macro-to-enum # replace macro with enum
- -modernize-return-braced-init-list # avoid repeating the return type from the declaration; use a braced initializer list instead
- -modernize-type-traits # use c++17 style variable templates
- -modernize-use-auto # use auto when initializing with a cast to avoid duplicating the type name
- -modernize-use-default-member-init # use default member initializer for 'm_pos'
- -modernize-use-nodiscard # function 'valid' should be marked nodiscard
- -modernize-use-trailing-return-type # don't care about this
- -modernize-use-using # use 'using' instead of 'typedef'
- -performance-enum-size # enum '_ppstate' uses a larger base type ('int', size: 4 bytes) than necessary for its value set, consider using 'std::uint8_t' (1 byte) as the base type to reduce its size
- -readability-avoid-nested-conditional-operator # conditional operator is used as sub-expression of parent conditional operator, refrain from using nested conditional operators
- -readability-avoid-unconditional-preprocessor-if # preprocessor condition is always 'false', consider removing both the condition and its contents
- -readability-braces-around-statements # statement should be inside braces
- -readability-else-after-return # do not use 'else' after 'return'
- -readability-function-cognitive-complexity # function ... has cognitive complexity of ... (threshold ...)
- -readability-function-size # function '_handle_map_block' exceeds recommended size/complexity thresholds
- -readability-identifier-length # variable name 'c' is too short, expected at least 3 characters
- -readability-implicit-bool-conversion # implicit conversion 'NodeData *' -> 'bool'
- -readability-inconsistent-declaration-parameter-name # definition with different parameter names
- -readability-isolate-declaration # multiple declarations in a single statement reduces readability
- -readability-magic-numbers # 16 is a magic number; consider replacing it with a named constant
- -readability-named-parameter # all parameters should be named in a function
- -readability-redundant-access-specifiers # redundant access specifier has the same accessibility as the previous access specifier
- -readability-redundant-member-init # initializer for member 'm_arena' is redundant
- -readability-redundant-declaration # redundant 'to_substr' declaration
- -readability-simplify-boolean-expr # boolean expression can be simplified by DeMorgan's theorem
- -readability-suspicious-call-argument # 1st argument 'after' (passed to 'node') looks like it might be swapped with the 2nd, 'node' (passed to 'sib')
- -readability-uppercase-literal-suffix # integer literal has suffix 'u', which is not uppercase
- -readability-use-anyofallof # replace loop by 'std::all_of()'

# Turn all the warnings from the checks above into errors.
WarningsAsErrors: '*'

#CheckOptions:
# - { key: readability-identifier-naming.ClassCase, value: CamelCase }
# - { key: readability-identifier-naming.MethodCase, value: CamelCase }
# - { key: readability-identifier-naming.MemberPrefix, value: m_ }
# - { key: readability-identifier-naming.MemberCase, value: lower_case }
50 changes: 25 additions & 25 deletions .github/workflows/arch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,26 @@ jobs:
fail-fast: false
matrix:
include:
- {std: 11, bt: Debug , arch: aarch64, distro: ubuntu20.04}
- {std: 11, bt: Release, arch: aarch64, distro: ubuntu20.04}
- {std: 14, bt: Debug , arch: aarch64, distro: ubuntu20.04}
- {std: 14, bt: Release, arch: aarch64, distro: ubuntu20.04}
- {std: 17, bt: Debug , arch: aarch64, distro: ubuntu20.04}
- {std: 17, bt: Release, arch: aarch64, distro: ubuntu20.04}
- {std: 11, bt: Debug , arch: aarch64, distro: ubuntu22.04}
- {std: 11, bt: Release, arch: aarch64, distro: ubuntu22.04}
- {std: 14, bt: Debug , arch: aarch64, distro: ubuntu22.04}
- {std: 14, bt: Release, arch: aarch64, distro: ubuntu22.04}
- {std: 17, bt: Debug , arch: aarch64, distro: ubuntu22.04}
- {std: 17, bt: Release, arch: aarch64, distro: ubuntu22.04}
#
- {std: 11, bt: Debug , arch: ppc64le, distro: ubuntu20.04}
- {std: 11, bt: Release, arch: ppc64le, distro: ubuntu20.04}
- {std: 14, bt: Debug , arch: ppc64le, distro: ubuntu20.04}
- {std: 14, bt: Release, arch: ppc64le, distro: ubuntu20.04}
- {std: 17, bt: Debug , arch: ppc64le, distro: ubuntu20.04}
- {std: 17, bt: Release, arch: ppc64le, distro: ubuntu20.04}
- {std: 11, bt: Debug , arch: ppc64le, distro: ubuntu22.04}
- {std: 11, bt: Release, arch: ppc64le, distro: ubuntu22.04}
- {std: 14, bt: Debug , arch: ppc64le, distro: ubuntu22.04}
- {std: 14, bt: Release, arch: ppc64le, distro: ubuntu22.04}
- {std: 17, bt: Debug , arch: ppc64le, distro: ubuntu22.04}
- {std: 17, bt: Release, arch: ppc64le, distro: ubuntu22.04}
#
- {std: 11, bt: Debug , arch: s390x , distro: ubuntu20.04}
- {std: 11, bt: Release, arch: s390x , distro: ubuntu20.04}
- {std: 14, bt: Debug , arch: s390x , distro: ubuntu20.04}
- {std: 14, bt: Release, arch: s390x , distro: ubuntu20.04}
- {std: 17, bt: Debug , arch: s390x , distro: ubuntu20.04}
- {std: 17, bt: Release, arch: s390x , distro: ubuntu20.04}
- {std: 11, bt: Debug , arch: s390x , distro: ubuntu22.04}
- {std: 11, bt: Release, arch: s390x , distro: ubuntu22.04}
- {std: 14, bt: Debug , arch: s390x , distro: ubuntu22.04}
- {std: 14, bt: Release, arch: s390x , distro: ubuntu22.04}
- {std: 17, bt: Debug , arch: s390x , distro: ubuntu22.04}
- {std: 17, bt: Release, arch: s390x , distro: ubuntu22.04}
#
#- {std: 11, bt: Debug , arch: armv6 , distro: bullseye}
#- {std: 11, bt: Release, arch: armv6 , distro: bullseye}
Expand All @@ -55,16 +55,16 @@ jobs:
#- {std: 17, bt: Debug , arch: armv6 , distro: bullseye}
#- {std: 17, bt: Release, arch: armv6 , distro: bullseye}
#
#- {std: 11, bt: Debug , arch: armv7 , distro: ubuntu20.04}
#- {std: 11, bt: Release, arch: armv7 , distro: ubuntu20.04}
#- {std: 14, bt: Debug , arch: armv7 , distro: ubuntu20.04}
#- {std: 14, bt: Release, arch: armv7 , distro: ubuntu20.04}
#- {std: 17, bt: Debug , arch: armv7 , distro: ubuntu20.04}
#- {std: 17, bt: Release, arch: armv7 , distro: ubuntu20.04}
#- {std: 11, bt: Debug , arch: armv7 , distro: ubuntu22.04}
#- {std: 11, bt: Release, arch: armv7 , distro: ubuntu22.04}
#- {std: 14, bt: Debug , arch: armv7 , distro: ubuntu22.04}
#- {std: 14, bt: Release, arch: armv7 , distro: ubuntu22.04}
#- {std: 17, bt: Debug , arch: armv7 , distro: ubuntu22.04}
#- {std: 17, bt: Release, arch: armv7 , distro: ubuntu22.04}
steps:
- {name: checkout, uses: actions/checkout@v3, with: {submodules: recursive}}
- name: test
uses: uraimo/run-on-arch-action@v2.3.0
uses: uraimo/run-on-arch-action@v2.8.1
with:
arch: ${{matrix.arch}}
distro: ${{matrix.distro}}
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,31 +154,31 @@ jobs:
(!contains(github.event.head_commit.message, 'skip benchmarks')) ||
contains(github.event.head_commit.message, 'only benchmarks')
continue-on-error: true
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- {std: 17, bt: Release, arch: aarch64, distro: ubuntu20.04}
- {std: 17, bt: Release, arch: aarch64, distro: ubuntu22.04}
# the python dependencies cannot be installed for this one:
#- {std: 17, bt: Release, arch: ppc64le, distro: ubuntu20.04}
#- {std: 17, bt: Release, arch: ppc64le, distro: ubuntu22.04}
#
# the github runners are failing for the following:
#- {std: 11, bt: Release, arch: s390x , distro: ubuntu20.04}
#- {std: 17, bt: Release, arch: s390x , distro: ubuntu20.04}
#- {std: 11, bt: Release, arch: s390x , distro: ubuntu22.04}
#- {std: 17, bt: Release, arch: s390x , distro: ubuntu22.04}
##
#- {std: 11, bt: Release, arch: armv6 , distro: ubuntu18.04}
#- {std: 17, bt: Release, arch: armv6 , distro: ubuntu18.04}
#- {std: 11, bt: Release, arch: armv6 , distro: ubuntu22.04}
#- {std: 17, bt: Release, arch: armv6 , distro: ubuntu22.04}
##
#- {std: 11, bt: Release, arch: armv7 , distro: ubuntu18.04}
#- {std: 17, bt: Release, arch: armv7 , distro: ubuntu18.04}
#- {std: 11, bt: Release, arch: armv7 , distro: ubuntu22.04}
#- {std: 17, bt: Release, arch: armv7 , distro: ubuntu22.04}
steps:
- {name: checkout, uses: actions/checkout@v3, with: {submodules: recursive, fetch-depth: 0}}
- name: Download vars.sh
uses: actions/download-artifact@v3
with: {name: vars.sh, path: ./}
- name: test
uses: uraimo/run-on-arch-action@v2.3.0
uses: uraimo/run-on-arch-action@v2.8.1
with:
arch: ${{matrix.arch}}
distro: ${{matrix.distro}}
Expand Down
Loading

0 comments on commit c4d060f

Please sign in to comment.