Files
IFEM/Apps/Common/scripts/cppcheck-test.sh.in

38 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# This script performs a single analysis using cppcheck
# It is used by the 'make test' target in the buildsystems
# Usually you should use 'ctest -C cppcheck' rather than calling this script directly
#
# Parameters: $1 = Application binary
# $2 = Source file to process
# $3..$N = include path parameters (-I dir1 -I dir2 ...)
cppcheck_cmd=$1
source_file=$2
shift 2
tmpfil=`mktemp`
$cppcheck_cmd $@ --force --enable=all --suppress=unusedFunction $source_file &> $tmpfil
nmatch=`cat $tmpfil | grep "\[.*\]" | wc -l`
nsys=`cat $tmpfil | grep "\[/usr.*\]" | wc -l`
nnone=`cat $tmpfil | grep "\[\\*]" | wc -l`
let "nval=$nmatch-$nsys-$nnone"
if test $nval -gt 0
then
cat $tmpfil
$cppcheck_cmd $@ -q --xml --xml-version=2 --force --enable=all --suppress=unusedFunction $source_file &> $tmpfil
if test -f cppcheck-result.xml
then
mv cppcheck-result.xml cppcheck-result-old.xml
xml_grep --wrap results --cond error cppcheck-result-old.xml $tmpfil > cppcheck-result.xml
else
mv $tmpfil cppcheck-result.xml
fi
rm -f cppcheck-result-old.xml $tmpfil
exit 1
fi
rm $tmpfil
exit 0