1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #! /bin/sh
- # usage:
- #
- # make \
- # REAL_CC=gcc-mine \
- # CC=extra/scripts/cppcheck.sh \
- # CPPCHECK_FLAGS="--enable=style,performance,portability,information,missingInclude --max-configs=256 -j $(($(getconf _NPROCESSORS_ONLN)-1))" \
- # CPPCHECK_LIMIT="yes"
- # CPPCHECK_FLAGS are optional and are not set per default.
- # CPPCHECK_LIMIT limits cppcheck to the -D and -U that would be passed to CC.
- # Setting CPPCHECK_LIMIT greatly improves the check-time but obviously
- # just checks a small subset of the defines found in a file.
- : ${REAL_CC:=gcc}
- ${REAL_CC} $@
- args=""
- limits=""
- next_arg=0
- next_limit=0
- for i in $@
- do
- if [ $next_arg -eq 1 ] ; then
- next_arg=0
- case "/$i" in
- /-*) exit 0 ;;
- esac
- [ "x$args" = "x" ] && args="$i" || args="$args $i"
- continue
- fi
- if [ $next_limit -eq 1 ] ; then
- next_limit=0
- [ "x$limits" = "x" ] && limits="$i" || limits="$limits $i"
- continue
- fi
- case "/$i" in
- /-c) next_arg=1 ;;
- /-isystem)
- next_arg=1;
- [ "x$args" = "x" ] && args="-I" || args="$args -I" ;;
- /-I)
- next_arg=1;
- [ "x$args" = "x" ] && args="$i" || args="$args $i" ;;
- /-I*) [ "x$args" = "x" ] && args="$i" || args="$args $i" ;;
- /-D|/-U)
- next_limit=1;
- [ "x$limit" = "x" ] && limit="$i" || limit="$limit $i" ;;
- /-D*) [ "x$limits" = "x" ] && limits="$i" || limits="$limits $i" ;;
- /-s|/-S|/-dump*|/--print*|/-print*) exit 0 ;;
- *) ;;
- esac
- done
- [ -z "${CPPCHECK_LIMIT}" ] && limits=""
- [ -z "${args}" ] || exec cppcheck ${CPPCHECK_FLAGS} ${args} ${limits}
|