Ruff и Pre-commit: автоматизация проверки кода в Python
Автор: Javohir Abdullayev · · Python

Экономия времени разработчика: автоматизация качества кода
Каждый Python-разработчик сталкивается с ошибками форматирования, беспорядком в импортах или пропущенными синтаксическими недочётами при написании кода. Раньше для решения этих задач в проект приходилось устанавливать несколько отдельных инструментов: Black для форматирования, isort для сортировки импортов и Flake8 для поиска ошибок. Однако запуск каждого инструмента по отдельности отнимает время, а на крупных проектах процесс проверки заметно замедляется.
В этой статье мы рассмотрим линтер Ruff, написанный на Rust и работающий в 10–100 раз быстрее традиционных решений, а также систему Pre-commit, которая интегрирует его с Git. Эта связка повысит качество вашего проекта и сэкономит массу времени.
Что такое Ruff и почему он так популярен?
Ruff — это линтер и форматтер кода нового поколения для экосистемы Python. Его главное преимущество — молниеносная скорость. Благодаря возможностям языка Rust он способен проверять десятки тысяч строк кода за доли секунды.
Ruff в одиночку заменяет следующие инструменты:
- Flake8 и десятки его плагинов
- Форматтер Black
- Сортировщик импортов isort
- Инструмент обновления синтаксиса pyupgrade
Pre-commit: как не допустить ошибок в репозитории
Pre-commit — это менеджер хуков Git, который автоматически запускает заданные проверки каждый раз, когда разработчик выполняет команду git commit. Если в коде есть ошибки или нарушено форматирование, коммит отклоняется, а инструмент самостоятельно исправляет код. Это минимизирует ручной труд и человеческий фактор при поддержании чистоты кодовой базы в команде.
Практическое руководство: настройка Ruff и Pre-commit в проекте
Давайте рассмотрим пошаговую настройку этих инструментов с нуля в новом или уже существующем проекте.
1. Установка необходимых пакетов
Установите пакеты в ваше виртуальное окружение (virtualenv, poetry или pipenv) через терминал:
pip install ruff pre-commit2. Создание файла .pre-commit-config.yaml
Создайте файл .pre-commit-config.yaml в корневой папке проекта и добавьте следующую конфигурацию:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.4
hooks:
# Проверка ошибок и автоматическое исправление
- id: ruff
args: [--fix]
# Форматирование кода в стиле Black
- id: ruff-format
3. Добавление настроек Ruff в файл pyproject.toml
Для управления конфигурацией Ruff рекомендуется использовать файл pyproject.toml. Задайте длину строки и правила проверки в соответствии с требованиями вашего проекта:
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "UP"]
ignore = ["E501"]
Здесь E и F отвечают за синтаксические и логические ошибки, I — за порядок импортов (isort), а UP отслеживает современный синтаксис Python (pyupgrade).
4. Активация хуков
После завершения настройки активируйте хуки Git:
pre-commit installТеперь при каждом коммите изменений Ruff будет молниеносно запускаться, удалять лишние пробелы, сортировать импорты по алфавиту и находить скрытые ошибки.
Единовременная проверка всех файлов
Если вы подключили эти инструменты к существующему проекту, рекомендуется в первый раз проверить и отформатировать все файлы сразу с помощью команды:
pre-commit run --all-filesЗаключение и эффективность
Внедрение связки Ruff и Pre-commit позволяет разработчику сосредоточиться на бизнес-логике проекта, а не тратить время на споры о форматировании. Мгновенная обратная связь обеспечивает обнаружение ошибок на самых ранних этапах, что как минимум вдвое повышает продуктивность как во фриланс-проектах, так и в крупных командах.
Теги: #python #pre-commit #ruff #kod sifati #avtomatlashtirish