قواعد Phpstan للكشف عن المكالمات غير المسموح بها والمزيد ، دون تشغيل الكود.
هناك بعض الوظائف والأساليب والثوابت التي لا ينبغي استخدامها في رمز الإنتاج. أحد الأمثلة الجيدة هو var_dump() ، وغالبًا ما يتم استخدامه لتصحيح مشاكل التصحيح بسرعة ولكن يجب إزالته قبل ارتكاب الرمز. وأحيانًا لا يكون الأمر كذلك.
مثال آخر سيكون مسجل عام. لنفترض أنك تستخدم إحدى مكتبات التسجيل العامة ولكن لديك مسجل خاص بك من شأنه أن يضيف المزيد من المعلومات ، أو تعقيم البيانات ، قبل الاتصال بالمسجل العام. يجب ألا يتصل رمزك بالمسجل العام مباشرة ولكن يجب أن يستخدم المسجل المخصص بدلاً من ذلك.
سوف يكتشف امتداد Phpstan هذا الاستخدام ، إذا تم تكوينه. تجدر الإشارة إلى أن هذا الامتداد ليس وسيلة للدفاع ضد المطورين العدائيين أو اكتشافهم ، حيث يمكنهم تعويض المكالمات على سبيل المثال. من المفترض أن يكون هذا الامتداد زوجًا آخر من العيون ، ويكتشف أخطائك ، ولا يهدف إلى اكتشاف كل شيء.
ستوفر الاختبارات أمثلة ما تم اكتشافه حاليًا . إذا لم تتم تغطيتها باختبارات ، فقد تكون كذلك ، ولكن على الأرجح لن يتم اكتشافها. *Test.php ملفات هي الاختبارات ، والبدء مع تلك ، رمز الاختبار الذي تم تحليله في SRC ، فئات الاختبار المطلوبة في libs.
لا تتردد في تقديم المشكلات أو إنشاء طلبات سحب إذا كنت بحاجة إلى اكتشاف المزيد من المكالمات.
قم بتثبيت الامتداد باستخدام الملحن:
composer require --dev spaze/phpstan-disallowed-calls
Phpstan ، أداة التحليل الثابت PHP ، هي شرط.
إذا كنت تستخدم phpstan/extrup-insthaller ، فسيتم تعيينك جميعًا ويمكنك تخطيه إلى التكوين.
للتثبيت اليدوي ، أضف هذا إلى phpstan.neon :
includes :
- vendor/spaze/phpstan-disallowed-calls/extension.neon يمكنك البدء بملفات التكوين المجمعة.
يدعم الامتداد القواعد المخصصة متعددة الاستخدامات أيضًا.
دعنا نقول أنك قد رفضت foo() بقواعد مخصصة. لكنك تريد إعادة السماح به عند استخدامها في غلافك المخصص ، أو عندما تساوي المعلمة الأولى ، أو لا ، قيمة محددة. يوفر الامتداد طرقًا متعددة للقيام بذلك:
تستخدم السمات إعادة الطالب تكوينًا مماثلًا.
استخدم المولد المقدم لإنشاء مقتطف تكوين من PHP's disable_functions & disable_classes .
------ --------------------------------------------------------
Line libraries/Report/Processor/CertificateTransparency.php
------ --------------------------------------------------------
116 Calling var_dump() is forbidden, use logger instead
------ --------------------------------------------------------
تتم مطابقة أسماء الوظائف ، وأسماء الأسلوب ، وأسماء الفصول ، ومساحات الأسماء بغض النظر عن حالتها (ستجد عدم استدعاء print_r أيضًا مكالمات print_R ) ، في حين أن أي شيء آخر مثل الثوابت وأسماء الملفات والمسارات ليس كذلك.
يمكنك أيضًا استخدام هذا الامتداد دون أي قواعد أخرى من Phpstan. قد يكون هذا مفيدًا إذا كنت تريد على سبيل المثال التحقق من رمز الطرف الثالث لبعض المكالمات أو استخدام شيء ما.
إذا كنت ترغب في المساهمة (رائع ، شكرًا!) ، يجب عليك إضافة/تشغيل الاختبارات لمساهماتك. أول تثبيت تبعيات DEV عن طريق تشغيل composer install ، ثم قم بتشغيل اختبارات phpunit مع composer test ، انظر scripts في composer.json . يتم إجراء الاختبارات أيضًا على github مع إجراءات على كل دفعة.
يمكنك إصلاح مشكلات نمط الترميز تلقائيًا عن طريق تشغيل composer cs-fix .
يوجد مشروع مشابه مع تكوين مختلف قليلاً ، تم إنشاؤه في نفس الوقت تقريبًا (مجرد فرق قليلة): رمز Phpstan المحظور.