mirror of
https://github.com/PyCQA/flake8.git
synced 2026-03-30 02:46:52 +00:00
As per [their blog post of the 27th April](https://blog.readthedocs.com/securing-subdomains/) ‘Securing subdomains’: > Starting today, Read the Docs will start hosting projects from subdomains on the domain readthedocs.io, instead of on readthedocs.org. This change addresses some security concerns around site cookies while hosting user generated data on the same domain as our dashboard. Test Plan: Manually visited all the links I’ve modified.
97 lines
3.1 KiB
ReStructuredText
97 lines
3.1 KiB
ReStructuredText
======
|
|
Flake8
|
|
======
|
|
|
|
Flake8 is a wrapper around these tools:
|
|
|
|
- PyFlakes
|
|
- pep8
|
|
- Ned Batchelder's McCabe script
|
|
|
|
Flake8 runs all the tools by launching the single ``flake8`` script.
|
|
It displays the warnings in a per-file, merged output.
|
|
|
|
It also adds a few features:
|
|
|
|
- files that contain this line are skipped::
|
|
|
|
# flake8: noqa
|
|
|
|
- lines that contain a ``# noqa`` comment at the end will not issue warnings.
|
|
- a Git and a Mercurial hook.
|
|
- a McCabe complexity checker.
|
|
- extendable through ``flake8.extension`` entry points.
|
|
|
|
|
|
QuickStart
|
|
==========
|
|
|
|
::
|
|
|
|
pip install flake8
|
|
|
|
To run flake8 just invoke it against any directory or Python module::
|
|
|
|
$ flake8 coolproject
|
|
coolproject/mod.py:97:1: F401 'shutil' imported but unused
|
|
coolproject/mod.py:625:17: E225 missing whitespace around operato
|
|
coolproject/mod.py:729:1: F811 redefinition of function 'readlines' from line 723
|
|
coolproject/mod.py:1028:1: F841 local variable 'errors' is assigned to but never used
|
|
|
|
The outputs of PyFlakes *and* pep8 (and the optional plugins) are merged
|
|
and returned.
|
|
|
|
flake8 offers an extra option: --max-complexity, which will emit a warning if
|
|
the McCabe complexity of a function is higher than the value. By default it's
|
|
deactivated::
|
|
|
|
$ flake8 --max-complexity 12 coolproject
|
|
coolproject/mod.py:97:1: F401 'shutil' imported but unused
|
|
coolproject/mod.py:625:17: E225 missing whitespace around operator
|
|
coolproject/mod.py:729:1: F811 redefinition of unused 'readlines' from line 723
|
|
coolproject/mod.py:939:1: C901 'Checker.check_all' is too complex (12)
|
|
coolproject/mod.py:1028:1: F841 local variable 'errors' is assigned to but never used
|
|
coolproject/mod.py:1204:1: C901 'selftest' is too complex (14)
|
|
|
|
This feature is quite useful to detect over-complex code. According to McCabe,
|
|
anything that goes beyond 10 is too complex.
|
|
See https://en.wikipedia.org/wiki/Cyclomatic_complexity.
|
|
|
|
|
|
Frequently Asked Questions
|
|
==========================
|
|
|
|
Why does flake8 pin the version of pep8?
|
|
----------------------------------------
|
|
|
|
Version 1.6 of pep8 doesn't work properly with flake8. Until pep8 releases a
|
|
version that works, flake8 pins the version of pep8 so that flake8 will work as
|
|
a whole.
|
|
|
|
Is flake8 broken?
|
|
-----------------
|
|
|
|
Flake8 combines two other projects that are significant on their own: pep8 and
|
|
PyFlakes. If flake8 is doing something you don't like, it is quite likely that
|
|
the problem lies in one of those other projects. You can run them separately
|
|
to see if they are the cause of your difficulties. We greatly appreciate your
|
|
efforts to diagnose the source of the problem before reporting bugs against
|
|
flake8.
|
|
|
|
|
|
Questions or Feedback
|
|
=====================
|
|
|
|
If you have questions you'd like to ask the developers, or feedback you'd like
|
|
to provide, feel free to use the mailing list: code-quality@python.org We
|
|
would love to hear from you. Additionally, if you have a feature you'd like to
|
|
suggest, the mailing list would be the best place for it.
|
|
|
|
.. _links:
|
|
|
|
Links
|
|
=====
|
|
|
|
* `flake8 documentation <https://flake8.readthedocs.io/en/latest/>`_
|
|
|
|
* `pep8 documentation <https://pep8.readthedocs.io/en/latest/>`_
|