mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-16 05:13:58 -07:00
60 lines
1.2 KiB
Bash
60 lines
1.2 KiB
Bash
|
|
#!/bin/sh
|
||
|
|
|
||
|
|
cd "$(dirname "$0")/../../../.." || exit 1
|
||
|
|
|
||
|
|
. source/tools/utils.sh
|
||
|
|
|
||
|
|
while [ "$#" -gt 0 ]; do
|
||
|
|
case "$1" in
|
||
|
|
--diff)
|
||
|
|
mode="diff"
|
||
|
|
commitish=$2
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
-j*) JOBS="$1" ;;
|
||
|
|
*)
|
||
|
|
printf "Unknown option: %s\n\n" "$1"
|
||
|
|
exit 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
shift
|
||
|
|
done
|
||
|
|
|
||
|
|
: "${JOBS:=-j$(utils_num_online_cpu)}"
|
||
|
|
|
||
|
|
if [ "${mode}" = diff ]; then
|
||
|
|
git diff --name-status "${commitish}" | awk '!/^D/{if ($2 ~ /(\.cpp|\.h)$/) {print "./" $2}}' >cppcheck-file-list.txt
|
||
|
|
else
|
||
|
|
find . \( -name '*.cpp' -o -name '*.h' \) >cppcheck-file-list.txt
|
||
|
|
fi
|
||
|
|
|
||
|
|
awk '!/^\.\/(binaries|build|libraries|source\/third_party)\//' <cppcheck-file-list.txt >cppcheck-file-list-filtered.txt
|
||
|
|
|
||
|
|
rm -f cppcheck-error.log
|
||
|
|
|
||
|
|
cppcheck \
|
||
|
|
"${JOBS}" \
|
||
|
|
--language=c++ \
|
||
|
|
--std=c++17 \
|
||
|
|
--force \
|
||
|
|
--check-level=exhaustive \
|
||
|
|
--library=boost \
|
||
|
|
--library=icu \
|
||
|
|
--library=libcurl \
|
||
|
|
--library=sdl \
|
||
|
|
--library=wxwidgets \
|
||
|
|
-Isource \
|
||
|
|
--file-list=cppcheck-file-list-filtered.txt \
|
||
|
|
--suppressions-list=source/tools/lint/cppcheck/suppressions-list.txt \
|
||
|
|
2>&1 >/dev/null | tee cppcheck-error.log >&2
|
||
|
|
|
||
|
|
rm cppcheck-file-list.txt
|
||
|
|
rm cppcheck-file-list-filtered.txt
|
||
|
|
|
||
|
|
has_errors=$(wc -l <cppcheck-error.log)
|
||
|
|
if [ "${has_errors}" != 0 ]; then
|
||
|
|
exit 1
|
||
|
|
else
|
||
|
|
rm cppcheck-error.log
|
||
|
|
fi
|