Flake8 — инструмент, позволяющий просканировать код проекта и обнаружить в нем стилистические ошибки и нарушения различных конвенций кода на Python. Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины.
Я покажу, как настроить Flake8, чтобы он автоматически подсвечивал проблемы прямо в коде
Шаг 1. Установка Flake8
Flake8 – это по сути модуль Python, поэтому его можно установить в одну из виртуальных сред Python. Я обычно использую venv, который хранится в папке проекта, в него и установим. Это легко с помощью терминала прямо в PyCharm.
pip install --upgrade flake8

Опционально можно его сохранить в списке зависимостей проекта командой (внимание: остальные зависимости тоже перезапишутся, если они отличаются от установленных).
pip freeze > requirements.txt
Шаг 2. Плагин File Watcher
У вас должен быть установлен плагин File Watcher, это официальный плагин, но он не всегда по умолчанию загружен – у меня вот не было его. Идем в настройки (на Маке – меню PyCharm – Preferences, в других системах посмотрите в меню File).

Там идем в Plugins – Marketplace – вбиваем в поиске File Watchers – Install – Restart IDE.

Шаг 3. Настраиваем Watcher
Нам нужно, чтобы при редактировании файла IDE смотрела за изменениями и прогоняла по файлу Flake8, если что-то изменилось. Для этого надо создать File Watcher – смотрителя, который будет выполнять команду.
Там же в настройках идем в Tools – File Watches – жмем на плюсик.

Далее настраиваем смотрителя. Имя можно придумать любое. Остальные настройки:
- File type – Python
- Score – Current File, я выбрал только для текущего файла, чтобы расходовать меньше ресурсов и энергии. Вы можете выбрать на весь проект.
- Program – это путь до установленного Flake8 – я использую переменную, которая связана с путем к интерпретатору Python, файл flake8 лежит в ней же:
$PyInterpreterDirectory$/flake8
- Arguments – аргументы для flake8 – путь к анализируемому файлу:
$FileDir$/$FileName$
- Show console – Never – мы не будем никогда показывать консоль, а ошибки должны будут подчеркиваться прямо в коде!
- Output filters – это формат строки с описанием ошибки, которую выдает flake8, если находит стилистические проблемы. По этому формату IDE поймет, где именно возникла проблема (файл, строка, колонка, сообщение) – скопируйте это:
$FILE_PATH$:$LINE$:$COLUMN$: $MESSAGE$

Это базовая настройка flake8. Конечно, вы можете настраивать инспекции индивидуально, но об этом расскажу как-нибудь потом.
Шаг 4. Отображаем стилистические проблемы в коде
Теперь нам нужно заставить PyCharm подчеркивать проблемы в нужных местах кода. Сделать это несложно, нужно включить соответствующую инспекцию.
В настройках ищем: Editor – Inspections – File Watchers – File Watcher Problems – должна стоять галочка, затем правее выбираем Severity: Error. Жмем ОК и все готово!

Поздравляю. Начните редактировать файл и увидите, если возникнут сообщения о стилистических проблемах:

Git hook!
Создадим хук для системы контроля версий GIT. Вы же пользуетесь ей, я надеюсь. Так вот pre-commit-hook – это действие, выполняемое перед коммитом. Будем запускать flake8 перед каждым коммитом, что плохо оформленный код не попадал в репозиторий. Сделать это очень просто в пару консольных команд:
flake8 --install-hook git
git config --bool flake8.strict true
Если в коде нет проблем, то коммит будет зафиксирован. А если они есть – вам придется прежде их исправить.
🐉 Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈