diff --git a/.travis.yml b/.travis.yml index b7ea7a4270..224d5d13be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,9 +48,11 @@ script: - make -C ./tests/unittests test BOARD=qemu-i386 - ./dist/tools/licenses/check.sh master # TODO: -# Remove the --error-exitcode=0` when all warnings of cppcheck have been -# taken care of in master. - - ./dist/tools/cppcheck/check.sh master --error-exitcode=0 +# Remove all but `master` parameters to cppcheck (and remove second +# invocation) once all warnings of cppcheck have been taken care of +# in master. + - ./dist/tools/cppcheck/check.sh master --diff-filter=MR --error-exitcode=0 + - ./dist/tools/cppcheck/check.sh master --diff-filter=AC # TODO: # Remove the `AC` argument when all headers have been # taken care of in master. diff --git a/dist/tools/cppcheck/check.sh b/dist/tools/cppcheck/check.sh index c88a6e04b7..2cb965107b 100755 --- a/dist/tools/cppcheck/check.sh +++ b/dist/tools/cppcheck/check.sh @@ -3,18 +3,28 @@ BRANCH=${1} FILEREGEX='\.([sScHh]|cpp)$' -# if branch is an option, unset branch, consume parameter otherwise +# If no branch but an option is given, unset BRANCH. +# Otherwise, consume this parameter. if echo "${BRANCH}" | grep -q '^-'; then BRANCH="" else shift 1 fi +# If the --diff-filter option is given, consume this parameter. +# Set the default DIFFFILTER option otherwise. +DIFFFILTER="${1}" +if echo "${DIFFFILTER}" | grep -q '^--diff-filter='; then + shift 1 +else + DIFFFILTER="--diff-filter=ACMR" +fi + # select either all or only touched-in-branch files, filter through FILEREGEX if [ -z "${BRANCH}" ]; then FILES="$(git ls-tree -r --full-tree --name-only HEAD | grep -E ${FILEREGEX})" else - FILES="$(git diff --diff-filter=ACMR --name-only ${BRANCH} | grep -E ${FILEREGEX})" + FILES="$(git diff ${DIFFFILTER} --name-only ${BRANCH} | grep -E ${FILEREGEX})" fi if [ -z "${FILES}" ]; then