aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'runpychecker.sh')
-rwxr-xr-xrunpychecker.sh59
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