diff options
Diffstat (limited to 'runpychecker.sh')
-rwxr-xr-x | runpychecker.sh | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/runpychecker.sh b/runpychecker.sh new file mode 100755 index 0000000..186a551 --- /dev/null +++ b/runpychecker.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# This script will check anaconda for any pychecker warning using a set of +# options minimizing false positives, in combination with filtering of any +# warning regularexpressions listed in pychecker-false-positives. +# +# If any warnings our found they will be stored in pychecker-log and printed +# to stdout and this script will exit with a status of 1, if no (non filtered) +# warnings are found it exits with a status of 0 + +FALSE_POSITIVES=pychecker-false-positives +NON_STRICT_OPTIONS="--no-deprecated --no-returnvalues --no-abstract" + +usage () { + echo "usage: `basename $0` [--strict] [--help]" + exit $1 +} + +while [ $# -gt 0 ]; do + case $1 in + --strict) + NON_STRICT_OPTIONS="" + ;; + --help) + usage 0 + ;; + *) + echo "Error unknown option: $1" + usage 1 + esac + shift +done + +if [ "`tail -c 1 pychecker-false-positives`" == "`echo`" ]; then + echo "Error $FALSE_POSITIVES ends with an enter." + echo "Error the last line of $FALSE_POSITIVES should never have an enter!" + exit 1 +fi + +export PYTHONPATH=".:.libs:isys:isys/.libs:textw:iw:installclasses:/usr/share/system-config-date" + +pychecker --only --limit 1000 \ + --maxlines 500 --maxargs 20 --maxbranches 80 --maxlocals 60 --maxreturns 20 \ + --no-callinit --no-local --no-shadow --no-shadowbuiltin \ + --no-import --no-miximport --no-pkgimport --no-reimport \ + --no-argsused --no-varargsused --no-override \ + $NON_STRICT_OPTIONS \ + anaconda anaconda *.py textw/*.py iw/*.py installclasses/*.py isys/*.py booty/*.py booty/*/*.py | \ + egrep -v "`cat $FALSE_POSITIVES | tr '\n' '|'`" > pychecker-log + +if [ -s pychecker-log ]; then + echo "Pychecker reports the following issues:" + cat pychecker-log + exit 1 +fi + +rm pychecker-log + +exit 0 |