60 lines
1.7 KiB
Bash
Executable File
60 lines
1.7 KiB
Bash
Executable File
#!/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
|