# Runs cppcheck with GitLab CI (CodeClimate) output
OUTPUT_FILE=${PROJECT_BINARY_DIR}/cppcheck.json
${CPPCHECK_TOOL_PATH} \
--project=${PROJECT_BINARY_DIR}/compile_commands.json \
--language=c++ \
--std=c++20 \
--enable=all \
--inconclusive \
-j ${CPPCHECK_PARALLEL} \
--suppress=*:*/usr/local\* \
--suppress=*:*cpm\* \
--suppress=*:*Tests\* \
--template='{\n "description": "{message}",\n "severity": "info",\n "location": {\n "path": "{file}",\n "lines": {\n "begin": {line}\n }\n }\n},' \
--output-file=$OUTPUT_FILE \
echo "$( \
# add brackets
printf '[\n'; \
cat $OUTPUT_FILE | \
# strip source code absolute path
sed 's|${PROJECT_SOURCE_DIR}/||' | \
# escape strings
sed 's/string literal "\(.*\)" to/string literal \\"\1\\" to/g' | \
# remove last comma
sed '$s/,$//'; \
printf ']\n')" \
> $OUTPUT_FILE
if [ -f ${Python3_EXECUTABLE} ]; then
${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/test/cppcheck_gen_hashes.py $OUTPUT_FILE
fi