mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
5a3a0b6453
These help static analysis and ubsan. We should eventually have all functions annotated like this with a cimple check to make sure every pointer has an explicit nullability annotation. The `nullable` annotation does nothing in GCC, but will be used by cimple to validate that every parameter has defined nullability.
88 lines
3.1 KiB
Bash
Executable File
88 lines
3.1 KiB
Bash
Executable File
#!/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
|