#!/bin/bash CHECKS="*" # __attribute__((nonnull)) causes this warning on defensive null checks. CHECKS="$CHECKS,-clang-diagnostic-pointer-bool-conversion" CHECKS="$CHECKS,-clang-diagnostic-tautological-pointer-compare" # TODO(iphydf): We might want some of these. For the ones we don't want, add a # comment explaining why not. CHECKS="$CHECKS,-altera-unroll-loops" CHECKS="$CHECKS,-android-cloexec-accept" CHECKS="$CHECKS,-android-cloexec-fopen" CHECKS="$CHECKS,-bugprone-not-null-terminated-result" CHECKS="$CHECKS,-bugprone-reserved-identifier" CHECKS="$CHECKS,-bugprone-sizeof-expression" CHECKS="$CHECKS,-cert-dcl37-c" CHECKS="$CHECKS,-cert-dcl51-cpp" CHECKS="$CHECKS,-clang-analyzer-optin.performance.Padding" CHECKS="$CHECKS,-cppcoreguidelines-avoid-magic-numbers" CHECKS="$CHECKS,-cppcoreguidelines-init-variables" CHECKS="$CHECKS,-hicpp-multiway-paths-covered" CHECKS="$CHECKS,-hicpp-signed-bitwise" CHECKS="$CHECKS,-llvm-else-after-return" CHECKS="$CHECKS,-llvmlibc-restrict-system-libc-headers" CHECKS="$CHECKS,-misc-redundant-expression" CHECKS="$CHECKS,-misc-unused-parameters" CHECKS="$CHECKS,-readability-else-after-return" CHECKS="$CHECKS,-readability-function-cognitive-complexity" CHECKS="$CHECKS,-readability-inconsistent-declaration-parameter-name" CHECKS="$CHECKS,-readability-magic-numbers" CHECKS="$CHECKS,-readability-redundant-control-flow" # TODO(iphydf): Maybe fix these? CHECKS="$CHECKS,-altera-id-dependent-backward-branch" CHECKS="$CHECKS,-altera-struct-pack-align" CHECKS="$CHECKS,-bugprone-branch-clone" CHECKS="$CHECKS,-bugprone-easily-swappable-parameters" CHECKS="$CHECKS,-bugprone-implicit-widening-of-multiplication-result" CHECKS="$CHECKS,-bugprone-integer-division" CHECKS="$CHECKS,-bugprone-narrowing-conversions" CHECKS="$CHECKS,-clang-analyzer-core.NonNullParamChecker" CHECKS="$CHECKS,-clang-analyzer-core.NullDereference" CHECKS="$CHECKS,-clang-analyzer-optin.portability.UnixAPI" CHECKS="$CHECKS,-clang-analyzer-unix.Malloc" CHECKS="$CHECKS,-clang-analyzer-valist.Uninitialized" CHECKS="$CHECKS,-concurrency-mt-unsafe" CHECKS="$CHECKS,-cppcoreguidelines-avoid-non-const-global-variables" CHECKS="$CHECKS,-cppcoreguidelines-narrowing-conversions" CHECKS="$CHECKS,-google-readability-casting" CHECKS="$CHECKS,-misc-no-recursion" ERRORS="*" # TODO(iphydf): Fix these. ERRORS="$ERRORS,-bugprone-macro-parentheses" ERRORS="$ERRORS,-bugprone-posix-return" ERRORS="$ERRORS,-bugprone-signed-char-misuse" ERRORS="$ERRORS,-cert-err34-c" ERRORS="$ERRORS,-cert-str34-c" ERRORS="$ERRORS,-hicpp-uppercase-literal-suffix" ERRORS="$ERRORS,-readability-suspicious-call-argument" ERRORS="$ERRORS,-readability-uppercase-literal-suffix" set -eux run() { echo "Running clang-tidy in variant '$*'" EXTRA_ARGS=("$@") for i in "${!EXTRA_ARGS[@]}"; do EXTRA_ARGS[$i]="--extra-arg=${EXTRA_ARGS[$i]}" done clang-tidy-12 \ -p=_build \ --extra-arg=-DMIN_LOGGER_LEVEL=LOGGER_LEVEL_TRACE \ "${EXTRA_ARGS[@]}" \ --checks="$CHECKS" \ --warnings-as-errors="$ERRORS" \ --use-color \ other/bootstrap_daemon/src/*.c \ other/*.c \ toxav/*.c \ toxcore/*.c \ toxencryptsave/*.c } . other/analysis/variants.sh