Merge commit '9ace11a0e2843cbde4af2b6ff7b49bcc6d429f78'
This commit is contained in:
@ -1,6 +1,64 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CHECKS="*"
|
||||
ERRORS="*"
|
||||
|
||||
# Need to investigate or disable and document these.
|
||||
# =========================================================
|
||||
|
||||
# TODO(iphydf): Fix these.
|
||||
ERRORS="$ERRORS,-cert-err34-c"
|
||||
ERRORS="$ERRORS,-readability-suspicious-call-argument"
|
||||
|
||||
# TODO(iphydf): Fix once cimple 0.0.19 is released.
|
||||
CHECKS="$CHECKS,-google-readability-casting"
|
||||
|
||||
# TODO(iphydf): Fix these.
|
||||
CHECKS="$CHECKS,-bugprone-switch-missing-default-case"
|
||||
|
||||
# TODO(iphydf): We might want some of these. For the ones we don't want, add a
|
||||
# comment explaining why not.
|
||||
CHECKS="$CHECKS,-clang-analyzer-optin.performance.Padding"
|
||||
CHECKS="$CHECKS,-hicpp-signed-bitwise"
|
||||
|
||||
# TODO(iphydf): Maybe fix these?
|
||||
CHECKS="$CHECKS,-bugprone-implicit-widening-of-multiplication-result"
|
||||
CHECKS="$CHECKS,-bugprone-integer-division"
|
||||
CHECKS="$CHECKS,-misc-no-recursion"
|
||||
|
||||
# TODO(iphydf): Only happens in bootstrap_daemon. Fix it.
|
||||
CHECKS="$CHECKS,-cppcoreguidelines-avoid-non-const-global-variables"
|
||||
|
||||
# TODO(iphydf): Probably fix these.
|
||||
CHECKS="$CHECKS,-cert-err33-c"
|
||||
CHECKS="$CHECKS,-cppcoreguidelines-avoid-magic-numbers"
|
||||
CHECKS="$CHECKS,-readability-magic-numbers"
|
||||
|
||||
# TODO(iphydf): We're using a lot of macros for constants. Should we convert
|
||||
# all of them to enum?
|
||||
CHECKS="$CHECKS,-modernize-macro-to-enum"
|
||||
|
||||
# Documented disabled checks. We don't want these for sure.
|
||||
# =========================================================
|
||||
|
||||
# https://stackoverflow.com/questions/58672959/why-does-clang-tidy-say-vsnprintf-has-an-uninitialized-va-list-argument
|
||||
CHECKS="$CHECKS,-clang-analyzer-valist.Uninitialized"
|
||||
|
||||
# We pass a lot of ints around, so many function parameters are some kind of
|
||||
# int type that can be converted from another int type. We won't be getting
|
||||
# away from that anytime soon.
|
||||
CHECKS="$CHECKS,-bugprone-easily-swappable-parameters"
|
||||
|
||||
# Callback handlers often don't use all their parameters. There's
|
||||
# IgnoreVirtual, but that doesn't work for C-style callbacks.
|
||||
CHECKS="$CHECKS,-misc-unused-parameters"
|
||||
|
||||
# We sometimes use #if 0.
|
||||
CHECKS="$CHECKS,-readability-avoid-unconditional-preprocessor-if"
|
||||
|
||||
# We have better macro hygiene checks with tokstyle. We can never pass macro
|
||||
# arguments that require parentheses inside the macro.
|
||||
CHECKS="$CHECKS,-bugprone-macro-parentheses"
|
||||
|
||||
# We don't use memcpy_s.
|
||||
CHECKS="$CHECKS,-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling"
|
||||
@ -81,62 +139,48 @@ CHECKS="$CHECKS,-cert-dcl03-c"
|
||||
CHECKS="$CHECKS,-hicpp-static-assert"
|
||||
CHECKS="$CHECKS,-misc-static-assert"
|
||||
|
||||
# TODO(iphydf): We might want some of these. For the ones we don't want, add a
|
||||
# comment explaining why not.
|
||||
CHECKS="$CHECKS,-clang-analyzer-optin.performance.Padding"
|
||||
CHECKS="$CHECKS,-hicpp-signed-bitwise"
|
||||
CHECKS="$CHECKS,-misc-unused-parameters"
|
||||
CHECKS="$CHECKS,-readability-function-cognitive-complexity"
|
||||
|
||||
# TODO(iphydf): Maybe fix these?
|
||||
CHECKS="$CHECKS,-bugprone-easily-swappable-parameters"
|
||||
CHECKS="$CHECKS,-bugprone-implicit-widening-of-multiplication-result"
|
||||
CHECKS="$CHECKS,-bugprone-integer-division"
|
||||
CHECKS="$CHECKS,-clang-analyzer-core.NullDereference"
|
||||
CHECKS="$CHECKS,-clang-analyzer-valist.Uninitialized"
|
||||
CHECKS="$CHECKS,-concurrency-mt-unsafe"
|
||||
CHECKS="$CHECKS,-cppcoreguidelines-avoid-non-const-global-variables"
|
||||
CHECKS="$CHECKS,-misc-no-recursion"
|
||||
|
||||
# TODO(iphydf): Probably fix these.
|
||||
CHECKS="$CHECKS,-cert-err33-c"
|
||||
CHECKS="$CHECKS,-cppcoreguidelines-avoid-magic-numbers"
|
||||
CHECKS="$CHECKS,-google-readability-casting"
|
||||
CHECKS="$CHECKS,-modernize-macro-to-enum"
|
||||
CHECKS="$CHECKS,-readability-magic-numbers"
|
||||
|
||||
# TODO(iphydf): These two trip on list.c. Investigate why.
|
||||
CHECKS="$CHECKS,-clang-analyzer-core.NonNullParamChecker"
|
||||
CHECKS="$CHECKS,-clang-analyzer-unix.Malloc"
|
||||
|
||||
ERRORS="*"
|
||||
|
||||
# TODO(iphydf): Fix these.
|
||||
ERRORS="$ERRORS,-bugprone-macro-parentheses"
|
||||
ERRORS="$ERRORS,-cert-err34-c"
|
||||
ERRORS="$ERRORS,-cert-str34-c"
|
||||
ERRORS="$ERRORS,-readability-suspicious-call-argument"
|
||||
|
||||
set -eux
|
||||
|
||||
# TODO(iphydf): Add toxav.
|
||||
DIRS=(
|
||||
other/bootstrap_daemon/src
|
||||
other
|
||||
toxcore
|
||||
toxcore/events
|
||||
toxencryptsave
|
||||
)
|
||||
|
||||
copy_files() {
|
||||
find "${DIRS[@]}" \
|
||||
-maxdepth 1 -type d -exec mkdir -p "$1/{}" \;
|
||||
find "${DIRS[@]}" \
|
||||
-maxdepth 1 -name "*.c" -exec cp "{}" "$1/{}" \;
|
||||
}
|
||||
|
||||
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-14 \
|
||||
-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
|
||||
ls .clang-tidy
|
||||
copy_files a
|
||||
if ! find "${DIRS[@]}" \
|
||||
-maxdepth 1 -name "*.c" -print0 \
|
||||
| xargs -0 -n15 -P"$(nproc)" clang-tidy \
|
||||
-p="$PWD/_build" \
|
||||
--extra-arg=-DMIN_LOGGER_LEVEL=LOGGER_LEVEL_TRACE \
|
||||
"${EXTRA_ARGS[@]}" \
|
||||
--fix \
|
||||
--checks="$CHECKS" \
|
||||
--warnings-as-errors="$ERRORS" \
|
||||
--use-color; then
|
||||
copy_files b
|
||||
colordiff -ru a b
|
||||
rm -rf a b
|
||||
false
|
||||
fi
|
||||
rm -rf a
|
||||
}
|
||||
|
||||
cmake . -B_build -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
||||
|
Reference in New Issue
Block a user