Ruff 0.16: набор правил по умолчанию вырос с 59 до 413
Компания Astral выпустила версию 0.16.0 своего линтера и форматтера Ruff — инструмента для Python, написанного на Rust и способного заменить целый набор привычных утилит (Black, Flake8, isort, pydocstyle, pyupgrade и другие), работая при этом в десятки и сотни раз быстрее.
Больше проверок из коробки
Главное изменение релиза — расширение набора правил, включённых по умолчанию: теперь их 413 против прежних 59. С момента, когда стандартный набор в последний раз пересматривали (версия 0.1.0), общее число правил в Ruff выросло с 708 до 968. Многие из них ловят серьёзные проблемы — вплоть до синтаксических ошибок и ошибок, которые немедленно приводят к сбою во время выполнения, — но раньше по умолчанию не работали. В новый набор вошли, среди прочего, правила популярных flake8-bugbear и pyupgrade, а также собственной категории RUF.
Авторы понимают, что не всем это по душе: тем, кто хочет вернуть прежнее поведение, достаточно указать в конфигурации select = ["E4", "E7", "E9", "F"].
Форматирование кода в Markdown
Ruff научился форматировать блоки Python-кода, встроенные в Markdown-файлы. Форматтер обрабатывает огороженные блоки с указанием языка python, py, pyi, pycon и подобными, причём pyi трактуется как файл-заглушка, а pycon — как сессия REPL. Тот же механизм работает и с блокnotebook Quarto. При необходимости форматирование можно отключить обычными комментариями fmt: off/fmt: on внутри блока или HTML-комментариями для целого фрагмента документа.
Свой формат подавления предупреждений
В дополнение к парным комментариям ruff: disable/ruff: enable из версии 0.15 появились новые директивы. Комментарий ruff: ignore подавляет диагностику на той же или на следующей логической строке (аналогично noqa), а ruff: file-ignore — во всём файле. К каждому такому комментарию можно добавить пояснение-причину. Новый флаг --add-ignore расставляет эти комментарии автоматически, а в режиме preview все директивы понимают не только коды, но и человекочитаемые имена правил.
Прочее
Вывод команд check и format --check теперь по умолчанию показывает предлагаемые исправления в виде diff, а format --check поддерживает те же машиночитаемые форматы (JSON, аннотации для GitHub и GitLab), что и линтер. Есть и небольшое несовместимое изменение: некоторые поля JSON-вывода теперь могут содержать null вместо прежних значений по умолчанию.
Кроме того, из режима preview в стабильные переведён десяток правил и уточнено поведение ряда существующих проверок.
Источник: Hacker News
Комментарии
Войдите, чтобы комментировать.