From Dan Kenigsberg <danken(a)redhat.com>:
Dan Kenigsberg has uploaded a new change for review.
Change subject: introduce pylint check
......................................................................
introduce pylint check
pylint is a static code checker. yum-install pylint in your developement
environment, and do `make pylint` to see if your new code has not
introduced new errors.
Note that currently, pylint does not pass quietly on our code base. I
had to disable three of its checks, and to have a blacklist of files. I
hope that with time, we can eliminate the blacklist.
Further note that `make pylint` is very slow, and then was not added to
`make check`. You have to run it excplicitly to enjoy it. But please do.
I can find simple, but painful, glitches.
Change-Id: I85eca67784f82876b262b4452506e0f47486695b
Signed-off-by: Dan Kenigsberg <danken(a)redhat.com>
---
M Makefile.am
D pylintrc
2 files changed, 51 insertions(+), 320 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/45/69345/1
diff --git a/Makefile.am b/Makefile.am
index 1423f5e..6637ef7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -87,6 +87,57 @@
echo "Missing absolute_import in $$f"; exit 1; fi; \
done;
+pylint_blacklist = \
+ lib/vdsm/network/ip/__init__.py \
+ lib/vdsm/network/ip/address.py \
+ lib/vdsm/network/tc/__init__.py \
+ lib/vdsm/network/tc/filter.py \
+ lib/vdsm/storage/__init__.py \
+ lib/vdsm/storage/iscsi.py \
+ lib/vdsm/storage/misc.py \
+ lib/vdsm/storage/resourceManager.py \
+ lib/vdsm/storage/task.py \
+ lib/yajsonrpc/__init__.py \
+ lib/yajsonrpc/stomp.py \
+ tests/__init__.py \
+ tests/check_imports.py \
+ tests/executorTests.py \
+ tests/functional/__init__ \
+ tests/functional/networkTestsOVS.py \
+ tests/functional/networkTests.py \
+ tests/functional/utils.py \
+ tests/integration/jsonRpcHelper.py \
+ tests/jobsTests.py \
+ tests/libvirtconnectionTests.py \
+ tests/monkeypatchTests.py \
+ tests/network/__init__.py \
+ tests/network/ifacquire_test.py \
+ tests/network/netfunctestlib.py \
+ tests/network/vm_migrate_hook_test.py \
+ tests/storage_monitor_test.py \
+ tests/storage_resourcemanager_test.py \
+ tests/storage_securable_test.py \
+ tests/vmfakelib.py \
+ tests/vmApiTests.py \
+ vdsm/storage/__init__.py \
+ vdsm/storage/image.py \
+ vdsm/storage/monitor.py \
+ vdsm/storage/sp.py \
+ vdsm/storage/volume.py \
+ vdsm/virt/vmdevices/storage.py \
+ vdsm_hooks/checkimages/before_vm_start.py \
+ $(NULL)
+
+.PHONY: pylint
+pylint:
+ all_modules=`mktemp` && \
+ blacklist=`mktemp` && \
+ git ls-files | grep '\.py$$' | sort > "$$all_modules" && \
+ echo $(pylint_blacklist) | tr \ \\n | sort > "$$blacklist" && \
+ modules=$$(comm -2 -3 "$$all_modules" "$$blacklist") && \
+ rm -f "$$all_modules" "$$blacklist" && \
+ pylint -E --disable=import-error,no-name-in-module,no-member $$modules
+
.PHONY: flake8
flake8: tox
tox -e flake8
diff --git a/pylintrc b/pylintrc
deleted file mode 100644
index b236555..0000000
--- a/pylintrc
+++ /dev/null
@@ -1,320 +0,0 @@
-# lint Python modules using external checkers.
-#
-# This is the main checker controling the other ones and the reports
-# generation. It is itself both a raw checker and an astng checker in order
-# to:
-# * handle message activation / deactivation at the module level
-# * handle some basic but necessary stats'data (number of classes, methods...)
-#
-[MASTER]
-
-# Specify a configuration file.
-#rcfile=
-
-# Profiled execution.
-profile=no
-
-# 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
-
-# Pickle collected data for later comparisons.
-persistent=yes
-
-# Set the cache size for astng objects.
-cache-size=500
-
-# List of plugins (as comma separated values of python modules names) to load,
-# usually to register additional checkers.
-load-plugins=
-
-
-[MESSAGES CONTROL]
-
-# Enable only checker(s) with the given id(s). This option conflict with the
-# disable-checker option
-#enable-checker=
-
-# Enable all checker(s) except those with the given id(s). This option conflict
-# with the disable-checker option
-#disable-checker=
-
-# Enable all messages in the listed categories.
-#enable-msg-cat=
-
-# Disable all messages in the listed categories.
-#disable-msg-cat=
-
-# Enable the message(s) with the given id(s).
-#enable-msg=
-
-# Disable the message(s) with the given id(s).
-disable-msg=C0323,W0142,C0301,C0103,C0111,E0213,C0302,C0203,W0703,R0201,W0613,W0612,W0622
-
-# C0323: Operator not followed by a space
-# W0142: Used * or ** magic
-# C0301: Line too long (%s/%s)
-# C0103: Invalid name "%s" (should match %s)
-# C0111: Missing docstring
-# E0213: Method should have "self" as first argument
-# C0302: Too many lines in module (%s)
-# C0203: Metaclass method should have "mcs" as first argument
-# W0703: Catch "Exception"
-# R0201: Method could be a function
-# W0613: Unused argument %r
-# W0612: Unused variable %r
-# W0622: Redefining built-in %r
-
-# Disabled checks
-disable=W0142
-
-[REPORTS]
-
-# set the output format. Available formats are text, parseable, colorized and
-# html
-output-format=colorized
-
-# Include message's id in output
-include-ids=yes
-
-# Put messages in a separate file for each module / package specified on the
-# command line instead of printing them on stdout. Reports (if any) will be
-# written in a file name "pylint_global.[txt|html]".
-files-output=no
-
-# Tells wether to display a full report or only the messages
-reports=yes
-
-# Python expression which should return a note less than 10 (10 is the highest
-# note).You have access to the variables errors warning, statement which
-# respectivly contain the number of errors / warnings messages and the total
-# number of statements analyzed. This is used by the global evaluation report
-# (R0004).
-evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) *
10)
-
-# Add a comment according to your evaluation note. This is used by the global
-# evaluation report (R0004).
-comment=no
-
-# Enable the report(s) with the given id(s).
-#enable-report=
-
-# Disable the report(s) with the given id(s).
-#disable-report=
-
-
-# checks for
-# * unused variables / imports
-# * undefined variables
-# * redefinition of variable from builtins or from an outer scope
-# * use of variable before assigment
-#
-[VARIABLES]
-
-# Tells wether we should check for unused import in __init__ files.
-init-import=no
-
-# A regular expression matching names used for dummy variables (i.e. not used).
-dummy-variables-rgx=_|dummy
-
-# List of additional names supposed to be defined in builtins. Remember that
-# you should avoid to define new builtins when possible.
-additional-builtins=
-
-
-# try to find bugs in the code using type inference
-#
-[TYPECHECK]
-
-# Tells wether missing members accessed in mixin class should be ignored. A
-# mixin class is detected if its name ends with "mixin" (case insensitive).
-ignore-mixin-members=yes
-
-# When zope mode is activated, consider the acquired-members option to ignore
-# access to some undefined attributes.
-zope=no
-
-# List of members which are usually get through zope's acquisition mecanism and
-# so shouldn't trigger E0201 when accessed (need zope=yes to be considered).
-acquired-members=REQUEST,acl_users,aq_parent
-
-
-# checks for :
-# * doc strings
-# * modules / classes / functions / methods / arguments / variables name
-# * number of arguments, local variables, branchs, returns and statements in
-# functions, methods
-# * required module attributes
-# * dangerous default values as arguments
-# * redefinition of function / method / class
-# * uses of the global statement
-#
-[BASIC]
-
-# Required attributes for module, separated by a comma
-required-attributes=
-
-# Regular expression which should only match functions or classes name which do
-# not require a docstring
-no-docstring-rgx=__.*__
-
-# Regular expression which should only match correct module names
-module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
-
-# Regular expression which should only match correct module level names
-const-rgx=(([A-Z_][A-Z1-9_]*)|(__.*__))$
-
-# Regular expression which should only match correct class names
-class-rgx=[A-Z_][a-zA-Z0-9]+$
-
-# Regular expression which should only match correct function names
-function-rgx=[a-z_][a-zA-Z0-9_]{2,30}$
-
-# Regular expression which should only match correct method names
-# method-rgx=[a-z_][a-z0-9_]{2,30}$ (default)
-method-rgx=_?([a-z]|__)[a-zA-Z0-9]*(__)?$
-
-# Regular expression which should only match correct instance attribute names
-attr-rgx=[a-z_][a-zA-Z0-9_]{2,30}$
-
-# Regular expression which should only match correct argument names
-# argument-rgx=[a-z_][a-z0-9_]{2,30}$ (default)
-argument-rgx=([a-z_]+[a-zA-Z0-9]*$||(__.*__))$
-
-# Regular expression which should only match correct variable names
-# variable-rgx=[a-z_][a-z0-9_]{2,30}$ (default)
-variable-rgx=([a-z_]+[a-zA-Z0-9]*$||(__.*__))$
-
-# Regular expression which should only match correct list comprehension /
-# generator expression variable names
-inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
-
-# Good variable names which should always be accepted, separated by a comma
-good-names=i,j,k,ex,Run,_,e
-
-# Bad variable names which should always be refused, separated by a comma
-bad-names=foo,bar,baz,toto,tutu,tata
-
-# List of builtins function names that should not be used, separated by a comma
-bad-functions=apply,input,exec,eval
-
-
-# checks for sign of poor/misdesign:
-# * number of methods, attributes, local variables...
-# * size, complexity of functions, methods
-#
-[DESIGN]
-
-# Maximum number of arguments for function / method
-max-args=12
-
-# Maximum number of locals for function / method body
-max-locals=30
-
-# Maximum number of return / yield for function / method body
-max-returns=12
-
-# Maximum number of branch for function / method body
-max-branchs=30
-
-# Maximum number of statements in function / method body
-max-statements=60
-
-# Maximum number of parents for a class (see R0901).
-max-parents=7
-
-# Maximum number of attributes for a class (see R0902).
-max-attributes=20
-
-# Minimum number of public methods for a class (see R0903).
-min-public-methods=0
-
-# Maximum number of public methods for a class (see R0904).
-max-public-methods=20
-
-
-# checks for
-# * external modules dependencies
-# * relative / wildcard imports
-# * cyclic imports
-# * uses of deprecated modules
-#
-[IMPORTS]
-
-# Deprecated modules which should not be used, separated by a comma
-deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
-
-# Create a graph of every (i.e. internal and external) dependencies in the
-# given file (report R0402 must not be disabled)
-import-graph=
-
-# Create a graph of external dependencies in the given file (report R0402 must
-# not be disabled)
-ext-import-graph=
-
-# Create a graph of internal dependencies in the given file (report R0402 must
-# not be disabled)
-int-import-graph=
-
-
-# checks for :
-# * methods without self as first argument
-# * overridden methods signature
-# * access only to existant members via self
-# * attributes not defined in the __init__ method
-# * supported interfaces implementation
-# * unreachable code
-#
-[CLASSES]
-
-# List of interface methods to ignore, separated by a comma. This is used for
-# instance to not check methods defines in Zope's Interface base class.
-ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
-
-# List of method names used to declare (i.e. assign) instance attributes.
-defining-attr-methods=__init__,__new__,setUp
-
-
-# checks for similarities and duplicated code. This computation may be
-# memory / CPU intensive, so you should disable it if you experiments some
-# problems.
-#
-[SIMILARITIES]
-
-# Minimum lines number of a similarity.
-min-similarity-lines=10
-
-# Ignore comments when computing similarities.
-ignore-comments=yes
-
-# Ignore docstrings when computing similarities.
-ignore-docstrings=yes
-
-
-# checks for:
-# * warning notes in the code like FIXME, XXX
-# * PEP 263: source code with non ascii character but no encoding declaration
-#
-[MISCELLANEOUS]
-
-# List of note tags to take in consideration, separated by a comma.
-notes=FIXME,XXX,TODO
-
-
-# checks for :
-# * unauthorized constructions
-# * strict indentation
-# * line length
-# * use of <> instead of !=
-#
-[FORMAT]
-
-# Maximum number of characters on a single line.
-max-line-length=79
-
-# Maximum number of lines in a module
-max-module-lines=1000
-
-# String used as indentation unit. This is usually " " (4 spaces) or
"\t" (1
-# tab).
-indent-string=' '
--
To view, visit
https://gerrit.ovirt.org/69345
To unsubscribe, visit
https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I85eca67784f82876b262b4452506e0f47486695b
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Dan Kenigsberg <danken(a)redhat.com>