Optional Pylint checkers in the extensions module
=================================================

Pylint provides the following optional plugins:

- :ref:`pylint.extensions.bad_builtin`
- :ref:`pylint.extensions.check_elif`
- :ref:`pylint.extensions.comparetozero`
- :ref:`pylint.extensions.docparams`
- :ref:`pylint.extensions.docstyle`
- :ref:`pylint.extensions.emptystring`
- :ref:`pylint.extensions.mccabe`
- :ref:`pylint.extensions.overlapping_exceptions`
- :ref:`pylint.extensions.redefined_variable_type`

You can activate any or all of these extensions by adding a ``load-plugins`` line to the ``MASTER`` section of your ``.pylintrc``, for example::

    load-plugins=pylint.extensions.docparams,pylint.extensions.docstyle

.. _pylint.extensions.bad_builtin:

Deprecated Builtins checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.bad_builtin``.
Verbatim name of the checker is ``deprecated_builtins``.

Options
^^^^^^^
:bad-functions:
  List of builtins function names that should not be used, separated by a comma

  Default: ``map,filter``

Messages
^^^^^^^^
:bad-builtin (W0141): *Used builtin function %s*
  Used when a black listed builtin function is used (see the bad-function
  option). Usual black listed functions are the ones like map, or filter , where
  Python offers now some cleaner alternative like list comprehension.


.. _pylint.extensions.check_elif:

Else If Used checker
~~~~~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.check_elif``.
Verbatim name of the checker is ``else_if_used``.

Messages
^^^^^^^^
:else-if-used (R5501): *Consider using "elif" instead of "else if"*
  Used when an else statement is immediately followed by an if statement and
  does not contain statements that would be unrelated to it.


.. _pylint.extensions.comparetozero:

Compare-To-Zero checker
~~~~~~~~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.comparetozero``.
Verbatim name of the checker is ``compare-to-zero``.

Messages
^^^^^^^^
:compare-to-zero (C2001): *Avoid comparisons to zero*
  Used when Pylint detects comparison to a 0 constant.


.. _pylint.extensions.docparams:

Parameter Documentation checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.docparams``.
Verbatim name of the checker is ``parameter_documentation``.

Options
^^^^^^^
:accept-no-param-doc:
  Whether to accept totally missing parameter documentation in the docstring of
  a function that has parameters.

  Default: ``yes``
:accept-no-raise-doc:
  Whether to accept totally missing raises documentation in the docstring of a
  function that raises an exception.

  Default: ``yes``
:accept-no-return-doc:
  Whether to accept totally missing return documentation in the docstring of a
  function that returns a statement.

  Default: ``yes``
:accept-no-yields-doc:
  Whether to accept totally missing yields documentation in the docstring of a
  generator.

  Default: ``yes``

Messages
^^^^^^^^
:differing-param-doc (W9017): *"%s" differing in parameter documentation*
  Please check parameter names in declarations.
:differing-type-doc (W9018): *"%s" differing in parameter type documentation*
  Please check parameter names in type declarations.
:multiple-constructor-doc (W9005): *"%s" has constructor parameters documented in class and __init__*
  Please remove parameter declarations in the class or constructor.
:missing-param-doc (W9015): *"%s" missing in parameter documentation*
  Please add parameter declarations for all parameters.
:missing-type-doc (W9016): *"%s" missing in parameter type documentation*
  Please add parameter type declarations for all parameters.
:missing-raises-doc (W9006): *"%s" not documented as being raised*
  Please document exceptions for all raised exception types.
:missing-return-doc (W9011): *Missing return documentation*
  Please add documentation about what this method returns.
:missing-return-type-doc (W9012): *Missing return type documentation*
  Please document the type returned by this method.
:missing-yield-doc (W9013): *Missing yield documentation*
  Please add documentation about what this generator yields.
:missing-yield-type-doc (W9014): *Missing yield type documentation*
  Please document the type yielded by this method.
:redundant-returns-doc (W9008): *Redundant returns documentation*
  Please remove the return/rtype documentation from this method.
:redundant-yields-doc (W9010): *Redundant yields documentation*
  Please remove the yields documentation from this method.


.. _pylint.extensions.docstyle:

Docstyle checker
~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.docstyle``.
Verbatim name of the checker is ``docstyle``.

Messages
^^^^^^^^
:bad-docstring-quotes (C0198): *Bad docstring quotes in %s, expected """, given %s*
  Used when a docstring does not have triple double quotes.
:docstring-first-line-empty (C0199): *First line empty in %s docstring*
  Used when a blank line is found at the beginning of a docstring.


.. _pylint.extensions.emptystring:

Compare-To-Empty-String checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.emptystring``.
Verbatim name of the checker is ``compare-to-empty-string``.

Messages
^^^^^^^^
:compare-to-empty-string (C1901): *Avoid comparisons to empty string*
  Used when Pylint detects comparison to an empty string constant.


.. _pylint.extensions.mccabe:

Design checker
~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.mccabe``.
Verbatim name of the checker is ``design``.

Options
^^^^^^^
:max-complexity:
  McCabe complexity cyclomatic threshold

  Default: ``10``

Messages
^^^^^^^^
:too-complex (R1260): *%s is too complex. The McCabe rating is %d*
  Used when a method or function is too complex based on McCabe Complexity
  Cyclomatic


.. _pylint.extensions.overlapping_exceptions:

Overlap-Except checker
~~~~~~~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.overlapping_exceptions``.
Verbatim name of the checker is ``overlap-except``.

Messages
^^^^^^^^
:overlapping-except (W0714): *Overlapping exceptions (%s)*
  Used when exceptions in handler overlap or are identical


.. _pylint.extensions.redefined_variable_type:

Multiple Types checker
~~~~~~~~~~~~~~~~~~~~~~

This checker is provided by ``pylint.extensions.redefined_variable_type``.
Verbatim name of the checker is ``multiple_types``.

Messages
^^^^^^^^
:redefined-variable-type (R0204): *Redefinition of %s type from %s to %s*
  Used when the type of a variable changes inside a method or a function.


