بعد ست سنوات من التطوير ، تم إطلاق أول إصدار مستقر من محلل PHPStan 1.0 الثابت ، والذي يسمح لك بالعثور على أخطاء في كود PHP دون تنفيذه واستخدام اختبارات الوحدة. تمت كتابة كود المشروع بلغة PHP وتوزيعه بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
يوفر المحلل 10 مستويات من التحقق ، حيث يعمل كل مستوى لاحق على توسيع قدرات المستوى السابق ويوفر عمليات فحص أكثر صرامة:
أمثلة على المشاكل الأساسية التي تم تحديدها:
- وجود فئات مستخدمة في المثال من ، والتقاط ، وتلميحات الكتابة وتراكيب اللغة الأخرى.
- وجود وتوافر الأساليب والوظائف التي تم استدعاؤها ، بالإضافة إلى عدد الوسائط التي تم تمريرها.
- التحقق مما إذا كانت الطريقة تقوم بإرجاع بيانات من نفس النوع كما هو محدد في بيان الإرجاع.
- وجود وإبراز الخصائص التي يتم الوصول إليها ، والتحقق من صحة أنواع البيانات المعلنة والفعلية المستخدمة في الخصائص.
- صحة عدد المعلمات التي تم تمريرها إلى مكالمات sprintf / printf في منسق السلسلة.
- وجود المتغيرات مع الأخذ بعين الاعتبار الكتل المكونة من مشغلي الفروع والحلقات.
- الملصقات عديمة الفائدة (مثل "(سلسلة) 'foo'") وفحوصات صارمة ("===" و "! ==") على البيانات ذات الأنواع المختلفة والمعاملات التي تعرض دائمًا خطأ.
ابتكارات PHPStan 1.0 الرئيسية:
- يتم تنفيذ مستوى الفحص "9" ، والذي يتحقق من استخدام النوع "المختلط" ، والذي يهدف إلى تنظيم استقبال المعلمات بأنواع مختلفة بواسطة الوظيفة. يكشف المستوى التاسع عن الاستخدامات غير الآمنة لـ "مختلط" ، مثل تمرير قيم من النوع "مختلط" إلى نوع آخر ، واستدعاء طرق من النوع "مختلط" ، والوصول إلى خصائصها لأنها قد لا تكون موجودة.
- التحكم في عمليات التحقق من هوية قيمة الإرجاع لاستدعاءات دالة متطابقة باستخدام التعليقات التوضيحية @ phpstan-pure و @ phpstan-impure.
- اكتب التحليل في بنيات try-catch-finally باستخدام التعليقات التوضيحيةthrows.
- تحديد الخصائص والطرق والثوابت الداخلية (الخاصة) المحددة ولكن غير المستخدمة.
- تمرير عمليات رد نداء غير متوافقة إلى دوال مصفوفة مثل array_map و usort.
- اكتب الاستقصاء عن التعليقات التوضيحية التوضيحية المفقودة من النوع.
- تم جعل تعريفات النوع متوافقة مع PHPDocs ، مما يسمح لـ PHPDocs باستخدام أنواع من رسائل الخطأ.
المصدر: opennet.ru