Найти тему
Заходи в Ай-Ти

FastAPI - создание web-приложения. Часть 12 (Очистка кодовой базы)

Оглавление

Начнем!

Ресурсы:

  • https://pre-commit.com

Будь то работа, свидание или обещание другу, мы думаем, прежде чем взять на себя обязательства, тогда почему в наших проектах мы берем на себя обязательства безрассудно и превращаем наш проект в кошмар для кого-то нового? В Python есть рекомендации pep8, которым большинство из нас хотят следовать и, возможно, даже имеют в виду, но зачем соревноваться с компьютером в запоминании? Чтобы упростить процесс разработки, мы можем использовать перехватчики перед фиксацией, которые проверят наш код на предмет необходимого форматирования, соблюдения рекомендаций pep8, проверок безопасности и многого другого.

Добавление форматора кода, например Black

Black, форматирует наш код, придавая ему единообразный стиль. Правила черного форматирования — это расширенный набор Python. Давайте посмотрим на очень простой пример.

Код без использования форматера
Код без использования форматера

после того, как black форматирует наш код

Код после использования форматера
Код после использования форматера

Обратите внимание, как он устранил пробелы после оператора '=' и длины строки > 79. Мы не будем устанавливать black. Вместо этого мы сохраним его как часть нашего конвейера предварительной фиксации. Для этого сначала нам нужно установить pre-commit. Давайте изменим наш файл requiremets.txt и установим требования, используя

pip install -r requirements.txt
Новая зависимость в requirements
Новая зависимость в requirements

Теперь нам нужно добавить  файл конфигурации, в котором мы укажем все, что нам нужно в нашем конвейере предварительной фиксации. Для этого нам нужно создать  .pre-commit-config.yaml файл.

Создание новых файлов
Создание новых файлов

Поместите следующее в содержимое этого файла и сохраните. Это минимальная конфигурация.

.pre-commit-config.yaml
.pre-commit-config.yaml

Запустите  pre-commit install настройку гит-хуков. Вы должны увидеть это сообщение «предварительная фиксация установлена ​​в .git\hooks\pre-commit». Теперь каждый раз, когда вы пытаетесь сделать коммит, ваш код будет переформатирован.

Добавление линтера проверки кода, например Flake8.
Линтер — это инструмент для статического анализа кода, используемый для выявления ошибок программирования, ошибок, стилистических ошибок и подозрительных конструкций. Например, он сообщит нам, что «бесполезный импорт со стороны администратора» или «переменная объявлена, но никогда не используется». Эти мелочи могут действительно помочь как разработчику, так и тестировщику, тк когнитивных перегрузок будет гораздо меньше. Кроме того, наша кодовая база станет чище. Чтобы включить
Flake8, добавьте эти строки в файл .pre-commit-config.yaml

Добавляем новые строчки в .pre-commit-config.yaml
Добавляем новые строчки в .pre-commit-config.yaml

Однако в большинстве случаев такой конфигурации flake8 недостаточно. Часто мне хочется исключить некоторые файлы, изменить max_line_length или игнорировать некоторые ошибки. В этом случае мы можем создать файл   setup.cfg или файл .flake8 для предоставления дополнительных конфигураций. Я предлагаю файл setup.cfg, поскольку это общий файл конфигурации. По сути, позже, если вы захотите добавить дополнительные перехватчики, подобные flake8, вы можете добавить их конфигурацию в setup.cfg. Это, например, файл setup.cfg, в котором находится наш .pre-commit-config.yaml файл.

Файл .flake8
Файл .flake8

Каждый раз, когда вы совершаете black Flake8 переформатирует и проверит ваши файлы. Чтобы избежать перехватов перед фиксацией, используйте:

git commit -m "my message" --no-verify

Добавление автоматического переупорядочения импорта.


Чтобы включить переупорядочение импорта, мы можем использовать переупорядочение импорта, сортировку и т. д. Python. Это дополнительная конфигурация yaml.

 .pre-commit-config.yaml
.pre-commit-config.yaml

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

pre-commit run --all-files

Внимание: это может изменить некоторые вещи в кодовой базе, и будет сложно просмотреть коммит. Возможно, вам придется исправить несколько строк кода и импорта, чтобы ваш git зафиксировался. Вот пример в моей системе: до тех пор, пока я не исправлю этот неиспользуемый импорт, flake8 не позволит мне зафиксировать мой код.

-9

После этого я исправляю все проблемы, добавляю gid и затем фиксирую.

-10

Так, с кодом разобрались... В следующей статье будем делать авторизацию пользователей.

Читайте также: Часть 13 (Создание системы авторизации пользователей)

.

❤️ Если вам понравилась статья, ставьте лайк и подписывайтесь на мой канал (Заходи в Ай-Ти).

👍 Если у вас остались вопросы или есть интересные темы, которые вы хотите, чтобы я разобрал, то пишите в комментариях. Ваше мнение очень важно для меня!

#fastapi #fastapi python #fastapi sqlalchemy #pre commit #flake8 python #pre commit python #flake8