#!/bin/bash SKIP_GTEST=1 . other/analysis/gen-file.sh set -e CPPCHECK=("--enable=all") CPPCHECK+=("--inconclusive") CPPCHECK+=("--check-level=exhaustive") CPPCHECK+=("--inline-suppr") CPPCHECK+=("--library=other/docker/cppcheck/toxcore.cfg") CPPCHECK+=("--error-exitcode=1") # We don't cast function pointers, which cppcheck suggests here. CPPCHECK+=("--suppress=constParameterCallback") # False positives in switch statements. CPPCHECK+=("--suppress=knownConditionTrueFalse") # Cppcheck does not need standard library headers to get proper results. CPPCHECK+=("--suppress=missingIncludeSystem") # TODO(iphydf): Maybe fix? CPPCHECK+=("--suppress=signConversion") # We use this for VLAs. CPPCHECK_CXX+=("--suppress=allocaCalled") # False positive in auto_tests. CPPCHECK_CXX+=("--suppress=shadowFunction") # False positive in group.c. # Using cppcheck-suppress claims the suppression is unused. CPPCHECK_CXX+=("--suppress=AssignmentAddressToInteger") # We use C style casts because we write C code. CPPCHECK_CXX+=("--suppress=cstyleCast") # Used in Messenger.c for a static_assert(...) CPPCHECK_CXX+=("--suppress=sizeofFunctionCall") # This is outdated. Range-for is a good choice. CPPCHECK_CXX+=("--suppress=useStlAlgorithm") run() { echo "Running cppcheck in variant '$*'" cppcheck -j8 "${CPPCHECK[@]}" "${CPPCHECK_C[@]}" tox*/*.[ch] tox*/*/*.[ch] "${CPPFLAGS[@]}" "$@" cppcheck "${CPPCHECK[@]}" "${CPPCHECK_CXX[@]}" amalgamation.cc "${CPPFLAGS[@]}" "$@" } . other/analysis/variants.sh