Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Линтинг Python: Настройка окружения

У кода есть множество разных характеристик, по которым можно судить, насколько хорошо он написан. Среди них есть одна базовая, с которой начинают все разработчики — это стиль написания.

Сравните два варианта оформления кода:

## Без форматирования
def  find_sum(a,b):
  c = a+b; return c

## С форматированием
def find_sum(a, b):
  sum = a + b
  return sum

Второй вариант читается значительно проще. Чем больше будет кода, тем больше будет различий. Хороший стиль кодирования — базовое требование к коду в коммерческой разработке, потому что он упрощает командную разработку. В одном проекте может работать несколько десятков программистов. Важно, чтобы им было легко читать код друг друга, не спотыкаясь о неправильное форматирование.

Для отслеживания подобных ситуаций существуют линтеры — особый класс программ. Линтеры содержат большое количество правил, по которым они могут выдать рекомендации по коду. Другими словами, они подсказывают, как стоит писать код, а как — не стоит. Более того, часто линтеры расширяются плагинами под конкретные фреймворки, что позволяет отслеживать специфичные ошибки и давать рекомендации по кодированию в этих фреймворках.

В Python особой популярностью пользуется линтер flake8. Количество правил, по которым он проверяет код, исчисляется десятками. Посмотрите на этот небольшой участок кода:

from math import sqrt


def sum(a, b):
    c = 5
    return a + b

С точки зрения форматирования здесь все хорошо, а что скажет линтер flake8?

Он выдаст два предупреждения:

  • F401 'math.sqrt' imported but unused. Модуль импортируется, но не используется — либо он не нужен, либо в коде есть ошибка
  • F841 local variable 'c' is assigned to but never used. Переменная не используется — либо она не нужна, либо в коде ошибка

Ссылки выше ведут на страницы конкретных правил. Там подробно объясняется, почему так код писать не нужно. Изучать правила flake8 очень полезно, они прививают хорошие практики написания кода.

Установка и настройка flake8

Линтер flake8 устанавливается как dev зависимость прямо в проект:

poetry add --group=dev flake8

После установки его можно настроить под набор ваших правил и ограничений. Для этого нужно создать файл конфигурации setup.cfg, который нужно добавить в репозиторий. Ниже пример такого файла, который используется для настройки линтера в наших практиках:

[flake8]
accept-encodings = utf-8
max-complexity = 6
statistics = False
max-line-length = 80
enable-extensions = G
isort-show-traceback = True

exclude = .venv,dist,build

per-file-ignores =
  # init modules can contain the local imports, logic, unused imports
  __init__.py: F401

[isort]
multi_line_output = 3
include_trailing_comma = true
default_section = FIRSTPARTY
line_length = 80

Выше настраивается максимальная сложность функций, максимальная длина строчки кода и другие параметры. Так же мы можем указать, какие файлы не нужно проверять линтером или какие правила можно игнорировать. Список всех опций вы можете изучить в документации.

И последний шаг — запуск flake8:

# Обратите внимание на точку
# Это указание текущей директории и всех поддиректорий
poetry run flake8 .

Если ошибок нет, то flake8 молча завершит свою работу. Если ошибки есть, линтер выведет список с указанием того, что нужно поправить.


Самостоятельная работа

  1. Установите flake8 в ваш проект
  2. Создайте файл конфигурации и скопируйте в него настройки из нашего эталонного репозитория
  3. Запустите линтер на файлах проекта, исправьте замечания
  4. Если вы сохраняли код на GitHub, то отправьте изменения и setup.cfg в репозиторий

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 2 мая
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 2 мая

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»