عبدالفتاح الصلوي

تحقيقات الفيل - صيد الأخطاء وإصلاحها في PHPStan

كتبها : عبدالفتاح الصلوي / في رصيف : PHP

تحقيقات الفيل - صيد الأخطاء وإصلاحها في PHPStan

 عزيزي المبرمج ، انها مرحلة المسائلة حيث  يتم فحص الكود من قبل الفيل المحقق احذر أن تغضبه .

PHPStan

هذه ليست إحدى دول الاتحاد السوفيتي السابق والتي تنتهي تسميتها ب (ان) 😅 بل سنحدثك عن الاداة الاكثر فاعاية في مكافحة البق والحشرات التي تجد تعليماتك البرمجية مرتعاً خصباً لتنمو وتتكاثر وتسبب لك الأرق والصداع طوال الوقت. قل كفى للمشاكل التي تضعك في مواقف محرجة مع عملائك وابدأ   في تنظيف وتنظيم اكوادك كالمحترفين. ودع عزيزي لقب الفلاحين الذي يطلق عليك لانك تستخدم محبوبة الممطورين php .
 
تقوم PHPStan بفحص الكود والبحث عن الأخطاء غير الواضحة والتي قد تخدعك عزيزي المبرمج، كل ذلك قبل أن تقع الفأس بالرأس .حتى تلك الأخطاء التي لا تكتشفها وحدات الاختبار.

تحليل الكود :

تقوم phpstan بإخضاع الكود لعدة قواعد، تتدرج تلك القواعد لعدة مستويات من الصرامة تبدأ من الصفر  بل من تحت الصفر احياناً وتحديداً -١ الى أن تصل الى المستوى العاشر . عندما تصل الى تلك المرحلة  هذا يعني بانك وصلت الى لفل الوحش واصبحت تنين مجنح. وهنا تنتصر وتنقذ الأميرة.

التنزيل :

يمكن تنزيل عن طريق الcomposer
composer require --dev phpstan/phpstan

وهناك طرق أخرى يمكنك مراجعة التوثيق لمعرفتها. فنحن في عجلة من أمرنا هيا بنا لاول عملية فحص.
يتمحور عمل الاداة على امر analyse  حيث يتم تحليل الكود في المشروع باكمله او ملف او مجلد معين .
مثال للاستخدام :

vendor/bin/phpstan analyse src tests


هنا سيتم تحليل الكود في مجلدي src و test افتراضياً يتم التحليل في المستوى 0 . ولكن ماذا يعني هذا المستوى ؟ اذا دعنا نتعرف على قوانين الوحش العشرة .

قواعد وقوانين الوحش العشرة :

0 - المستوى صفر  في هذا المستوى يتم فحص الكود والتأكد من الاخطاء الاساسية ، مثل الاصناف او الكلاسات والدوال الغير معرفة ، وايضاً اخطاء استخدام $this وايضاً يتم فحصص عدد المعاملات المرسلة للدوال وايضا المتغيرات الغير معرفة .
1- المستوى 1 : في هذا المستوى يتم فحص المتغيرات الغير معروفة وايضا الدوال السحرية وخصائص الاصناف (الكلاسات) الدوال السحرية مثل __call و __get.
2- هنا يتم تحليل دوال الكلاسات وفحص التعبيرات فيها والتحقق منها وفقا لphpdoc.
3- هنا يتم فحص انواع البيانات في خصائص الاصناف وما الى ذلك.
4- هنا مرحلة البحث عن الاموات حرفيا وفيها يتم تحليل الكود بحثا عن القيم التي قد تيد قيم خاطئة دائماً وغيرها من فحص للانواع، بالاضافة الى تلك الاكواد المهملة ولا تنفذ اما لان الشرط لا يتحقق دائما او لانها مكتوبة بعد اعادة القيم في الدوال عبر return .
5- هنا مستوى محاكم التفتيش ، حيث يتم فحص انواع الوسائط المرسلة للطرق والدوال.
6- مستوى المخبر ، حيث سيتم عمل تقرير بتلك الدوال والمتغيرات التي لا تملك بطائق تلميح typehints.
7- في هذا المستوى يتطور المخبر ويبحث عن اجزاء من الانواع المختلفة union type والحالات الخاطئة الأخرى.
8- يتم عمل بلاغ عن أي وصول لقيم خالية nullable او محاولة لاستدعاء  وصول غير مصرح  عبر احدى الطرق method.
9- هنا الوضع الصارم لمنع الاخطلاط 😅 في الانواع mixed . حيث لا يسمح الا لتلك العمليات التي تتم عبر الانواع المختلطة (يسمح للعوائل والمتزوجين الحاملين لما يثبت الارتباط).

بالتأكيد ان شاء الله سنعود لنلقي مزيداً من الضوء حول الموضوع ونطبق بعض الامثلة وكذالك للتعرف larastan الاخت الجميلة المخصصة ل laravel.

إلى ذلك الحين يمكن الإطلاع على التوثيق الرسمي عبر الرابط https://phpstan.org

علامات ذات صلة :