75 lines
2.8 KiB
Bash
Executable File
75 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Jenkins will pass -xml, in which case we want to generate XML output
|
|
xmlout=0
|
|
if test "$1" = "-xmldir" -a -n "$2"; then
|
|
xmlout=1
|
|
xmldir=$2
|
|
mkdir -p $xmldir
|
|
rm -rf $xmldir/*.xml
|
|
# Assuming that Jenkins called, the `build` directory is a sibling to the src dir
|
|
builddir=../build
|
|
else
|
|
# This is a heuristic guess; not every developer puts the `build` dir in the src dir
|
|
builddir=./build
|
|
fi
|
|
|
|
# Use a suppression file for spurious errors
|
|
SUPPRESS=/tmp/sdf_cpp_check.suppress
|
|
echo "*:test/integration/locale_fix.cc:35" > $SUPPRESS
|
|
|
|
# Use another suppression file for unused function checking
|
|
SUPPRESS2=/tmp/sdf_cpp_check2.suppress
|
|
echo "*:src/SDF.cc" > $SUPPRESS2
|
|
echo "*:src/Assert.cc" >> $SUPPRESS2
|
|
echo "*:src/Console.cc" >> $SUPPRESS2
|
|
echo "*:src/parser.cc" >> $SUPPRESS2
|
|
echo "*:src/parser_urdf.cc" >> $SUPPRESS2
|
|
echo "*:src/Element.cc:464" >> $SUPPRESS2
|
|
echo "*:src/Element.cc:39" >> $SUPPRESS2
|
|
echo "*:src/Element.cc:752" >> $SUPPRESS2
|
|
|
|
CHECK_FILE_DIRS="./src ./include ./test/performance ./test/integration"
|
|
|
|
#cppcheck
|
|
CPPCHECK_BASE="cppcheck -q --suppressions-list=$SUPPRESS"
|
|
CPPCHECK_BASE2="cppcheck -q --suppressions-list=$SUPPRESS2"
|
|
CPPCHECK_FILES=`find $CHECK_FILE_DIRS -name "*.cc"`
|
|
CPPCHECK_INCLUDES="-I include -I . -I src/urdf -I $builddir -I $builddir/include"
|
|
CPPCHECK_COMMAND1="-j 4 --enable=style,performance,portability,information $CPPCHECK_FILES"
|
|
# Unused function checking must happen in one job
|
|
CPPCHECK_COMMAND2="--enable=unusedFunction $CPPCHECK_FILES"
|
|
# -j 4 was used previously in CPPCHECK_COMMAND3 but it will generate a false
|
|
# warning as described in bug:
|
|
# http://sourceforge.net/apps/trac/cppcheck/ticket/4946
|
|
CPPCHECK_COMMAND3="-j 1 --enable=missingInclude --suppress=missingIncludeSystem $CPPCHECK_FILES $CPPCHECK_INCLUDES --check-config"
|
|
if [ $xmlout -eq 1 ]; then
|
|
# Performance, style, portability, and information
|
|
($CPPCHECK_BASE --xml --xml-version=2 $CPPCHECK_COMMAND1) 2> $xmldir/cppcheck.xml
|
|
|
|
# Unused function checking
|
|
($CPPCHECK_BASE2 --xml --xml-version=2 $CPPCHECK_COMMAND2) 2> $xmldir/cppcheck-unused-functions.xml
|
|
|
|
# Check the configuration
|
|
($CPPCHECK_BASE --xml --xml-version=2 $CPPCHECK_COMMAND3) 2> $xmldir/cppcheck-configuration.xml
|
|
else
|
|
# Performance, style, portability, and information
|
|
$CPPCHECK_BASE $CPPCHECK_COMMAND1 2>&1
|
|
|
|
# Unused function checking
|
|
$CPPCHECK_BASE2 $CPPCHECK_COMMAND2 2>&1
|
|
|
|
# Check the configuration
|
|
$CPPCHECK_BASE $CPPCHECK_COMMAND3 2>&1
|
|
fi
|
|
|
|
# cpplint
|
|
# exclude urdf files for now, since they generate lots of errors
|
|
CPPLINT_FILES=`find $CHECK_FILE_DIRS -name "*.cc" -o -name "*.hh" | grep -iv urdf`
|
|
if [ $xmlout -eq 1 ]; then
|
|
(echo $CPPLINT_FILES | xargs python tools/cpplint.py 2>&1) \
|
|
| python tools/cpplint_to_cppcheckxml.py 2> $xmldir/cpplint.xml
|
|
else
|
|
echo $CPPLINT_FILES | xargs python tools/cpplint.py 2>&1
|
|
fi
|