Библиотеки Python - улучшите качество своего кода

Проверьте свой стиль кода

Легко допустить, что стандарты удобочитаемости и кодирования отходят на второй план, когда программный проект переходит в «режим обслуживания». (Также легко никогда не устанавливать эти стандарты в первую очередь.) Но поддержание согласованного стиля и стандартов тестирования в кодовой базе является важной частью снижения нагрузки на обслуживание, гарантируя, что будущие разработчики смогут быстро уловить то, что происходит в новом для них проекте. Это обеспечивает лучшее функционирование приложения в долгосрочной перспективе.

Отличный способ защитить возможности обслуживания проекта в будущем – это использовать внешние библиотеки для проверки работоспособности вашего кода. Среди них можно встретить несколько наших любимых библиотек для кодирования кода (проверка на PEP 8 и другие ошибки стиля), обеспечения согласованного стиля и обеспечения приемлемого покрытия тестами по мере достижения проекта.

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

1. Pylint

Pylint – это библиотека, которая проверяет нарушения стиля PEP 8 и другие распространенные ошибки. Он хорошо интегрируется с несколькими популярными редакторами и IDE, а также может запускаться из командной строки.

Чтобы установить данное программное обеспечение, просто выполните pip install pylint.

Чтобы использовать Pylint из командной строки, запустите pylint [options] path/to/dir or pylint [options] path/to/module.py. После чего Pylint будет выводить предупреждения о нарушениях стиля и других ошибках на консоль. Вы можете настроить ошибки, которые проверяет Pylint, с помощью файла конфигурации с именем pylintrc.

2. Flake8

Flake8 – это «инструмент Python, который склеивает вместе PEP8, Pyflakes (аналог Pylint), McCabe (средство проверки сложности кода) и сторонние плагины для проверки стиля и качества любого кода Python».

Чтобы использовать Flake8, запустите pip install flake8. Затем flake8 [options] path/to/dir or flake8 [options] path/to/module.py, чтобы отслеживать ошибки и предупреждения.

Как и Pylint, Flake8 допускает некоторую настройку в плане того, что он проверяет с помощью файла конфигурации. Он имеет очень четкую документацию, включая некоторые полезные хуки для фиксации, чтобы автоматически проверять ваш код как часть вашего рабочего процесса разработки.

Flake8 интегрируется с популярными редакторами и IDE, но эти инструкции, как правило, не встречаются в документации. Чтобы интегрировать Flake8 с вашим любимым редактором или IDE, поищите плагины в интернете (например, плагин Flake8 для Sublime Text).

3. Isort

Isort – это библиотека, которая сортирует ваш импорт в алфавитном порядке и разбивает его на соответствующие разделы (например, импорт стандартной библиотеки, импорт сторонней библиотеки, импорт из вашего собственного проекта и т. д.). Это повышает удобочитаемость и облегчает поиск импортируемых файлов, если в вашем модуле их много.

Установите isort с помощью pip install isort и запустите его с помощью isort path/to/module.py. Дополнительные параметры конфигурации находятся в документации. Например, вы можете настроить, как isort обрабатывает многострочный импорт из одной библиотеки в файле .isort.cfg.

Как Flake8 и Pylint, isort также предоставляет плагины, которые интегрируют его с популярными редакторами и IDE.

Аутсорсинг вашего стиля кода

Запоминать запускать линтеры вручную из командной строки для каждого изменяемого файла –это боль, и вам может не понравиться поведение конкретного плагина с вашей IDE. Кроме того, ваши коллеги могут предпочесть разные линтеры или могут не иметь плагинов для своих любимых редакторов, или вы можете быть менее дотошными в том, чтобы всегда запускать линтер и исправлять предупреждения. Со временем кодовая база, которой вы все поделитесь, станет грязной и трудной для чтения.

Отличным решением является использование библиотеки, которая автоматически преобразовывает ваш код во что-то, что проходит для вас PEP 8. Все три библиотеки, которые мы рекомендуем, имеют разные уровни настройки и разные настройки по умолчанию для форматирования кода. Некоторые из них более удобнее, чем другие, поэтому, как и в случае с Pylint и Flake8, вы захотите проверить их, чтобы увидеть, какие из них предлагают настройки, без которых вы не можете жить... И стандартные неизменные значения, с которыми вы можете жить.

4. Autopep8

Autopep8 автоматически форматирует код в указанном модуле. Он переопределяет отступы строк, исправляет отступы, удаляет посторонние пробелы и исправляет типичные ошибки сравнения (например, с логическими значениями и None). Смотрите полный список исправлений в документации.

Чтобы установить, запустите pip install --upgrade autopep8. Чтобы переформатировать код на месте, запустите autopep8 --in-place --aggressive --aggressive <имя файла>. Агрессивные флаги (и их количество) показывают, какой контроль вы хотите дать autopep8 над стилем кода.

5. Yapf

Yapf – это еще одна опция для переформатирования кода, которая поставляется с собственным списком параметров конфигурации. Он отличается от autopep8 тем, что не только устраняет нарушения PEP 8. Он также переформатирует код, который не нарушает PEP 8 специально, но не имеет согласованного стиля или может быть лучше отформатирован для удобства чтения.

Чтобы установить, запустите pip install yapf. Чтобы переформатировать код, запустите yapf [options] path/to/dir or yapf [options] path/to/module.py. У него также есть полный список параметров настройки.

6. Black

Black – новый ребенок в блоке для линтеров, которые переформатируют код на месте. Он похож на autopep8 и Yapf, но гораздо более упрямый. У него очень мало вариантов для настройки, что является своего рода специальной концепцией. Идея в том, что вам не нужно принимать решения о стиле кода; единственное решение – позволить Black решать за вас. Вы можете прочитать об ограниченных параметрах настройки и инструкциях по их сохранению в файле конфигурации.

Black требует Python 3.6+, но может форматировать код Python 2. Чтобы установить его, запустите pip install black. Для предварительного кодирования выполните: black path/to/dir or black path/to/module.py.

Проверьте ваше тестовое покрытие

Вы пишете тесты, верно? Затем вы захотите убедиться, что новый код, добавленный в вашу кодовую базу, протестирован и не снижает общий объем тестового покрытия. Хотя процент тестового покрытия – не единственный показатель, который вы должны использовать для измерения эффективности и достаточности ваших тестов, это один из способов обеспечения соблюдения базовых стандартов тестирования в вашем проекте. Для измерения тестового покрытия у нас есть одна рекомендация: Coverage.

7. Coverage

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

Чтобы установить Coverage, запустите pip install coverage. Чтобы запустить программу и увидеть ее вывод, запустите покрытие, запустите coverage run [path/to/module.py] [args], и вы увидите вывод вашей программы. Чтобы увидеть отчет о том, в каких строках кода отсутствует покрытие, запустите coverage report -m.

Инструменты непрерывной интеграции

Непрерывная интеграция (CI) – это серия процессов, которые вы можете запустить для автоматической проверки ошибок линтера и проверки минимумов покрытия перед слиянием и развертыванием кода. Существует множество бесплатных или платных инструментов для автоматизации этого процесса, и подробное пошаговое руководство выходит за рамки данной статьи. Но поскольку настройка процесса CI является важным шагом в удалении блоков для более удобочитаемого и обслуживаемого кода, вам следует изучить инструменты непрерывной интеграции в целом. Мы рекомендуем вам попробовать Travis CI и Jenkins.

Наверх
Меню