Метка: pychar

Flake8 + PyCharm: туториал

Flake8 — инструмент, позволяющий просканировать код проекта и обнаружить в нем стилистические ошибки и нарушения различных конвенций кода на Python. Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины.

Я покажу, как настроить Flake8, чтобы он автоматически подсвечивал проблемы прямо в коде

Шаг 1. Установка Flake8

Flake8 – это по сути модуль Python, поэтому его можно установить в одну из виртуальных сред Python. Я обычно использую venv, который хранится в папке проекта, в него и установим. Это легко с помощью терминала прямо в PyCharm.

pip install --upgrade flake8
Терминал установки Flake8

Опционально можно его сохранить в списке зависимостей проекта командой (внимание: остальные зависимости тоже перезапишутся, если они отличаются от установленных).

pip freeze > requirements.txt

Шаг 2. Плагин File Watcher

У вас должен быть установлен плагин File Watcher, это официальный плагин, но он не всегда по умолчанию загружен – у меня вот не было его. Идем в настройки (на Маке – меню PyCharm – Preferences, в других системах посмотрите в меню File).

Preferences PyCharm на Mac

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

Как установить File watchers в PyCharm

Шаг 3. Настраиваем Watcher

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

Там же в настройках идем в Tools – File Watches – жмем на плюсик.

Как найти File Watcher

Далее настраиваем смотрителя. Имя можно придумать любое. Остальные настройки:

  1. File type – Python
  2. Score – Current File, я выбрал только для текущего файла, чтобы расходовать меньше ресурсов и энергии. Вы можете выбрать на весь проект.
  3. Program – это путь до установленного Flake8 – я использую переменную, которая связана с путем к интерпретатору Python, файл flake8 лежит в ней же: $PyInterpreterDirectory$/flake8
  4. Arguments – аргументы для flake8 – путь к анализируемому файлу: $FileDir$/$FileName$
  5. Show console – Never – мы не будем никогда показывать консоль, а ошибки должны будут подчеркиваться прямо в коде!
  6. 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 👈