Enable pylint 1.4.5

This patch enables pylint 1.4.5 checking in ovsdbapp.
Script tools/coding-checks.sh is copied from neutron and adapted for
ovsdbapp.
.pylintrc is also copied from neutron, message options that do not
need to be suppressed have been removed.
This patch also adjusts code to fit pylint 1.7.1

Change-Id: If27c9a13798f20f3c22ca62a38cb93e7ad602a18
This commit is contained in:
Dong Jun 2017-06-22 15:02:12 +08:00
parent 4e7190d1f0
commit 15d956380b
6 changed files with 153 additions and 4 deletions

82
.pylintrc Normal file
View File

@ -0,0 +1,82 @@
# The format of this file isn't really documented; just use --generate-rcfile
[MASTER]
# Add <file or directory> to the black list. It should be a base name, not a
# path. You may set this option multiple times.
ignore=.git,tests
[MESSAGES CONTROL]
# NOTE: This list is copied from neutron, the options which do not need to be
# suppressed have been removed.
disable=
# "F" Fatal errors that prevent further processing
# "I" Informational noise
# "E" Error for important programming issues (likely bugs)
no-member,
# "W" Warnings for stylistic problems or minor programming issues
arguments-differ,
attribute-defined-outside-init,
broad-except,
fixme,
protected-access,
redefined-outer-name,
unused-argument,
useless-super-delegation,
# "C" Coding convention violations
bad-continuation,
invalid-name,
missing-docstring,
# "R" Refactor recommendations
no-self-use,
too-few-public-methods,
too-many-ancestors,
too-many-arguments,
too-many-branches,
too-many-instance-attributes,
too-many-lines,
too-many-locals,
too-many-public-methods,
too-many-return-statements,
too-many-statements
[BASIC]
# Variable names can be 1 to 31 characters long, with lowercase and underscores
variable-rgx=[a-z_][a-z0-9_]{0,30}$
# Argument names can be 2 to 31 characters long, with lowercase and underscores
argument-rgx=[a-z_][a-z0-9_]{1,30}$
# Method names should be at least 3 characters long
# and be lowercased with underscores
method-rgx=([a-z_][a-z0-9_]{2,}|setUp|tearDown)$
# Module names matching
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Don't require docstrings on tests.
no-docstring-rgx=((__.*__)|([tT]est.*)|setUp|tearDown)$
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=79
[VARIABLES]
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
[CLASSES]
# List of interface methods to ignore, separated by a comma.
ignore-iface-methods=
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=
[TYPECHECK]
# List of module names for which member attributes should not be checked
ignored-modules=six.moves,_MovedItems
[REPORTS]
# Tells whether to display a full report or only the messages
reports=no

View File

@ -156,7 +156,7 @@ def get_column_value(row, col):
val = getattr(row, col)
# Idl returns lists of Rows where ovs-vsctl returns lists of UUIDs
if isinstance(val, list) and len(val):
if isinstance(val, list) and val:
if isinstance(val[0], idl.Row):
val = [v.uuid for v in val]
col_type = row._table.columns[col].type
@ -205,7 +205,7 @@ def condition_match(row, condition):
if isinstance(match, dict):
for key in match:
if op == '=':
if (key not in val or match[key] != val[key]):
if key not in val or match[key] != val[key]:
matched = False
break
elif op == '!=':

View File

@ -23,8 +23,7 @@ def _connection_to_manager_uri(conn_uri):
if ':' in addr:
ip, port = addr.split(':', 1)
return 'p%s:%s:%s' % (proto, port, ip)
else:
return 'p%s:%s' % (proto, addr)
return 'p%s:%s' % (proto, addr)
# TODO(jlibosva): Get rid of this runtime configuration and raise a message to

View File

@ -10,6 +10,7 @@ sphinx!=1.6.1,>=1.5.1 # BSD
oslosphinx>=4.7.0 # Apache-2.0
oslotest>=1.10.0 # Apache-2.0
os-testr>=0.8.0 # Apache-2.0
pylint==1.4.5 # GPLv2
testrepository>=0.0.18 # Apache-2.0/BSD
testscenarios>=0.4 # Apache-2.0/BSD
testtools>=1.4.0 # MIT

66
tools/coding-checks.sh Executable file
View File

@ -0,0 +1,66 @@
#!/bin/sh
# This script is copied from neutron and adapted for ovsdbapp.
set -eu
usage () {
echo "Usage: $0 [OPTION]..."
echo "Run ovsdbapp's coding check(s)"
echo ""
echo " -Y, --pylint [<basecommit>] Run pylint check on the entire ovsdbapp module or just files changed in basecommit (e.g. HEAD~1)"
echo " -h, --help Print this usage message"
echo
exit 0
}
join_args() {
if [ -z "$scriptargs" ]; then
scriptargs="$opt"
else
scriptargs="$scriptargs $opt"
fi
}
process_options () {
i=1
while [ $i -le $# ]; do
eval opt=\$$i
case $opt in
-h|--help) usage;;
-Y|--pylint) pylint=1;;
*) join_args;;
esac
i=$((i+1))
done
}
run_pylint () {
local target="${scriptargs:-all}"
if [ "$target" = "all" ]; then
files="ovsdbapp"
else
case "$target" in
*HEAD~[0-9]*) files=$(git diff --diff-filter=AM --name-only $target -- "*.py");;
*) echo "$target is an unrecognized basecommit"; exit 1;;
esac
fi
echo "Running pylint..."
echo "You can speed this up by running it on 'HEAD~[0-9]' (e.g. HEAD~1, this change only)..."
if [ -n "${files}" ]; then
pylint --rcfile=.pylintrc --output-format=colorized ${files}
else
echo "No python changes in this commit, pylint check not required."
exit 0
fi
}
scriptargs=
pylint=1
process_options $@
if [ $pylint -eq 1 ]; then
run_pylint
exit 0
fi

View File

@ -16,6 +16,7 @@ commands = python setup.py testr --slowest --testr-args='{posargs}'
[testenv:pep8]
commands = flake8 {posargs}
{toxinidir}/tools/coding-checks.sh --pylint '{posargs}'
[testenv:venv]
commands = {posargs}