On Mon,  5 Oct 2015 23:50:41 -0400
Mike Frysinger <[email protected]> wrote:

> A bunch of warnings are left disabled because there's too many
> violations in the current code base.  Hopefully we can get to a point
> where everyone uses this though and we can start enabling more and
> more.
> 
> The code base is "clean" right now in the sense that running pylint
> will not produce any output.  But we should start removing violations
> one by one and re-enable the warning class as we go.
> ---
>  .pylintrc  | 250
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> bin/pylint |  31 ++++++++ 2 files changed, 281 insertions(+)
>  create mode 100644 .pylintrc
>  create mode 100755 bin/pylint
> 
> diff --git a/.pylintrc b/.pylintrc
> new file mode 100644
> index 0000000..5fdbb1f
> --- /dev/null
> +++ b/.pylintrc
> @@ -0,0 +1,250 @@
> +[MASTER]
> +
> +# Profiled execution.
> +profile=no
> +
> +# Add files or directories to the blacklist. They should be base
> names, not +# paths.
> +ignore=
> +
> +# Pickle collected data for later comparisons.
> +persistent=yes
> +
> +# List of plugins (as comma separated values of python modules
> names) to load, +# usually to register additional checkers.
> +load-plugins=
> +
> +
> +[MESSAGES CONTROL]
> +
> +# Enable the message, report, category or checker with the given
> id(s). You can +# either give multiple identifier separated by comma
> (,) or put this option +# multiple time.
> +#enable=
> +
> +# Disable the message, report, category or checker with the given
> id(s). You +# can either give multiple identifier separated by comma
> (,) or put this option +# multiple time (only on the command line,
> not in the configuration file where +# it should appear only once).
> +# We should clean up things so we can enable:
> +# missing-docstring -- add lots of docstrings everywhere!
> +# bad-whitespace -- fix spacing everywhere
> +# bad-continuation -- might be hard with tab indentation policy
> +# invalid-name -- need to manage constants better
> +# line-too-long -- figure out a length and stick to it
> +# pointless-string-statement -- convert to comments
> +# unused-wildcard-import -- use local disables if needed
> +# unidiomatic-typecheck -- convert to isinstance
> +# redefined-outer-name -- clean up code to not do this
> +# <all the ones after redefined-outer-name in the list>
> +disable=missing-docstring, too-many-lines, locally-enabled,
> locally-disabled, too-few-public-methods, too-many-public-methods,
> too-many-return-statements, too-many-branches, too-many-arguments,
> too-many-function-args, too-many-locals, too-many-statements,
> too-many-instance-attributes, fixme, broad-except, bad-whitespace,
> bad-continuation, invalid-name, line-too-long,
> pointless-string-statement, unused-wildcard-import,
> unidiomatic-typecheck, redefined-outer-name,
> attribute-defined-outside-init, bad-indentation, bare-except,
> global-statement, global-variable-not-assigned, mixed-indentation,
> multiple-statements, no-self-use, redefined-builtin, reimported,
> relative-import, superfluous-parens, super-init-not-called,
> unused-argument, unused-import, unused-variable, wildcard-import,
> bad-builtin, no-init, unreachable + + +[REPORTS] + +# Set the output
> format. Available formats are text, parseable, colorized, msvs +#
> (visual studio) and html +output-format=text + +# 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 whether to display a full report or only the messages
> +reports=no + +# 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 +# respectively contain the number of
> errors / warnings messages and the total +# number of statements
> analyzed. This is used by the global evaluation report +# (RP0004).
> +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
> (RP0004). +comment=no + +
> +[FORMAT]
> +
> +# Maximum number of characters on a single line.
> +max-line-length=80
> +
> +# 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='\t'
> +
> +
> +[MISCELLANEOUS]
> +
> +# List of note tags to take in consideration, separated by a comma.
> +notes=FIXME,XXX,TODO
> +
> +
> +[VARIABLES]
> +
> +# Tells whether we should check for unused import in __init__ files.
> +init-import=no
> +
> +# A regular expression matching the beginning of the name of 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=
> +
> +
> +[TYPECHECK]
> +
> +# Tells whether 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
> +
> +# List of classes names for which member attributes should not be
> checked +# (useful for classes with attributes dynamically set).
> +ignored-classes=SQLObject,twisted.internet.reactor,hashlib,google.appengine.api.memcache
> +
> +# When zope mode is activated, add a predefined set of Zope acquired
> attributes +# to generated-members.
> +zope=no
> +
> +# List of members which are set dynamically and missed by pylint
> inference +# system, and so shouldn't trigger E0201 when accessed.
> Python regular +# expressions are accepted.
> +generated-members=REQUEST,acl_users,aq_parent,multiprocessing.managers.SyncManager
> +
> +
> +[BASIC]
> +
> +# Required attributes for module, separated by a comma
> +required-attributes=
> +
> +# List of builtins function names that should not be used, separated
> by a comma +bad-functions=map,filter,apply,input
> +
> +# 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-Z0-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-z0-9_]{2,30}$
> +
> +# Regular expression which should only match correct method names
> +method-rgx=[a-z_][a-z0-9_]{2,30}$
> +
> +# Regular expression which should only match correct instance
> attribute names +attr-rgx=[a-z_][a-z0-9_]{2,30}$
> +
> +# Regular expression which should only match correct argument names
> +argument-rgx=[a-z_][a-z0-9_]{2,30}$
> +
> +# Regular expression which should only match correct variable names
> +variable-rgx=[a-z_][a-z0-9_]{2,30}$
> +
> +# 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,_
> +
> +# Bad variable names which should always be refused, separated by a
> comma +bad-names=foo,bar,baz,toto,tutu,tata
> +
> +# Regular expression which should only match functions or classes
> name which do +# not require a docstring
> +no-docstring-rgx=__.*__
> +
> +
> +[SIMILARITIES]
> +
> +# Minimum lines number of a similarity.
> +min-similarity-lines=20
> +
> +# Ignore comments when computing similarities.
> +ignore-comments=yes
> +
> +# Ignore docstrings when computing similarities.
> +ignore-docstrings=yes
> +
> +
> +[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 RP0402 must not be disabled)
> +import-graph=
> +
> +# Create a graph of external dependencies in the given file (report
> RP0402 must +# not be disabled)
> +ext-import-graph=
> +
> +# Create a graph of internal dependencies in the given file (report
> RP0402 must +# not be disabled)
> +int-import-graph=
> +
> +
> +[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
> +
> +# List of valid names for the first argument in a class method.
> +valid-classmethod-first-arg=cls
> +
> +
> +[DESIGN]
> +
> +# Maximum number of arguments for function / method
> +max-args=5
> +
> +# Argument names that match this expression will be ignored. Default
> to name +# with leading underscore
> +ignored-argument-names=_.*
> +
> +# Maximum number of locals for function / method body
> +max-locals=15
> +
> +# Maximum number of return / yield for function / method body
> +max-returns=6
> +
> +# Maximum number of branch for function / method body
> +max-branchs=12
> +
> +# Maximum number of statements in function / method body
> +max-statements=50
> +
> +# Maximum number of parents for a class (see R0901).
> +max-parents=7
> +
> +# Maximum number of attributes for a class (see R0902).
> +max-attributes=7
> +
> +# Minimum number of public methods for a class (see R0903).
> +min-public-methods=2
> +
> +# Maximum number of public methods for a class (see R0904).
> +max-public-methods=20
> +
> +
> +[EXCEPTIONS]
> +
> +# Exceptions that will emit a warning when being caught. Defaults to
> +# "Exception"
> +overgeneral-exceptions=Exception
> diff --git a/bin/pylint b/bin/pylint
> new file mode 100755
> index 0000000..1a50609
> --- /dev/null
> +++ b/bin/pylint
> @@ -0,0 +1,31 @@
> +#!/usr/bin/python
> +# Copyright 1999-2015 Gentoo Foundation
> +# Distributed under the terms of the GNU General Public License v2
> +
> +"""Run pylint with the right settings."""
> +
> +from __future__ import print_function
> +
> +import os
> +import sys
> +
> +
> +def main(argv):
> +     """The main entry point"""
> +     source_root =
> os.path.dirname(os.path.dirname(os.path.realpath(__file__))) +
> +     pympath = source_root
> +     pythonpath = os.environ.get('PYTHONPATH')
> +     if pythonpath is None:
> +             pythonpath = pympath
> +     else:
> +             pythonpath = pympath + ':' + pythonpath
> +     os.environ['PYTHONPATH'] = pythonpath
> +
> +     pylintrc = os.path.join(source_root, '.pylintrc')
> +     cmd = ['pylint', '--rcfile', pylintrc]
> +     os.execvp(cmd[0], cmd + argv)
> +
> +
> +if __name__ == '__main__':
> +     main(sys.argv[1:])

it's fine with me.  I had been avoiding trying to run pylint on the
code because it was SO BAD.  I was waiting till more of it had been
gutted.

-- 
Brian Dolbec <dolsen>


Reply via email to