
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 التعبير ، تحديد النمط الذي سيتم صيده - إما كتعبير ASTPATH أو كتعبير منتظم ( !regex ... ). بالإضافة إلى ذلك ، فإن المفتاح المستخدم للقاعدة ضمن rules رسم الخرائط بمثابة اسمها.
قد تتكون القواعد أيضًا من:
settings الإعدادات التي تحدد ملفات القاعدة التي سيتم فرضها ، وكذلك ما إذا كان يمكن تجاهلها عبر # bb: ignore التعليقexample على رمز بيثون الذي ستتطابق مع القاعدةinstead من جزء بديل من التعليمات البرمجية ، لتوجيه المطور في إصلاح خطأه في التصفية. يتم فحص هذه example وبدلاً instead في وقت التشغيل لضمان أن تكون على التوالي ولا تتوافق مع expr للقاعدة.
على سبيل المثال ، قد تبدو قاعدة للاتصال لاستدعاء دالة تم إهمالها باستخدام تعبير 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 ، و astpath ASTPath للحصول على أمثلة على أنواع الأنماط التي يمكنك ترتبط بها لاستخدام bellybutton .
bellybutton في إصدار ألفا ، وبالتالي ، تفتقد بعض الميزات الرئيسية والوثائق وتغطية الاختبار الكاملة. علاوة على ذلك ، لم يتم تحسين bellybutton للأداء على قواعد الكود الكبيرة للغاية وقد تحتوي على الأخطاء المكسورة. الرجاء الإبلاغ عن أي أخطاء واجهتها.
!verbal !chain