Правила Ruff, связанные с pycodestyle (E, W)
Правила Ruff, связанные с pycodestyle. Подробнее об этом плагине на его странице PyPI
Часть категории Правила проверок кода в Ruff.
Правила Ruff, связанные с pycodestyle. Подробнее об этом плагине на его странице PyPI
Часть категории Правила проверок кода в Ruff.
missing-newline-at-end-of-file в Ruff проверяет отсутствие новой строки в конце файла.
Последняя строка файла должна заканчиваться символом новой строки. Это необходимо для совместимости с POSIX-утилитами, корректной работы систем контроля версий и правильного объединения файлов.
spam(1) # Нет новой строки в конце файла.
spam(1 …
blank-line-with-whitespace в Ruff проверяет наличие лишних пробелов в пустых строках.
Согласно PEP 8, "избегайте замыкающих пробелов в любом месте. Так как они обычно невидимы, это может сбивать с толку".
Лишние пробелы в пустых строках не несут полезной информации и могут вызвать нежелательные эффекты в системах контроля версий …
too-many-newlines-at-end-of-file в Ruff проверяет файлы с несколькими пустыми строками в конце.
Пустые строки в конце файла избыточны.
Файл должен заканчиваться одной пустой строкой, что необходимо для совместимости с POSIX-утилитами и корректной работы систем контроля версий.
В случае Jupyter Notebook эта проверка применяется к каждой ячейке отдельно.
doc-line-too-long в Ruff проверяет строки документации, превышающие установленную максимальную длину символов.
Длинные строки в блоках документации (docstrings или комментариях) ухудшают читаемость кода. Например, PEP 8 рекомендует ограничивать такие строки 72 символами.
Это правило применяет ограничение, заданное в настройке lint.pycodestyle.max-doc-length. Если значение не указано, правило не …
invalid-escape-sequence в Ruff проверяет недопустимые escape-последовательности.
Недопустимые escape-последовательности были объявлены устаревшими в Python 3.6 и могут приводить к неожиданному поведению кода.
regex = "\.png$" # Ошибочная escape-последовательность.
regex = r"\.png$" # Использование сырой строки (raw string).
Если строка уже содержит корректную escape-последовательность:
value = "new line …
mixed-spaces-and-tabs в Ruff проверяет случаи, когда в отступах смешиваются пробелы и табуляции.
Никогда не смешивайте пробелы и табуляции.
Наиболее популярный способ оформления отступов в Python — использование только пробелов. Второй по популярности — использование только табуляции. Код, в котором смешаны пробелы и табуляции, следует привести к единому стилю с …
multiple-imports-on-one-line в Ruff проверяет случаи, когда несколько модулей импортируются в одной строке.
Согласно PEP 8, "импорты обычно должны быть размещены на отдельных строках". Это улучшает читаемость кода и облегчает контроль версий.
import sys, os
import os
import sys
module-import-not-at-top-of-file в Ruff проверяет случаи, когда импорты расположены не в начале файла.
Согласно PEP 8, "импорты всегда должны находиться в начале файла — сразу после комментариев модуля и docstring, перед глобальными переменными и константами".
Это улучшает читаемость кода, упрощает управление зависимостями и делает структуру файла предсказуемой.
Исключения составляют …
line-too-long в Ruff проверяет строки, превышающие установленную максимальную длину символов.
Слишком длинные строки ухудшают читаемость кода. PEP 8 рекомендует ограничивать строки 79 символами. По умолчанию это правило в Ruff использует лимит 88 символов для совместимости с Black и Ruff Formatter, но этот лимит можно настроить через параметр …
multiple-statements-on-one-line-colon в Ruff проверяет случаи, когда несколько операторов записаны в одной строке.
Согласно PEP 8, "сложные операторы (несколько операторов в одной строке) обычно не рекомендуются". Размещение нескольких операторов в одной строке ухудшает читаемость кода и делает его сложнее для понимания.
if foo == "blah": do_blah_thing()
multiple-statements-on-one-line-semicolon в Ruff проверяет случаи, когда несколько операторов записаны в одной строке через точку с запятой.
Согласно PEP 8, размещение нескольких операторов в одной строке не рекомендуется, так как это ухудшает читаемость кода и затрудняет его поддержку.
do_one(); do_two(); do_three()
do_one()
do_two()
do_three …
useless-semicolon в Ruff проверяет операторы, заканчивающиеся ненужной точкой с запятой.
Заключительная точка с запятой в Python не требуется и должна быть удалена, так как она не несет никакой функциональной нагрузки.
do_four(); # лишняя точка с запятой
do_four()
none-comparison в Ruff проверяет сравнения с None, выполненные без использования оператора is.
Согласно PEP 8, "сравнения с одиночными значениями, такими как None, всегда должны выполняться с использованием is или is not, а не операторов равенства (== или !=).
if arg != None:
pass
if None == arg:
pass
true-false-comparison в Ruff проверяет сравнение с логическими литералами True и False с использованием операторов равенства (== и !=).
Согласно PEP 8, не следует использовать == и != для проверки значений на True или False.
Вместо этого следует использовать if cond: или if not cond: для проверки истинности значений.
Если необходимо проверить …
not-in-test в Ruff проверяет использование проверки членства с not {element} in {collection}.
Согласно PEP 8, конструкция {element} not in {collection} является более читаемой, чем not {element} in {collection}.
Z = not X in Y
if not X.B in Y:
pass
Z = X not …
not-is-test в Ruff проверяет сравнение идентичности объектов с использованием not {foo} is {bar}.
Согласно PEP 8, проверка идентичности объекта с is not более читаема и понятна.
if not X is Y:
pass
Z = not X.B is Y
if X is not Y …
type-comparison в Ruff проверяет сравнение типов объектов с использованием == и других операторов сравнения.
Использование isinstance вместо прямого сравнения типов предпочтительно, поскольку оно также проверяет, является ли объект экземпляром класса или его подкласса.
Если необходимо проверить точное соответствие типа, следует использовать is или is not.
При …
bare-except в Ruff проверяет блоки try-except, которые используют пустой except: без указания конкретного исключения.
Использование пустого except: перехватывает BaseException, включая KeyboardInterrupt, SystemExit, Exception и другие исключения. Это затрудняет прерывание программы (например, с помощью Ctrl-C) и может скрывать серьезные ошибки.
try:
raise KeyboardInterrupt("Вы, вероятно, не …
lambda-assignment в Ruff проверяет присвоение лямбда-выражений переменным.
Согласно PEP 8, следует «всегда использовать оператор def вместо оператора присваивания, который связывает лямбда-выражение напрямую с идентификатором».
Использование def дает более читаемые трассировки ошибок, а сам оператор присваивания нивелирует главное преимущество использования лямбда-выражения — его встраиваемость в другие выражения.
ambiguous-variable-name в Ruff проверяет использование переменных с именами l, O или I.
В некоторых шрифтах эти символы неотличимы от цифр 1 и 0, что может затруднить чтение кода и привести к ошибкам.
l = 0
O = 123
I = 42
L = 0
o = 123
i …
ambiguous-class-name в Ruff проверяет использование символов 'l', 'O' или 'I' в именах классов.
В некоторых шрифтах эти символы неотличимы от цифр один и ноль, что может вызывать путаницу при чтении кода. Вместо 'I' рекомендуется использовать более явные названия.
class I(object):
pass
class …
ambiguous-function-name в Ruff проверяет использование символов 'l', 'O' или 'I' в качестве имен функций.
В некоторых шрифтах эти символы неотличимы от цифр 1 и 0, что может ухудшить читаемость кода и привести к путанице.
def l(x):
...
def long_name(x):
...
tab-indentation в Ruff проверяет использование табов для отступов.
Согласно PEP 8, предпочтительнее использовать пробелы вместо табов (если только код уже не использует табы для отступов и требуется сохранить консистентность).
\tif x == 1:
\t\tprint("Ошибка: отступы с табами")
if x == 1:
print("Правильно …
trailing-whitespace в Ruff проверяет наличие лишних пробелов в конце строк.
Согласно PEP 8, «избегайте лишних пробелов в любом месте. Поскольку они обычно невидимы, это может быть запутанным».
spam(1)
#
spam(1)
#