Заменяем pylint на ruff

0
(0)

Есть отличный инструмент для линтига python проектов, который по скорости своей работы превосходит любые другие аналоги. Проект называется ruff, поддерживает pyproject.toml, умеет автоматически делать фиксы в коде и многое другое.

Рассмотрим основные моменты его использования.

Как обычно, берем наш тестовый python проект.

Устанавливаем ruff:

Bash
pip3 install ruff

Добавляем следующие параметры в pyproject.toml:

TOML
[tool.ruff]
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "venv",
]
line-length = 88
indent-width = 4

[tool.ruff.lint]
select = ["E", "W", "C", "F", "N", "D"]
ignore = []

# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []

Параметры интуитивно понятны, но самое интересное тут, это select = [«E», «W», «C», «F», «N», «D»].

Дело в том, что ruff дает нам возможность включать линтер по группа правил. Все группы описаны тут. Можно выбирать как все из группы «E», так например и только те правила, которые начинаются к примеру с 4, то есть «Е4».

Давайте сравним скорость работы с pyliint

Почти 1.7 секунды.

Запустим ruff:

TOML
ruff check src

Кофигурация для ruff будет автоматически взята из pyproject.toml.

0.015 секунд.

Представьте сколько времени можно сэкономите на линтинге больших проектов.

Давайте проверим, что сможет пофиксить за нас ruff. Я специально добавлю в файл cli.py строку:

Python
import os

Это будет не используемый import и запущу туже команду, но с ключом —fix

Bash
ruff check --fix src

Видим вывод об одной исправленной ошибке. Конечно ruff не может написать за нас «docstring» для класса или метода, но убрать не используемый импорт, вполне может. Лишняя строка действительно была автоматически удалена из файла.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий