بعض الخطافات الجاهزة للالتزام المسبق.
انظر أيضًا: https://github.com/pre-commit/pre-commit
أضف هذا إلى .pre-commit-config.yaml
الخاص بك
- الريبو: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # استخدم المرجع الذي تريد الإشارة إليه athooks: - المعرف: مسافة بيضاء زائدة # - المعرف: ...
check-added-large-files
منع الملفات العملاقة من الالتزام.
حدد ما هو "كبير جدًا" باستخدام args: ['--maxkb=123']
(افتراضي=500 كيلو بايت).
يحد من الملفات المحددة لتلك المشار إليها على أنها مُجهزة للإضافة بواسطة git.
إذا تم تثبيت git-lfs
، فسيتم تخطي ملفات lfs (يتطلب git-lfs>=2.2.1
)
--enforce-all
- تحقق من جميع الملفات المدرجة وليس فقط تلك التي تم تنظيمها للإضافة.
check-ast
ما عليك سوى التحقق مما إذا كان تحليل الملفات على أنها بيثون صالح.
check-builtin-literals
يتطلب بناء جملة حرفيًا عند تهيئة أنواع Python المضمنة الفارغة أو الصفرية.
يسمح باستدعاء المنشئات باستخدام الوسائط الموضعية (على سبيل المثال، list('abc')
).
يسمح باستدعاء المُنشئين من مساحة الاسم builtins
( __builtin__
) ( builtins.list()
).
تجاهل هذا المتطلب لأنواع مضمنة محددة مع --ignore=type1,type2,…
.
منع بناء جملة الكلمة الرئيسية dict
باستخدام --no-allow-dict-kwargs
.
check-case-conflict
تحقق من وجود ملفات ذات أسماء قد تتعارض مع نظام ملفات غير حساس لحالة الأحرف مثل MacOS HFS+ أو Windows FAT.
check-docstring-first
يتحقق من وجود خطأ شائع في وضع التعليمات البرمجية قبل سلسلة المستندات.
check-executables-have-shebangs
التحقق من أن الملفات التنفيذية غير الثنائية لديها Shebang المناسب.
check-illegal-windows-names
تحقق من الملفات التي لا يمكن إنشاؤها على نظام التشغيل Windows.
check-json
يحاول تحميل كافة ملفات json للتحقق من بناء الجملة.
check-merge-conflict
التحقق من الملفات التي تحتوي على سلاسل تعارض الدمج.
--assume-in-merge
- يسمح بتشغيل الخطاف في حالة عدم وجود عملية دمج مستمرة
check-shebang-scripts-are-executable
التحقق من أن البرامج النصية مع shebangs قابلة للتنفيذ.
check-symlinks
التحقق من الروابط الرمزية التي لا تشير إلى أي شيء.
check-toml
يحاول تحميل كافة ملفات TOML للتحقق من بناء الجملة.
check-vcs-permalinks
يضمن أن الروابط إلى مواقع vcs هي روابط دائمة.
--additional-github-domain DOMAIN
- أضف فحصًا للمجال المحدد. يمكن تكرارها عدة مرات. على سبيل المثال، إذا كانت شركتك تستخدم GitHub Enterprise، فيمكنك استخدام شيء مثل --additional-github-domain github.example.com
check-xml
يحاول تحميل كافة ملفات XML للتحقق من بناء الجملة.
check-yaml
يحاول تحميل كافة ملفات yaml للتحقق من بناء الجملة.
--allow-multiple-documents
- السماح لملفات yaml التي تستخدم بناء جملة المستندات المتعددة
--unsafe
- بدلاً من تحميل الملفات، قم ببساطة بتحليلها من أجل بناء الجملة. يؤدي فحص بناء الجملة فقط إلى تمكين الامتدادات والبنيات غير الآمنة التي قد تكون محظورة. يؤدي استخدام هذا الخيار إلى إزالة كافة ضمانات إمكانية النقل إلى تطبيقات yaml الأخرى. يعني ضمنا --allow-multiple-documents
.
debug-statements
تحقق من واردات مصحح الأخطاء واستدعاءات py37+ breakpoint()
في مصدر بايثون.
destroyed-symlinks
يكتشف الارتباطات الرمزية التي تم تغييرها إلى ملفات عادية تحتوي على محتوى المسار الذي كان يشير إليه هذا الارتباط الرمزي. يحدث هذا عادةً على نظام التشغيل Windows عندما يقوم المستخدم باستنساخ مستودع يحتوي على روابط رمزية ولكن ليس لديه الإذن بإنشاء روابط رمزية.
detect-aws-credentials
يتحقق من وجود أسرار AWS التي قمت بإعدادها باستخدام AWS CLI. تتوفر الحجج التالية:
--credentials-file CREDENTIALS_FILE
- ملف تكوين نمط AWS CLI إضافي في موقع غير قياسي لجلب بيانات الاعتماد المكونة منه. يمكن تكرارها عدة مرات.
--allow-missing-credentials
- السماح للخطاف بالمرور عند عدم اكتشاف أي بيانات اعتماد.
detect-private-key
التحقق من وجود المفاتيح الخاصة.
double-quote-string-fixer
يستبدل هذا الخطاف السلاسل المقتبسة المزدوجة بسلاسل مقتبسة مفردة.
end-of-file-fixer
يتأكد من أن الملفات تنتهي بسطر جديد وسطر جديد فقط.
file-contents-sorter
فرز الأسطر في الملفات المحددة (الإعدادات الافتراضية أبجدية). يجب عليك توفير files
الهدف كمدخلات. لاحظ أن هذا الخطاف سيزيل الأسطر الفارغة ولا يحترم أي تعليقات. سيتم تحويل كافة الأسطر الجديدة إلى خلاصات الأسطر ( n
).
تتوفر الحجج التالية:
--ignore-case
- قم بطي الأحرف الصغيرة إلى الأحرف الكبيرة.
--unique
- تأكد من أن كل سطر فريد من نوعه.
fix-byte-order-marker
إزالة علامة ترتيب البايت UTF-8
fix-encoding-pragma
تم إهماله نظرًا لأن py2 هو EOL - استخدم pyupgrade بدلاً من ذلك.
أضف # -*- coding: utf-8 -*-
إلى الجزء العلوي من ملفات بايثون.
لإزالة تمريرة براغما الترميز --remove
(مفيدة في قاعدة بيانات python3 فقط)
forbid-new-submodules
منع إضافة وحدات git الفرعية الجديدة.
يهدف هذا إلى أن يكون مساعدًا للانتقال بعيدًا عن الوحدات الفرعية. إذا كنت تريد حظرهم بالكامل، فاستخدم forbid-submodules
forbid-submodules
يحظر أي وحدات فرعية في المستودع.
mixed-line-ending
يستبدل أو يفحص نهاية السطر المختلط.
--fix={auto,crlf,lf,no}
هذا الخيار غير متوافق مع git setup check-in LF check-out CRLF حيث أن git smudge هذا بعد استدعاء الخطاف.
auto
- يستبدل تلقائيًا نهاية السطر الأكثر تكرارًا. هذه هي الوسيطة الافتراضية.
crlf
, lf
- يفرض استبدال السطر المنتهي بـ CRLF وLF على التوالي.
no
- يتحقق مما إذا كان هناك أي سطر مختلط ينتهي دون تعديل أي ملف.
name-tests-test
التحقق من تسمية ملفات الاختبار بشكل صحيح.
--pytest
(الافتراضي): تأكد من تطابق الاختبارات مع .*_test.py
--pytest-test-first
: التأكد من تطابق الاختبارات مع test_.*.py
--django
/ --unittest
: التأكد من تطابق الاختبارات مع test.*.py
no-commit-to-branch
حماية فروع محددة من تسجيل الدخول المباشر.
استخدم args: [--branch, staging, --branch, main]
لتعيين الفرع. يتم حماية كل من main
master
افتراضيًا إذا لم يتم تعيين وسيطة فرعية.
-b
/ --branch
قد يتم تحديده عدة مرات لحماية فروع متعددة.
يمكن استخدام -p
/ --pattern
لحماية الفروع التي تطابق التعبير العادي المتوفر (على سبيل المثال --pattern, release/.*
). يمكن تحديدها عدة مرات.
لاحظ أنه يتم ضبط no-commit-to-branch
افتراضيًا على always_run
. ونتيجة لذلك، فإنه سوف يتجاهل أي إعداد files
أو exclude
أو types
أو exclude_types
. قم بتعيين always_run: false
للسماح بتخطي هذا الخطاف وفقًا لمرشحات الملفات هذه. تحذير: في هذا التكوين، سيتم دائمًا السماح بالالتزامات الفارغة ( git commit --allow-empty
) بواسطة هذا الخطاف.
pretty-format-json
التحقق من أن جميع ملفات JSON الخاصة بك جميلة. تعني كلمة "جميلة" هنا أنه تم فرز المفاتيح ووضع مسافة بادئة لها. يمكنك تكوين هذا باستخدام خيارات سطر الأوامر التالية:
--autofix
- تنسيق ملفات json تلقائيًا
--indent ...
- التحكم في المسافة البادئة (إما رقم لعدد من المسافات أو سلسلة من المسافات البيضاء). الإعدادات الافتراضية إلى مسافتين.
--no-ensure-ascii
يحافظ على أحرف Unicode بدلاً من التحويل إلى تسلسلات الهروب
--no-sort-keys
- عند الإصلاح التلقائي، احتفظ بترتيب المفاتيح الأصلي (بدلاً من فرز المفاتيح)
--top-keys comma,separated,keys
- المفاتيح التي يجب الاحتفاظ بها في أعلى التعيينات.
requirements-txt-fixer
فرز الإدخالات في Requirements.txt و Conductivity.txt وإزالة الإدخال غير الصحيح لـ pkg-resources==0.0.0
sort-simple-yaml
يقوم بفرز ملفات YAML البسيطة التي تتكون فقط من مفاتيح المستوى الأعلى، مع الحفاظ على التعليقات والكتل.
لاحظ أن sort-simple-yaml
افتراضيًا لا يطابق أي files
لأنه يفرض تنسيقًا محددًا للغاية. يجب عليك الاشتراك في ذلك عن طريق تعيين files
، على سبيل المثال:
- المعرف: ملفات yamlfiles البسيطة: ^config/simple/
trailing-whitespace
تشذيب المسافات البيضاء الزائدة.
للحفاظ على فواصل أسطر Markdown الثابتة، استخدم args: [--markdown-linebreak-ext=md]
(أو الامتدادات الأخرى التي تستخدمها ملفات markdown). إذا كنت تريد لسبب ما التعامل مع جميع الملفات كتخفيض، فاستخدم --markdown-linebreak-ext=*
.
افتراضيًا، يقوم هذا الخطاف بقص كل المسافات البيضاء من نهايات الأسطر. لتحديد مجموعة مخصصة من الأحرف لقصها بدلاً من ذلك، استخدم args: [--chars,"<chars to trim>"]
.
check-byte-order-marker
: بدلاً من ذلك استخدم علامة ترتيب البايت
إذا كنت ترغب في استخدام هذه الخطافات، فهي متوفرة أيضًا كحزمة مستقلة.
ما عليك سوى pip install pre-commit-hooks