Flake8 python что это

Полезные модули Python : Flake8

Каждый питонщик знаком с PEP8, гидом “Style Guide for Python Code.” Это замечательный документ, и если ему следовать, то ваш код стилистически будет согласоваться с кодом, написанным другими разработчиками. Соблюдение последовательности – огромная победа, потому что это упрощает жизнь при взаимодействии с вашим кодом.

Как вы помните, основные рекомендации PEP8:

Но как запомнить все из них? Введите в поиске: pep8.

pep8: проверка стиля для кода Питон

Сценарий pep8 просто проверяет код, сравнивая с регламентом PEP 8 и предупреждает вас о несоответствиях. Вы можете установить его, используя команду pip install pep8.

Давайте посмотрим на один пример. Проверим код:
Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Это просто, и это работает, но стиль все неправильный!

Проверим этот же код через pep8:
Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Мало того, что pep8 нашел эти ошибки, но можно также использовать опцию –show-pep8, чтобы цитировать PEP 8 для каждой трансгрессии!
Но как насчет других проблем, как например, то что в коде находится бесполезный import? Тут на помощь приходит PyFlakes.

pyflakes: проверка кода на ошибки для Питона

Модуль pyflakes читает код и предупреждает об общих источниках ошибок. Его также можно установить, используя pip install pyflakes.

Pyflakes ловит такие ошибки, как:

Замечательно!
Но что, если мы заботимся о стиле и источниках ошибок?

flake8: pep8 + pyflakes + многое другое

Тарек Зиаде написал модуль Flake8, который объедил pep8 и pyflakes в одном удобном автономном пакете. pep8 или pyflakes уже помещены в Flake8, их не нужно устанавливать отдельно. Flake8 устанавливается при помощи pip install flake8.

В flake8 добавлены:

(Цикломатическая сложность является мерой “сложности” кода, полученная в первую очередь от его степени вложенности и ветвления. Если её слишком много в какой-либо одной функции, то, вероятно, код будет трудно читаем и поддерживаем)

Вот результат проверки при помощи falake8:
Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Специальный бонус: Syntastic: Проверка синтаксиса для Vim

Если вы используете Vim и вам приходятся по вкусу идеи, лежащие в основе flake8, вам стоит установить плагин Syntastic. При сохранении файла, Syntastic запускает его через проверку ошибок и предупреждает вас о возможных проблемах. Для Python он по умолчанию использует Flake8.

Посмотрите, что происходит, если мы попытаемся сохранить сценарий mymath.py, показанный выше:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это
Ошибочные линии выделены подчеркиванием, и также выдан Location List с перечислением всех ошибок. Здорово, не правда ли?
Занимательно еще то, что Syntastic способен проверить синтаксические ошибки для множества различных языков, например, C, CoffeeScript, Go, Haskell, JavaScript, Puppet, Vala, и многие другие.

Источник

Линтеры в Python

В сообществе Python, как и в любой другой группе людей, существует некое коллективное знание. Множество людей прошлось по всем возможным граблям и получило опыт через набитые шишки. Затем через какое-то время, благодаря выступлениям на конференциях, официальным заявлениям, документам, статьям в блогах, код-ревью и личному общению, это знание стало коллективным. Теперь мы просто называем его “хорошими практиками”.

К таким хорошим практикам можно отнести, например, следующие.

Соблюдать (и даже просто помнить) все хорошие практики — не самая простая задача. Зачастую люди плохо справляются с тем, чтобы отсчитывать пробелы и контролировать переменные, и вообще склонны допускать ошибки по невнимательности. Таковы люди, ничего не поделаешь. Машины, наоборот, прекрасно справляются с такими хорошо определёнными задачами, поэтому появились инструменты, которые контролируют следование хорошим практикам.

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

В этом посте я рассмотрю два самых популярных линтера для Python:

Термин “lint” впервые начал использоваться в таком значении в 1979 году. Так называлась программа для статического анализа кода на C, которая предупреждала об использовании непортабельных на другие архитектуры языковых конструкций. С тех пор “линтерами” называют любые статические анализаторы кода, которые помогают находить распространённые ошибки, делать его однообразным и более читаемым. А названо оно «lint» в честь вот такой штуки:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

flake8

Установка

Источник

Flake8: Your Tool For Style Guide Enforcement¶

Quickstart¶

Installation¶

To install Flake8, open an interactive shell and run:

If you want Flake8 to be installed for your default Python installation, you can instead use:

It is very important to install Flake8 on the correct version of Python for your needs. If you want Flake8 to properly parse new language features in Python 3.5 (for example), you need it to be installed on 3.5 for Flake8 to understand those features. In many ways, Flake8 is tied to the version of Python on which it runs.

Using Flake8¶

To start using Flake8, open an interactive shell and run:

If you only want to see the instances of a specific warning or error, you can select that error like so:

Alternatively, if you want to ignore only one specific warning or error:

Please read our user guide for more information about how to use and configure Flake8.

FAQ and Glossary¶

User Guide¶

All users of Flake8 should read this portion of the documentation. This provides examples and documentation around Flake8’s assortment of options and how to specify them on the command-line or in configuration files.

Plugin Developer Guide¶

If you’re maintaining a plugin for Flake8 or creating a new one, you should read this section of the documentation. It explains how you can write your plugins and distribute them to others.

Contributor Guide¶

If you are reading Flake8’s source code for fun or looking to contribute, you should read this portion of the documentation. This is a mix of documenting the internal-only interfaces Flake8 and documenting reasoning for Flake8’s design.

Источник

Стильный код на Python, или учимся использовать Flake8

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это
Автор: Анатолий Соловей, developer

Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:

Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

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

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

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

На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.

Flake8: Your Tool For Style Guide Enforcement

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

Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины, поэтому в дальнейшем в этой статье я буду отталкиваться от правил из Google Python Style Guide.

Почему Flake8?

Flake8: pep8 + pyflakes + more

Создатель Flake8 Тарек Зиаде ставил перед собой цель объединить главные популярные инструменты контроля кодстайла в одной библиотеке, с чем в итоге успешно справился — Flake8 получился действительно универсальным.

Легкость установки и конфигурации

Чтобы проверить, отвечает ли код в вашем проекте основным требованиям PEP 8, достаточно установить Flake:

и запустить его — просто ввести в командной строке:

после чего вы получите список с именами файлов и номерами строк, где были допущены ошибки, и подробное описание самих ошибок:

Великолепно, не правда ли? Но и это не всё. Если вы не любитель работать с консолью, то вы можете настроить интеграцию Flake8 с IDE или редактором, который вы предпочитаете использовать.

Интеграция Flake8 с редакторами и IDE

Интеграция с PyCharm
Так же актуально и для любой другой IDE от JetBrains.
Интеграция проводится всего за пару несложных шагов.

Откройте настройки External Tools в File → Settings → Tools и нажмите на “+”, затем заполните поля по этому шаблону:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

После этого нажмите на Output Filters, а затем на “+”, чтобы добавить новое правило для вывода сообщений от флейка:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это
Здесь мы говорим PyCharm, что хотим, чтобы в выводе строки с ошибками были кликабельными и открывали в редакторе файл и место с ошибкой

Все. Интеграция Flake8 с PyCharm закончена. Чтобы вызвать флейк и проверить свой код, кликаем правой кнопкой мыши на файл/директорию, которую мы хотим проверить, и в контекстном меню выбираем External Tools → Flake8.

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

В выводе PyCharm появится кликабельный список нарушений в выбранном файле/директории:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Интеграция с Atom
Чтобы установить инструмент Flake8 для Atom, используйте Atom package manager в Settings и найдите там linter-flake8:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

из командной строки.

Затем перейдите в linter-flake8 settings и укажите путь к директории, где установлен flake8:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

У linter-flake8 есть собственный ReadMe по настройке, с которым при желании вы можете ознакомиться на странице самого linter-flake8 в Atom.

Наличие Version Control Hooks

Именно это я считаю главным достоинством Flake8, которое выделяет его среди других линтеров. В отличии от большинства подобных инструментов, где для настройки VCS-хуков используются целые отдельные библиотеки и модули (как, например, в Pylint), настройка хуков в флейке проводится буквально в две строчки.

На момент написания этой статьи, Flake8 умеет использовать pre-commit-хуки для Git и Mercurial. Эти хуки позволяют, например, не допускать создания коммита при нарушении каких-либо правил оформления.

Установить хук для Git:

И настроить сам гит, чтобы учитывать правила Flake8:

Я продемонстрирую, как Git hook работает на проекте, который я использовал для примера интеграции Flake8 с PyCharm. В модуле flake8tutorial.py мы видим очевидные ошибки: импортированные и неиспользованные модули, остсутствие докстринга и пустой строки в конце файла.

Первым делом проинициализируем в этом проекте git-0репозиторий, установим flake8 хук и скажем нашему git, что он должен прогонять флейк перед коммитами:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Затем попробуем провести первый коммит:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Как видите, flake8 был вызван перед коммитом и не позволил нам закоммитить невалидные изменения.

Теперь фиксим ошибки, отмеченные флейком, и пытаемся закоммитить валидный код:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Коммит успешно создан. Отлично!

Настройка Flake8 для Mercurial практически идентична. Для начала нужно установить Flake8 Mercurial Hook:

И настроить сам Mercurial:

Вот и все, хук для Меrcurial установлен, настроен и готов к использованию!

Подробнее о конфигурации Flake8

Базовая конфигурация

Список дополнительных опций и правил можно передать прямо при вызове из командной строки таким образом:

(в этом примере опцией select мы говорим, чтобы Flake сообщал о нарушениях только правила E123 (это код правила “closing bracket does not match indentation of opening bracket’s line”)).

Кстати, полный список опций с описанием вы можете найти в документации к самой библиотеке.

На мой взгляд, куда предпочтительнее настраивать Flake с помощью конфигурационных файлов, вы можете хранить настройки в одном из файлов setup.cfg, tox.ini или.flake8. Для ясности я предпочитаю использовать последний вариант.

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

В конфигурационных файлах можно оставлять комментарии, это полезно делать, если вы предоставляете большой список правил, которые Flake должен игнорировать:

Также можно добавить в исключения отдельную строку в вашем модуле, просто оставив на этой строке комментарий noqa. Тогда при проверке модуля Flake8 будет игнорировать ошибки, найденные в строках, помеченных этим комментарием:

Модули, расширяющие функциональность

Так как Flake позволяет создавать и использовать кастомные плагины, для него можно найти большое количество open-source плагинов. Я опишу только те, которые использую сам и считаю особенно полезными:

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

Этот плагин расширяет список предупреждений Flake, добавляя туда три новых:

Более подробно о настройке flake8-import-order можно прочитать на странице библиотеки на Github.

Плагин, добавляющий поддержку функционала из pydocstyle — проверку докстрингов на соответствие конвенциям Питона.

Список добавляемых этой библиотекой правил можно найти в документации pydocstyle.

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

Страница библиотеки на Github тут.

Плагин, проверяющий код на использование встроенных имен в качестве переменных или параметров.

Как и в случае с flake8-docstrings, у плагина нет дополнительных настроек, но добавленные им правила можно, например, внести в исключения флейка:

Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.

Плагин, позволяющий контролировать тип кавычек, которые будут использоваться в проекте.

Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.

Послесловие

Хотя настройки, описанные выше, в 97,5 % случаев смогут предотвратить появление некачественного кода в репозитории, он так или иначе может оказаться запушенным (например, если деву было лень вводить две строчки для настройки pre-commit hook). Поэтому я настоятельно рекомендую добавить вызов Flake8 на этапе билда пул-реквестов в используемой вами системе continuous integration, чтобы предотвратить мердж невалидных пул-реквестов и попадание ошибок в мастер.

Надеюсь, эта статья была вам полезна и позволит в дальнейшем максимально гибко и качественно настраивать рабочий процесс и стайлгайды в ваших Python-проектах. Всех благ.

Источник

Стильный код на Python, или учимся использовать Flake8

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:

Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

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

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

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

На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.

Flake8: Your Tool For Style Guide Enforcement

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

Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины, поэтому в дальнейшем в этой статье я буду отталкиваться от правил из Google Python Style Guide.

Почему Flake8?

Flake8: pep8 + pyflakes + more

Создатель Flake8 Тарек Зиаде ставил перед собой цель объединить главные популярные инструменты контроля кодстайла в одной библиотеке, с чем в итоге успешно справился — Flake8 получился действительно универсальным.

Легкость установки и конфигурации

Чтобы проверить, отвечает ли код в вашем проекте основным требованиям PEP 8, достаточно установить Flake:

и запустить его — просто ввести в командной строке:

после чего вы получите список с именами файлов и номерами строк, где были допущены ошибки, и подробное описание самих ошибок:

Великолепно, не правда ли? Но и это не всё. Если вы не любитель работать с консолью, то вы можете настроить интеграцию Flake8 с IDE или редактором, который вы предпочитаете использовать.

Интеграция Flake8 с редакторами и IDE

Интеграция с PyCharm
Так же актуально и для любой другой IDE от JetBrains.
Интеграция проводится всего за пару несложных шагов.

Откройте настройки External Tools в File->Settings->Tools и нажмите на “+”, затем заполните поля по этому шаблону:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

После этого нажмите на Output Filters, а затем на “+”, чтобы добавить новое правило для вывода сообщений от флейка:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это
здесь мы говорим PyCharm, что хотим, чтобы в выводе строки с ошибками были кликабельными и открывали в редакторе файл и место с ошибкой

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

В выводе PyCharm появится кликабельный список нарушений в выбранном файле/директории:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Интеграция с Atom
Чтобы установить инструмент Flake8 для Atom, используйте Atom package manager в Settings и найдите там linter-flake8:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

из командной строки.

Затем перейдите в linter-flake8 settings и укажите путь к директории, где установлен flake8:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

У linter-flake8 есть собственный ReadMe по настройке, с которым при желании вы можете ознакомиться на странице самого linter-flake8 в Atom.

Наличие Version Control Hooks

Именно это я считаю главным достоинством Flake8, которое выделяет его среди других линтеров. В отличии от большинства подобных инструментов, где для настройки VCS-хуков используются целые отдельные библиотеки и модули (как, например, в Pylint), настройка хуков в флейке проводится буквально в две строчки.

На момент написания этой статьи, Flake8 умеет использовать pre-commit-хуки для Git и Mercurial. Эти хуки позволяют, например, не допускать создания коммита при нарушении каких-либо правил оформления.

Установить хук для Git:

И настроить сам гит, чтобы учитывать правила Flake8:

Я продемонстрирую, как Git hook работает на проекте, который я использовал для примера интеграции Flake8 с PyCharm. В модуле flake8tutorial.py мы видим очевидные ошибки: импортированные и неиспользованные модули, остсутствие докстринга и пустой строки в конце файла.

Первым делом проинициализируем в этом проекте git-0репозиторий, установим flake8 хук и скажем нашему git, что он должен прогонять флейк перед коммитами:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Затем попробуем провести первый коммит:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Как видите, flake8 был вызван перед коммитом и не позволил нам закоммитить невалидные изменения.

Теперь фиксим ошибки, отмеченные флейком, и пытаемся закоммитить валидный код:

Flake8 python что это. Смотреть фото Flake8 python что это. Смотреть картинку Flake8 python что это. Картинка про Flake8 python что это. Фото Flake8 python что это

Коммит успешно создан. Отлично!

Настройка Flake8 для Mercurial практически идентична. Для начала нужно установить Flake8 Mercurial Hook:

И настроить сам Mercurial:

Вот и все, хук для Меrcurial установлен, настроен и готов к использованию!

Подробнее о конфигурации Flake8

Базовая конфигурация

Список дополнительных опций и правил можно передать прямо при вызове из командной строки таким образом:

(в этом примере опцией select мы говорим, чтобы Flake сообщал о нарушениях только правила E123 (это код правила “closing bracket does not match indentation of opening bracket’s line”)).

Кстати, полный список опций с описанием вы можете найти в документации к самой библиотеке.

На мой взгляд, куда предпочтительнее настраивать Flake с помощью конфигурационных файлов, вы можете хранить настройки в одном из файлов setup.cfg, tox.ini или.flake8. Для ясности я предпочитаю использовать последний вариант.

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

В конфигурационных файлах можно оставлять комментарии, это полезно делать, если вы предоставляете большой список правил, которые Flake должен игнорировать:

Также можно добавить в исключения отдельную строку в вашем модуле, просто оставив на этой строке комментарий noqa. Тогда при проверке модуля Flake8 будет игнорировать ошибки, найденные в строках, помеченных этим комментарием:

Модули, расширяющие функциональность

Так как Flake позволяет создавать и использовать кастомные плагины, для него можно найти большое количество open-source плагинов. Я опишу только те, которые использую сам и считаю особенно полезными:

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

Этот плагин расширяет список предупреждений Flake, добавляя туда три новых:

Более подробно о настройке flake8-import-order можно прочитать на странице библиотеки на Github.

Плагин, добавляющий поддержку функционала из pydocstyle — проверку докстрингов на соответствие конвенциям Питона.

Список добавляемых этой библиотекой правил можно найти в документации pydocstyle.

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

Страница библиотеки на Github тут.

Плагин, проверяющий код на использование встроенных имен в качестве переменных или параметров.

Как и в случае с flake8-docstrings, у плагина нет дополнительных настроек, но добавленные им правила можно, например, внести в исключения флейка:

Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.

Плагин, позволяющий контролировать тип кавычек, которые будут использоваться в проекте.

Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.

Послесловие

Хотя настройки, описанные выше, в 97,5 % случаев смогут предотвратить появление некачественного кода в репозитории, он так или иначе может оказаться запушенным (например, если деву было лень вводить две строчки для настройки pre-commit hook). Поэтому я настоятельно рекомендую добавить вызов Flake8 на этапе билда пул-реквестов в используемой вами системе continuous integration, чтобы предотвратить мердж невалидных пул-реквестов и попадание ошибок в мастер.

Надеюсь, эта статья была вам полезна и позволит в дальнейшем максимально гибко и качественно настраивать рабочий процесс и стайлгайды в ваших Python-проектах. Всех благ.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *