fune/docs/code-quality/lint/linters/ruff.rst
Andrew Halberstadt 8a4d48a70d Bug 1811850 - [lint] Replace flake8 linter with ruff, r=linter-reviewers,sylvestre
Ruff is a very fast linter implemented in Rust and it can act as a drop-in
replacement for flake8. When running the same set of rules across all files
in mozilla-central (without mozlint), flake8 takes 900 seconds whereas ruff
takes 0.9 seconds.

Ruff also implements rules from other popular Python linters such as pylint,
isort and pyupgrade. There are even plans to implement feature parity with
black in the future. Ultimately, it can become our one stop shop for all Python
linting and formatting.

This stack will swap out all our Python lint tools for ruff (excluding black
for now).

Differential Revision: https://phabricator.services.mozilla.com/D172313
2023-03-17 01:53:58 +00:00

44 lines
1.3 KiB
ReStructuredText

Ruff
====
`Ruff <https://github.com/charliermarsh/ruff>`_ is an extremely fast Python
linter and formatter, written in Rust. It can process all of mozilla-central in
under a second, and implements rule sets from a large array of Python linters
and formatters, including:
* flake8 (pycodestyle, pyflakes and mccabe)
* isort
* pylint
* pyupgrade
* and many many more!
Run Locally
-----------
The mozlint integration of ruff can be run using mach:
.. parsed-literal::
$ mach lint --linter ruff <file paths>
Configuration
-------------
Ruff is configured in the root `pyproject.toml`_ file. Additionally, ruff will
pick up any ``pyproject.toml`` or ``ruff.toml`` files in subdirectories. The
settings in these files will only apply to files contained within these
subdirs. For more details on configuration discovery, see the `configuration
documentation`_.
For a list of options, see the `settings documentation`_.
Sources
-------
* `Configuration (YAML) <https://searchfox.org/mozilla-central/source/tools/lint/ruff.yml>`_
* `Source <https://searchfox.org/mozilla-central/source/tools/lint/python/ruff.py>`_
.. _pyproject.toml: https://searchfox.org/mozilla-central/source/pyproject.toml
.. _configuration documentation: https://beta.ruff.rs/docs/configuration/
.. _settings documentation: https://beta.ruff.rs/docs/settings/