ppovb5fc7/sdformat/tools/code_check.sh

75 lines
2.8 KiB
Bash
Raw Permalink Normal View History

2019-03-25 11:01:43 +08:00
#!/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