
bellybutton -это настраиваемый, простой в конфигурации двигатель для питона.
Такие инструменты, как Pylint и Flake8, предоставляют, из коробки, широкий спектр правил для обеспечения соблюдения лучших практик Python, обеспечения соответствия PEP-8 и предотвращения частых источников ошибок. Тем не менее, во многих проектах есть кандидаты для конкретных проектов для статического анализа, такие как руководства по внутреннему стилю, области устаревшей функциональности или общие источники ошибки. Это особенно верно для этих проектов со многими участниками или с большими или устаревшими кодовыми базами.
bellybutton позволяет определять пользовательские правила снижения на основе для каждого проекта и обнаружены как часть вашего обычного процесса сборки, тестирования и развертывания, а также делает указание этих правил очень доступными, значительно снижая стоимость принятия.
Попробуйте bellybutton , если:
bellybutton может быть установлен через:
pip install bellybuttonПосле установки работа
bellybutton init В корневом каталоге вашего проекта создаст файл конфигурации .bellybutton.yml с примером правила для начала адаптации. bellybutton также попытается предоставить дополнительные настройки правил на основе структуры каталогов вашего проекта.
Как только вы настроили bellybutton для своего проекта, запуска
bellybutton lint Будет лить проект против правил, указанных в вашем .bellybutton.yml . Кроме того, бег
bellybutton lint --modified-only Будет, если использует GIT, только пройдите те файлы, которые отличаются от origin/master .
Для добавления bellybutton в ваш трубопровод CI, взгляните на конфигурацию Tox этого репозитория и .travis.yml в качестве примера.
Правила в схемах снабжения bellybutton , которые следует поймать, и привести к выходу из строя. Правила, указанные в вашей конфигурации .bellybutton.yml должны состоять из:
description описания, выражающее значение правилаexpr экспрессии, указанный шаблон, который будет пойман - либо в виде выражения астпата, либо как регулярное выражение ( !regex ... ). Кроме того, ключ, используемый для правила в рамках отображения rules , служит его именем.
Правила также могут состоять из:
settings , в которых указывают, какие файлы должны быть применены правило, а также о том, можно ли его игнорировать с помощью # bb: ignore комментарийexample кода Python, который будет соответствовать правилуinstead альтернативного фрагмента кода, для того, чтобы направить разработчика в исправлении их ошибки вкладки. Этот example и instead пункты проверяются во время выполнения, чтобы убедиться, что они соответственно находятся и не соответствуют expr правила.
В качестве примера, правило для Lint для устаревшего вызова функции с использованием выражения Astpath может выглядеть как:
DeprecatedFnCall :
description : ` deprecated_fn ` will be deprecated in v9.1.2. Please use `new_fn` instead.
expr : //Call[func/Name/@id='deprecated_fn']
example : " deprecated_fn(*values) "
instead : " new_fn(values) " !settings узлов указывают:
included пути, по которым должны быть управляются правила, используя глобусные обозначенияexcluded пути, по которым правила не должны выполняться (даже при сопоставлении included путей)allow_ignore , которое определяет, можно ли игнорировать правила, предоставляя линию, соответствующую правилу, есть комментарий # bb: ignore . Кроме того, на корневом уровне .bellybutton.yml может быть указана настройка default_settings , которая будет использоваться правилами без явных настроек. Каждое правило должно иметь либо параметр settings , либо иметь возможность возвращаться на default_settings .
В качестве примера, настройки !settings , настройки, может выглядеть только конкретный модуль:
my_module_settings : !settings
included :
- ~+/my_package/my_module.py
excluded : []
allow_ignore : no Ознакомьтесь с этим репозиторием .bellybutton.yml в качестве примера файла конфигурации bellybutton и Readme astpath для примеров типов шаблонов, которые вы можете использовать для использования bellybutton .
bellybutton находится в альфа -релизе и, как таковой, отсутствует некоторые ключевые функции, документацию и полный тестовый охват. Кроме того, bellybutton не оптимизирован для производительности на чрезвычайно больших кодовых базах и может содержать нарушающие ошибки. Пожалуйста, сообщите о любых столкновениях.
!chain !verbal