f73b3741f0
Apply result of "git diff anaconda-18.37.11-1..anaconda-20.25.16-1" and resolve conflicts.
128 lines
3.9 KiB
Bash
Executable File
128 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script will check anaconda for any pylint warning and errors using a set
|
|
# of options minimizing false positives, in combination with filtering of any
|
|
# warning regularexpressions listed in pylint-false-positives.
|
|
#
|
|
# If any warnings are found they will be stored in pylint-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
|
|
|
|
# If $top_srcdir is set, assume this is being run from automake and we don't
|
|
# need to keep a separate log
|
|
pylint_log=0
|
|
if [ -z "$top_srcdir" ]; then
|
|
pylint_log=1
|
|
fi
|
|
|
|
# Unset TERM so that things that use readline don't output terminal garbage
|
|
unset TERM
|
|
|
|
# If $top_srcdir has not been set by automake, import the test environment
|
|
if [ -z "$top_srcdir" ]; then
|
|
top_srcdir="$(dirname "$0")/../.."
|
|
. ${top_srcdir}/tests/testenv.sh
|
|
fi
|
|
|
|
srcdir="${top_srcdir}/tests/pylint"
|
|
|
|
FALSE_POSITIVES="${srcdir}"/pylint-false-positives
|
|
|
|
# W0212 - Access to a protected member %s of a client class
|
|
NON_STRICT_OPTIONS="--disable=W0212"
|
|
|
|
# E1103 - %s %r has no %r member (but some types could not be inferred)
|
|
DISABLED_ERR_OPTIONS="--disable=E1103"
|
|
|
|
# W0110 - map/filter on lambda could be replaced by comprehension
|
|
# W0141 - Used builtin function %r
|
|
# W0142 - Used * or ** magic
|
|
# W0223 - Method %r is abstract in class %r but is not overridden
|
|
# W0511 - Used when a warning note as FIXME or XXX is detected.
|
|
# W0603 - Using the global statement
|
|
# W0604 - Using the global statement at the module level
|
|
# W0613 - Unused argument %r
|
|
# W0614 - Unused import %s from wildcard import
|
|
DISABLED_WARN_OPTIONS="--disable=W0110,W0141,W0142,W0223,W0511,W0603,W0604,W0613,W0614"
|
|
|
|
usage () {
|
|
echo "usage: `basename $0` [--strict] [--help] [files...]"
|
|
exit $1
|
|
}
|
|
|
|
FILES=
|
|
while [ $# -gt 0 ]; do
|
|
case $1 in
|
|
--strict)
|
|
NON_STRICT_OPTIONS=
|
|
;;
|
|
--help)
|
|
usage 0
|
|
;;
|
|
*)
|
|
FILES=$@
|
|
break
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ "`tail -c 1 $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
|
|
|
|
exit_status=0
|
|
if [ "$pylint_log" -ne 0 ]; then
|
|
> pylint-log
|
|
fi
|
|
|
|
# run pylint one file / module at a time, otherwise it sometimes gets
|
|
# confused
|
|
if [ -z "$FILES" ]; then
|
|
# Find any file in the list of directories that either ends in .py
|
|
# or contains #!/usr/bin/python in the first line.
|
|
FILES="$(find "${top_srcdir}"/{anaconda,pyanaconda,tests,widgets,utils,scripts} -type f \( -name '*.py' -o -exec awk -e 'NR==1 { if ($0 ~ /^#!\/usr\/bin\/python/) exit 0; else exit 1; }' -e 'END { if (NR == 0) exit 1; }' {} \; \) -print)"
|
|
fi
|
|
for i in $FILES; do
|
|
if [ -n "$(echo "$i" | grep 'pyanaconda/packaging/dnfpayload.py$')" ]; then
|
|
continue
|
|
fi
|
|
|
|
pylint_output="$(pylint \
|
|
--msg-template='{msg_id}:{line:3d},{column}: {obj}: {msg}' \
|
|
-r n --disable=C,R --rcfile=/dev/null \
|
|
--dummy-variables-rgx=_ \
|
|
--ignored-classes=DefaultInstall,Popen,QueueFactory,TransactionSet \
|
|
--defining-attr-methods=__init__,_grabObjects,initialize,reset,start,setUp \
|
|
$DISABLED_WARN_OPTIONS \
|
|
$DISABLED_ERR_OPTIONS \
|
|
$NON_STRICT_OPTIONS $i | \
|
|
egrep -v "$(tr '\n' '|' < "$FALSE_POSITIVES") \
|
|
")"
|
|
# I0011 is the informational "Locally disabling ...." message
|
|
if [ -n "$(echo "$pylint_output" | fgrep -v '************* Module ' |\
|
|
grep -v '^I0011:')" ]; then
|
|
# Replace the Module line with the actual filename
|
|
pylint_output="$(echo "$pylint_output" | sed "s|\* Module .*|* Module $i|")"
|
|
|
|
if [ "$pylint_log" -ne 0 ]; then
|
|
echo "$pylint_output" >> pylint-log
|
|
else
|
|
echo "$pylint_output"
|
|
fi
|
|
exit_status=1
|
|
fi
|
|
done
|
|
|
|
if [ "$pylint_log" -ne 0 ]; then
|
|
if [ -s pylint-log ]; then
|
|
echo "pylint reports the following issues:"
|
|
cat pylint-log
|
|
else
|
|
rm pylint-log
|
|
fi
|
|
fi
|
|
|
|
exit "$exit_status"
|