mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-08 14:04:16 +00:00
Merge branch 'bug/333' into 'master'
Add documentation for using --select and --ignore seperately and together See merge request !188
This commit is contained in:
commit
68c6577564
4 changed files with 436 additions and 91 deletions
|
|
@ -1,90 +0,0 @@
|
||||||
=============================
|
|
||||||
Ignoring Errors with Flake8
|
|
||||||
=============================
|
|
||||||
|
|
||||||
By default, |Flake8| has a list of error codes that it ignores. The list used
|
|
||||||
by a version of |Flake8| may be different than the list used by a different
|
|
||||||
version. To see the default list, :option:`flake8 --help` will
|
|
||||||
show the output with the current default list.
|
|
||||||
|
|
||||||
|
|
||||||
Changing the Ignore List
|
|
||||||
========================
|
|
||||||
|
|
||||||
If we want to change the list of ignored codes for a single run, we can use
|
|
||||||
:option:`flake8 --ignore` to specify a comma-separated list of codes for a
|
|
||||||
specific run on the command-line, e.g.,
|
|
||||||
|
|
||||||
.. prompt:: bash
|
|
||||||
|
|
||||||
flake8 --ignore=E1,E23,W503 path/to/files/ path/to/more/files/
|
|
||||||
|
|
||||||
This tells |Flake8| to ignore any error codes starting with ``E1``, ``E23``,
|
|
||||||
or ``W503`` while it is running.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
The documentation for :option:`flake8 --ignore` shows examples for how
|
|
||||||
to change the ignore list in the configuration file. See also
|
|
||||||
:ref:`configuration` as well for details about how to use configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
|
|
||||||
In-line Ignoring Errors
|
|
||||||
=======================
|
|
||||||
|
|
||||||
In some cases, we might not want to ignore an error code (or class of error
|
|
||||||
codes) for the entirety of our project. Instead, we might want to ignore the
|
|
||||||
specific error code on a specific line. Let's take for example a line like
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
example = lambda: 'example'
|
|
||||||
|
|
||||||
Sometimes we genuinely need something this simple. We could instead define
|
|
||||||
a function like we normally would. Note, in some contexts this distracts from
|
|
||||||
what is actually happening. In those cases, we can also do:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
example = lambda: 'example' # noqa: E731
|
|
||||||
|
|
||||||
This will only ignore the error from pycodestyle that checks for lambda
|
|
||||||
assignments and generates an ``E731``. If there are other errors on the line
|
|
||||||
then those will be reported.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
If we ever want to disable |Flake8| respecting ``# noqa`` comments, we can
|
|
||||||
can refer to :option:`flake8 --disable-noqa`.
|
|
||||||
|
|
||||||
If we instead had more than one error that we wished to ignore, we could
|
|
||||||
list all of the errors with commas separating them:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
# noqa: E731,E123
|
|
||||||
|
|
||||||
Finally, if we have a particularly bad line of code, we can ignore every error
|
|
||||||
using simply ``# noqa`` with nothing after it.
|
|
||||||
|
|
||||||
|
|
||||||
Ignoring Entire Files
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Imagine a situation where we are adding |Flake8| to a codebase. Let's further
|
|
||||||
imagine that with the exception of a few particularly bad files, we can add
|
|
||||||
|Flake8| easily and move on with our lives. There are two ways to ignore the
|
|
||||||
file:
|
|
||||||
|
|
||||||
#. By explicitly adding it to our list of excluded paths (see: :option:`flake8
|
|
||||||
--exclude`)
|
|
||||||
|
|
||||||
#. By adding ``# flake8: noqa`` to the file
|
|
||||||
|
|
||||||
The former is the **recommended** way of ignoring entire files. By using our
|
|
||||||
exclude list, we can include it in our configuration file and have one central
|
|
||||||
place to find what files aren't included in |Flake8| checks. The latter has the
|
|
||||||
benefit that when we run |Flake8| with :option:`flake8 --disable-noqa` all of
|
|
||||||
the errors in that file will show up without having to modify our
|
|
||||||
configuration. Both exist so we can choose which is better for us.
|
|
||||||
|
|
@ -24,7 +24,7 @@ This guide will cover all of these and the nuances for using |Flake8|.
|
||||||
configuration
|
configuration
|
||||||
options
|
options
|
||||||
error-codes
|
error-codes
|
||||||
ignoring-errors
|
violations
|
||||||
using-plugins
|
using-plugins
|
||||||
using-hooks
|
using-hooks
|
||||||
python-api
|
python-api
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
.. option:: --<opt-name>[=<descriptive-name-of-parameter>]
|
.. option:: --<opt-name>[=<descriptive-name-of-parameter>]
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Active description of option's purpose (note that each description
|
Active description of option's purpose (note that each description
|
||||||
starts with an active verb)
|
starts with an active verb)
|
||||||
|
|
||||||
|
|
@ -25,10 +27,87 @@
|
||||||
|
|
||||||
Thank you for your contribution to Flake8's documentation.
|
Thank you for your contribution to Flake8's documentation.
|
||||||
|
|
||||||
|
.. _top:
|
||||||
|
|
||||||
|
Index of Options
|
||||||
|
================
|
||||||
|
|
||||||
|
- :option:`flake8 --version`
|
||||||
|
|
||||||
|
- :option:`flake8 --help`
|
||||||
|
|
||||||
|
- :option:`flake8 --verbose`
|
||||||
|
|
||||||
|
- :option:`flake8 --quiet`
|
||||||
|
|
||||||
|
- :option:`flake8 --count`
|
||||||
|
|
||||||
|
- :option:`flake8 --diff`
|
||||||
|
|
||||||
|
- :option:`flake8 --exclude`
|
||||||
|
|
||||||
|
- :option:`flake8 --filename`
|
||||||
|
|
||||||
|
- :option:`flake8 --stdin-display-name`
|
||||||
|
|
||||||
|
- :option:`flake8 --format`
|
||||||
|
|
||||||
|
- :option:`flake8 --hang-closing`
|
||||||
|
|
||||||
|
- :option:`flake8 --ignore`
|
||||||
|
|
||||||
|
- :option:`flake8 --max-line-length`
|
||||||
|
|
||||||
|
- :option:`flake8 --select`
|
||||||
|
|
||||||
|
- :option:`flake8 --disable-noqa`
|
||||||
|
|
||||||
|
- :option:`flake8 --show-source`
|
||||||
|
|
||||||
|
- :option:`flake8 --statistics`
|
||||||
|
|
||||||
|
- :option:`flake8 --enable-extensions`
|
||||||
|
|
||||||
|
- :option:`flake8 --exit-zero`
|
||||||
|
|
||||||
|
- :option:`flake8 --install-hook`
|
||||||
|
|
||||||
|
- :option:`flake8 --jobs`
|
||||||
|
|
||||||
|
- :option:`flake8 --output-file`
|
||||||
|
|
||||||
|
- :option:`flake8 --tee`
|
||||||
|
|
||||||
|
- :option:`flake8 --append-config`
|
||||||
|
|
||||||
|
- :option:`flake8 --config`
|
||||||
|
|
||||||
|
- :option:`flake8 --isolated`
|
||||||
|
|
||||||
|
- :option:`flake8 --builtins`
|
||||||
|
|
||||||
|
- :option:`flake8 --doctests`
|
||||||
|
|
||||||
|
- :option:`flake8 --include-in-doctest`
|
||||||
|
|
||||||
|
- :option:`flake8 --exclude-from-doctest`
|
||||||
|
|
||||||
|
- :option:`flake8 --benchmark`
|
||||||
|
|
||||||
|
- :option:`flake8 --bug-report`
|
||||||
|
|
||||||
|
- :option:`flake8 --max-complexity`
|
||||||
|
|
||||||
|
|
||||||
|
Options and their Descriptions
|
||||||
|
==============================
|
||||||
|
|
||||||
.. program:: flake8
|
.. program:: flake8
|
||||||
|
|
||||||
.. option:: --version
|
.. option:: --version
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Show |Flake8|'s version as well as the versions of all plugins
|
Show |Flake8|'s version as well as the versions of all plugins
|
||||||
installed.
|
installed.
|
||||||
|
|
||||||
|
|
@ -43,6 +122,8 @@
|
||||||
|
|
||||||
.. option:: -h, --help
|
.. option:: -h, --help
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Show a description of how to use |Flake8| and its options.
|
Show a description of how to use |Flake8| and its options.
|
||||||
|
|
||||||
Command-line usage:
|
Command-line usage:
|
||||||
|
|
@ -57,6 +138,8 @@
|
||||||
|
|
||||||
.. option:: -v, --verbose
|
.. option:: -v, --verbose
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Increase the verbosity of |Flake8|'s output. Each time you specify
|
Increase the verbosity of |Flake8|'s output. Each time you specify
|
||||||
it, it will print more and more information.
|
it, it will print more and more information.
|
||||||
|
|
||||||
|
|
@ -77,6 +160,8 @@
|
||||||
|
|
||||||
.. option:: -q, --quiet
|
.. option:: -q, --quiet
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Decrease the verbosity of |Flake8|'s output. Each time you specify it,
|
Decrease the verbosity of |Flake8|'s output. Each time you specify it,
|
||||||
it will print less and less information.
|
it will print less and less information.
|
||||||
|
|
||||||
|
|
@ -97,6 +182,8 @@
|
||||||
|
|
||||||
.. option:: --count
|
.. option:: --count
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Print the total number of errors.
|
Print the total number of errors.
|
||||||
|
|
||||||
Command-line example:
|
Command-line example:
|
||||||
|
|
@ -116,6 +203,8 @@
|
||||||
|
|
||||||
.. option:: --diff
|
.. option:: --diff
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Use the unified diff provided on standard in to only check the modified
|
Use the unified diff provided on standard in to only check the modified
|
||||||
files and report errors included in the diff.
|
files and report errors included in the diff.
|
||||||
|
|
||||||
|
|
@ -130,6 +219,8 @@
|
||||||
|
|
||||||
.. option:: --exclude=<patterns>
|
.. option:: --exclude=<patterns>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Provide a comma-separated list of glob patterns to exclude from checks.
|
Provide a comma-separated list of glob patterns to exclude from checks.
|
||||||
|
|
||||||
This defaults to: ``.svn,CVS,.bzr,.hg,.git,__pycache__,.tox``
|
This defaults to: ``.svn,CVS,.bzr,.hg,.git,__pycache__,.tox``
|
||||||
|
|
@ -162,6 +253,8 @@
|
||||||
|
|
||||||
.. option:: --filename=<patterns>
|
.. option:: --filename=<patterns>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Provide a comma-separate list of glob patterns to include for checks.
|
Provide a comma-separate list of glob patterns to include for checks.
|
||||||
|
|
||||||
This defaults to: ``*.py``
|
This defaults to: ``*.py``
|
||||||
|
|
@ -194,6 +287,8 @@
|
||||||
|
|
||||||
.. option:: --stdin-display-name=<display_name>
|
.. option:: --stdin-display-name=<display_name>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Provide the name to use to report warnings and errors from code on stdin.
|
Provide the name to use to report warnings and errors from code on stdin.
|
||||||
|
|
||||||
Instead of reporting an error as something like:
|
Instead of reporting an error as something like:
|
||||||
|
|
@ -218,6 +313,8 @@
|
||||||
|
|
||||||
.. option:: --format=<format>
|
.. option:: --format=<format>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Select the formatter used to display errors to the user.
|
Select the formatter used to display errors to the user.
|
||||||
|
|
||||||
This defaults to: ``default``
|
This defaults to: ``default``
|
||||||
|
|
@ -262,6 +359,8 @@
|
||||||
|
|
||||||
.. option:: --hang-closing
|
.. option:: --hang-closing
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Toggle whether pycodestyle should enforce matching the indentation of the
|
Toggle whether pycodestyle should enforce matching the indentation of the
|
||||||
opening bracket's line. When you specify this, it will prefer that you
|
opening bracket's line. When you specify this, it will prefer that you
|
||||||
hang the closing bracket rather than match the indentation.
|
hang the closing bracket rather than match the indentation.
|
||||||
|
|
@ -284,6 +383,8 @@
|
||||||
|
|
||||||
.. option:: --ignore=<errors>
|
.. option:: --ignore=<errors>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Specify a list of codes to ignore. The list is expected to be
|
Specify a list of codes to ignore. The list is expected to be
|
||||||
comma-separated, and does not need to specify an error code exactly.
|
comma-separated, and does not need to specify an error code exactly.
|
||||||
Since |Flake8| 3.0, this **can** be combined with :option:`--select`. See
|
Since |Flake8| 3.0, this **can** be combined with :option:`--select`. See
|
||||||
|
|
@ -317,6 +418,8 @@
|
||||||
|
|
||||||
.. option:: --max-line-length=<n>
|
.. option:: --max-line-length=<n>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Set the maximum length that any line (with some exceptions) may be.
|
Set the maximum length that any line (with some exceptions) may be.
|
||||||
|
|
||||||
Exceptions include lines that are either strings or comments which are
|
Exceptions include lines that are either strings or comments which are
|
||||||
|
|
@ -349,6 +452,8 @@
|
||||||
|
|
||||||
.. option:: --select=<errors>
|
.. option:: --select=<errors>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Specify the list of error codes you wish |Flake8| to report. Similarly to
|
Specify the list of error codes you wish |Flake8| to report. Similarly to
|
||||||
:option:`--ignore`. You can specify a portion of an error code to get all
|
:option:`--ignore`. You can specify a portion of an error code to get all
|
||||||
that start with that string. For example, you can use ``E``, ``E4``,
|
that start with that string. For example, you can use ``E``, ``E4``,
|
||||||
|
|
@ -387,6 +492,8 @@
|
||||||
|
|
||||||
.. option:: --disable-noqa
|
.. option:: --disable-noqa
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Report all errors, even if it is on the same line as a ``# NOQA`` comment.
|
Report all errors, even if it is on the same line as a ``# NOQA`` comment.
|
||||||
``# NOQA`` can be used to silence messages on specific lines. Sometimes,
|
``# NOQA`` can be used to silence messages on specific lines. Sometimes,
|
||||||
users will want to see what errors are being silenced without editing the
|
users will want to see what errors are being silenced without editing the
|
||||||
|
|
@ -411,6 +518,8 @@
|
||||||
|
|
||||||
.. option:: --show-source
|
.. option:: --show-source
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Print the source code generating the error/warning in question.
|
Print the source code generating the error/warning in question.
|
||||||
|
|
||||||
Command-line example:
|
Command-line example:
|
||||||
|
|
@ -431,6 +540,8 @@
|
||||||
|
|
||||||
.. option:: --statistics
|
.. option:: --statistics
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Count the number of occurrences of each error/warning code and
|
Count the number of occurrences of each error/warning code and
|
||||||
print a report.
|
print a report.
|
||||||
|
|
||||||
|
|
@ -451,6 +562,8 @@
|
||||||
|
|
||||||
.. option:: --enable-extensions=<errors>
|
.. option:: --enable-extensions=<errors>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Enable off-by-default extensions.
|
Enable off-by-default extensions.
|
||||||
|
|
||||||
Plugins to |Flake8| have the option of registering themselves as
|
Plugins to |Flake8| have the option of registering themselves as
|
||||||
|
|
@ -479,6 +592,8 @@
|
||||||
|
|
||||||
.. option:: --exit-zero
|
.. option:: --exit-zero
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Force |Flake8| to use the exit status code 0 even if there are errors.
|
Force |Flake8| to use the exit status code 0 even if there are errors.
|
||||||
|
|
||||||
By default |Flake8| will exit with a non-zero integer if there are errors.
|
By default |Flake8| will exit with a non-zero integer if there are errors.
|
||||||
|
|
@ -494,6 +609,8 @@
|
||||||
|
|
||||||
.. option:: --install-hook=VERSION_CONTROL_SYSTEM
|
.. option:: --install-hook=VERSION_CONTROL_SYSTEM
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Install a hook for your version control system that is executed before
|
Install a hook for your version control system that is executed before
|
||||||
or during commit.
|
or during commit.
|
||||||
|
|
||||||
|
|
@ -514,6 +631,8 @@
|
||||||
|
|
||||||
.. option:: --jobs=<n>
|
.. option:: --jobs=<n>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Specify the number of subprocesses that |Flake8| will use to run checks in
|
Specify the number of subprocesses that |Flake8| will use to run checks in
|
||||||
parallel.
|
parallel.
|
||||||
|
|
||||||
|
|
@ -544,6 +663,8 @@
|
||||||
|
|
||||||
.. option:: --output-file=<path>
|
.. option:: --output-file=<path>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Redirect all output to the specified file.
|
Redirect all output to the specified file.
|
||||||
|
|
||||||
Command-line example:
|
Command-line example:
|
||||||
|
|
@ -565,6 +686,8 @@
|
||||||
|
|
||||||
.. option:: --tee
|
.. option:: --tee
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Also print output to stdout if output-file has been configured.
|
Also print output to stdout if output-file has been configured.
|
||||||
|
|
||||||
Command-line example:
|
Command-line example:
|
||||||
|
|
@ -585,6 +708,8 @@
|
||||||
|
|
||||||
.. option:: --append-config=<config>
|
.. option:: --append-config=<config>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Provide extra config files to parse in after and in addition to the files
|
Provide extra config files to parse in after and in addition to the files
|
||||||
that |Flake8| found on its own. Since these files are the last ones read
|
that |Flake8| found on its own. Since these files are the last ones read
|
||||||
into the Configuration Parser, so it has the highest precedence if it
|
into the Configuration Parser, so it has the highest precedence if it
|
||||||
|
|
@ -601,6 +726,8 @@
|
||||||
|
|
||||||
.. option:: --config=<config>
|
.. option:: --config=<config>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Provide a path to a config file that will be the only config file read and
|
Provide a path to a config file that will be the only config file read and
|
||||||
used. This will cause |Flake8| to ignore all other config files that
|
used. This will cause |Flake8| to ignore all other config files that
|
||||||
exist.
|
exist.
|
||||||
|
|
@ -616,6 +743,8 @@
|
||||||
|
|
||||||
.. option:: --isolated
|
.. option:: --isolated
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Ignore any config files and use |Flake8| as if there were no config files
|
Ignore any config files and use |Flake8| as if there were no config files
|
||||||
found.
|
found.
|
||||||
|
|
||||||
|
|
@ -630,6 +759,8 @@
|
||||||
|
|
||||||
.. option:: --builtins=<builtins>
|
.. option:: --builtins=<builtins>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Provide a custom list of builtin functions, objects, names, etc.
|
Provide a custom list of builtin functions, objects, names, etc.
|
||||||
|
|
||||||
This allows you to let pyflakes know about builtins that it may
|
This allows you to let pyflakes know about builtins that it may
|
||||||
|
|
@ -658,6 +789,8 @@
|
||||||
|
|
||||||
.. option:: --doctests
|
.. option:: --doctests
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Enable PyFlakes syntax checking of doctests in docstrings.
|
Enable PyFlakes syntax checking of doctests in docstrings.
|
||||||
|
|
||||||
This is registered by the default PyFlakes plugin.
|
This is registered by the default PyFlakes plugin.
|
||||||
|
|
@ -679,6 +812,8 @@
|
||||||
|
|
||||||
.. option:: --include-in-doctest=<paths>
|
.. option:: --include-in-doctest=<paths>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Specify which files are checked by PyFlakes for doctest syntax.
|
Specify which files are checked by PyFlakes for doctest syntax.
|
||||||
|
|
||||||
This is registered by the default PyFlakes plugin.
|
This is registered by the default PyFlakes plugin.
|
||||||
|
|
@ -705,6 +840,8 @@
|
||||||
|
|
||||||
.. option:: --exclude-from-doctest=<paths>
|
.. option:: --exclude-from-doctest=<paths>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Specify which files are not to be checked by PyFlakes for doctest syntax.
|
Specify which files are not to be checked by PyFlakes for doctest syntax.
|
||||||
|
|
||||||
This is registered by the default PyFlakes plugin.
|
This is registered by the default PyFlakes plugin.
|
||||||
|
|
@ -731,6 +868,8 @@
|
||||||
|
|
||||||
.. option:: --benchmark
|
.. option:: --benchmark
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Collect and print benchmarks for this run of |Flake8|. This aggregates the
|
Collect and print benchmarks for this run of |Flake8|. This aggregates the
|
||||||
total number of:
|
total number of:
|
||||||
|
|
||||||
|
|
@ -752,6 +891,8 @@
|
||||||
|
|
||||||
.. option:: --bug-report
|
.. option:: --bug-report
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
Generate information necessary to file a complete bug report for Flake8.
|
Generate information necessary to file a complete bug report for Flake8.
|
||||||
This will pretty-print a JSON blob that should be copied and pasted into a
|
This will pretty-print a JSON blob that should be copied and pasted into a
|
||||||
bug report for Flake8.
|
bug report for Flake8.
|
||||||
|
|
@ -796,3 +937,26 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
This **can not** be specified in config files.
|
This **can not** be specified in config files.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: --max-complexity=<n>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
|
Set the maximum allowed McCabe complexity value for a block of code.
|
||||||
|
|
||||||
|
This option is provided by the ``mccabe`` dependency's |Flake8| plugin.
|
||||||
|
|
||||||
|
Command-line usage:
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --max-complexity 15 dir/
|
||||||
|
|
||||||
|
This **can** be specified in config files.
|
||||||
|
|
||||||
|
Example config file usage:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
max-complexity = 15
|
||||||
|
|
|
||||||
271
docs/source/user/violations.rst
Normal file
271
docs/source/user/violations.rst
Normal file
|
|
@ -0,0 +1,271 @@
|
||||||
|
===================================
|
||||||
|
Selecting and Ignoring Violations
|
||||||
|
===================================
|
||||||
|
|
||||||
|
It is possible to select and ignore certain violations reported by |Flake8|
|
||||||
|
and the plugins we've installed. It's also possible as of |Flake8| 3.0 to
|
||||||
|
combine usage of :option:`flake8 --select` and :option:`flake8 --ignore`. This
|
||||||
|
chapter of the User Guide aims to educate about how Flake8 will report errors
|
||||||
|
based on different inputs.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Ignoring Violations with Flake8
|
||||||
|
===============================
|
||||||
|
|
||||||
|
By default, |Flake8| has a list of error codes that it ignores. The list used
|
||||||
|
by a version of |Flake8| may be different than the list used by a different
|
||||||
|
version. To see the default list, :option:`flake8 --help` will
|
||||||
|
show the output with the current default list.
|
||||||
|
|
||||||
|
|
||||||
|
Changing the Ignore List
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
If we want to change the list of ignored codes for a single run, we can use
|
||||||
|
:option:`flake8 --ignore` to specify a comma-separated list of codes for a
|
||||||
|
specific run on the command-line, e.g.,
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --ignore=E1,E23,W503 path/to/files/ path/to/more/files/
|
||||||
|
|
||||||
|
This tells |Flake8| to ignore any error codes starting with ``E1``, ``E23``,
|
||||||
|
or ``W503`` while it is running.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The documentation for :option:`flake8 --ignore` shows examples for how
|
||||||
|
to change the ignore list in the configuration file. See also
|
||||||
|
:ref:`configuration` as well for details about how to use configuration
|
||||||
|
files.
|
||||||
|
|
||||||
|
|
||||||
|
In-line Ignoring Errors
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
In some cases, we might not want to ignore an error code (or class of error
|
||||||
|
codes) for the entirety of our project. Instead, we might want to ignore the
|
||||||
|
specific error code on a specific line. Let's take for example a line like
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
example = lambda: 'example'
|
||||||
|
|
||||||
|
Sometimes we genuinely need something this simple. We could instead define
|
||||||
|
a function like we normally would. Note, in some contexts this distracts from
|
||||||
|
what is actually happening. In those cases, we can also do:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
example = lambda: 'example' # noqa: E731
|
||||||
|
|
||||||
|
This will only ignore the error from pycodestyle that checks for lambda
|
||||||
|
assignments and generates an ``E731``. If there are other errors on the line
|
||||||
|
then those will be reported.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If we ever want to disable |Flake8| respecting ``# noqa`` comments, we can
|
||||||
|
can refer to :option:`flake8 --disable-noqa`.
|
||||||
|
|
||||||
|
If we instead had more than one error that we wished to ignore, we could
|
||||||
|
list all of the errors with commas separating them:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# noqa: E731,E123
|
||||||
|
|
||||||
|
Finally, if we have a particularly bad line of code, we can ignore every error
|
||||||
|
using simply ``# noqa`` with nothing after it.
|
||||||
|
|
||||||
|
|
||||||
|
Ignoring Entire Files
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Imagine a situation where we are adding |Flake8| to a codebase. Let's further
|
||||||
|
imagine that with the exception of a few particularly bad files, we can add
|
||||||
|
|Flake8| easily and move on with our lives. There are two ways to ignore the
|
||||||
|
file:
|
||||||
|
|
||||||
|
#. By explicitly adding it to our list of excluded paths (see: :option:`flake8
|
||||||
|
--exclude`)
|
||||||
|
|
||||||
|
#. By adding ``# flake8: noqa`` to the file
|
||||||
|
|
||||||
|
The former is the **recommended** way of ignoring entire files. By using our
|
||||||
|
exclude list, we can include it in our configuration file and have one central
|
||||||
|
place to find what files aren't included in |Flake8| checks. The latter has the
|
||||||
|
benefit that when we run |Flake8| with :option:`flake8 --disable-noqa` all of
|
||||||
|
the errors in that file will show up without having to modify our
|
||||||
|
configuration. Both exist so we can choose which is better for us.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Selecting Violations with Flake8
|
||||||
|
================================
|
||||||
|
|
||||||
|
|Flake8| has a default list of violation classes that we use. This list is:
|
||||||
|
|
||||||
|
- ``C90``
|
||||||
|
|
||||||
|
All ``C90`` class violations are reported when the user specifies
|
||||||
|
:option:`flake8 --max-complexity`
|
||||||
|
|
||||||
|
- ``E``
|
||||||
|
|
||||||
|
All ``E`` class violations are "errors" reported by pycodestyle
|
||||||
|
|
||||||
|
- ``F``
|
||||||
|
|
||||||
|
All ``F`` class violations are reported by pyflakes
|
||||||
|
|
||||||
|
- ``W``
|
||||||
|
|
||||||
|
All ``W`` class violations are "warnings" reported by pycodestyle
|
||||||
|
|
||||||
|
This list can be overridden by specifying :option:`flake8 --select`. Just as
|
||||||
|
specifying :option:`flake8 --ignore` will change the behaviour of |Flake8|, so
|
||||||
|
will :option:`flake8 --select`.
|
||||||
|
|
||||||
|
Let's look through some examples using this sample code:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# example.py
|
||||||
|
def foo():
|
||||||
|
print(
|
||||||
|
"Hello"
|
||||||
|
"World"
|
||||||
|
)
|
||||||
|
|
||||||
|
By default, if we run ``flake8`` on this file we'll get:
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:4:9: E131 continuation line unaligned for hanging indent
|
||||||
|
|
||||||
|
Now let's select all ``E`` class violations:
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --select E example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:3:17: E126 continuation line over-indented for hanging indent
|
||||||
|
example.py:4:9: E131 continuation line unaligned for hanging indent
|
||||||
|
example.py:5:9: E121 continuation line under-indented for hanging indent
|
||||||
|
|
||||||
|
Suddenly we now have far more erors that are reported to us. Using
|
||||||
|
``--select`` alone will override the default ``--ignore`` list. In these cases,
|
||||||
|
the user is telling us that they want all ``E`` violations and so we ignore
|
||||||
|
our list of violations that we ignore by default.
|
||||||
|
|
||||||
|
We can also be highly specific. For example, we can do
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --select E121 example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:5:9: E121 continuation line under-indented for hanging indent
|
||||||
|
|
||||||
|
We can also specify lists of items to select both on the command-line and in
|
||||||
|
our configuration files.
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --select E121,E131 example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:4:9: E131 continuation line unaligned for hanging indent
|
||||||
|
example.py:5:9: E121 continuation line under-indented for hanging indent
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Selecting and Ignoring Simultaneously For Fun and Profit
|
||||||
|
========================================================
|
||||||
|
|
||||||
|
Prior to |Flake8| 3.0, all handling of :option:`flake8 --select` and
|
||||||
|
:option:`flake8 --ignore` was delegated to pycodestyle. It's handling of the
|
||||||
|
options significantly differs from how |Flake8| 3.0 has been designed.
|
||||||
|
|
||||||
|
pycodestyle has always preferred ``--ignore`` over ``--select`` and will
|
||||||
|
ignore ``--select`` if the user provides both. |Flake8| 3.0 will now do its
|
||||||
|
best to intuitively combine both options provided by the user. Let's look at
|
||||||
|
some examples using:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# example.py
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def foo():
|
||||||
|
var = 1
|
||||||
|
print(
|
||||||
|
"Hello"
|
||||||
|
"World"
|
||||||
|
)
|
||||||
|
|
||||||
|
If we run |Flake8| with its default settings we get:
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:1:1: F401 'os' imported but unused
|
||||||
|
example.py:5:5: F841 local variable 'var' is assigned to but never used
|
||||||
|
example.py:8:9: E131 continuation line unaligned for hanging indent
|
||||||
|
|
||||||
|
Now let's select all ``E`` and ``F`` violations including those in the default
|
||||||
|
ignore list.
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --select E,F example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:1:1: F401 'os' imported but unused
|
||||||
|
example.py:5:5: F841 local variable 'var' is assigned to but never used
|
||||||
|
example.py:7:17: E126 continuation line over-indented for hanging indent
|
||||||
|
example.py:8:9: E131 continuation line unaligned for hanging indent
|
||||||
|
example.py:9:9: E121 continuation line under-indented for hanging indent
|
||||||
|
|
||||||
|
Now let's selectively ignore some of these while selecting the rest:
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --select E,F --ignore F401,E121 example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:5:5: F841 local variable 'var' is assigned to but never used
|
||||||
|
example.py:7:17: E126 continuation line over-indented for hanging indent
|
||||||
|
example.py:8:9: E131 continuation line unaligned for hanging indent
|
||||||
|
|
||||||
|
Via this example, we can see that the *most specific* **user-specified** rule
|
||||||
|
will win. So in the above, we had very vague select rules and two very
|
||||||
|
specific ignore rules. Let's look at a different example:
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --select F401,E131 --ignore E,F example.py
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
example.py:1:1: F401 'os' imported but unused
|
||||||
|
example.py:8:9: E131 continuation line unaligned for hanging indent
|
||||||
|
|
||||||
|
In this case, we see that since our selected violation codes were more
|
||||||
|
specific those were reported.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue