إطلاق PHPStan 1.0 ، محلل ثابت لرمز PHP

بعد ست سنوات من التطوير ، تم إطلاق أول إصدار مستقر من محلل PHPStan 1.0 الثابت ، والذي يسمح لك بالعثور على أخطاء في كود PHP دون تنفيذه واستخدام اختبارات الوحدة. تمت كتابة كود المشروع بلغة PHP وتوزيعه بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.

يوفر المحلل 10 مستويات من التحقق ، حيث يعمل كل مستوى لاحق على توسيع قدرات المستوى السابق ويوفر عمليات فحص أكثر صرامة:

  • عمليات التحقق الأساسية ، وتحديد الفئات والوظائف والأساليب غير المعروفة ($ this) ، والمتغيرات غير المحددة ، وتمرير عدد خاطئ من الوسائط.
  • العثور على متغيرات يحتمل أن تكون غير محددة ، وطرق سحرية غير معروفة وخصائص الفئة باستخدام __call و __get.
  • الكشف عن الأساليب غير المعروفة في جميع التعبيرات ، ولا يقتصر على الاتصال عبر $ this. التحقق من PHPDocs.
  • التحقق من أنواع الإرجاع وتخصيص الأنواع للخصائص.
  • الاكتشاف الأساسي للشفرة "الميتة" (التي لم يتم استدعاؤها مطلقًا). كشف المكالمات إلى exampleof الذي يعيد دائمًا خطأ ، ولا يطلق كتل أخرى مطلقًا ، ويرمز بعد العودة.
  • التحقق من أنواع الوسائط التي تم تمريرها إلى الطرق والوظائف.
  • تحذير حول التعليقات التوضيحية لمعلومات النوع المفقودة.
  • تحذير بشأن أنواع الاتحاد غير الصالحة التي تحدد مجموعات من نوعين أو أكثر.
  • تحذير حول طرق الاتصال والوصول إلى الخصائص بأنواع "nullable".
  • التحقق من استخدام النوع "المختلط".

    أمثلة على المشاكل الأساسية التي تم تحديدها:

    • وجود فئات مستخدمة في المثال من ، والتقاط ، وتلميحات الكتابة وتراكيب اللغة الأخرى.
    • وجود وتوافر الأساليب والوظائف التي تم استدعاؤها ، بالإضافة إلى عدد الوسائط التي تم تمريرها.
    • التحقق مما إذا كانت الطريقة تقوم بإرجاع بيانات من نفس النوع كما هو محدد في بيان الإرجاع.
    • وجود وإبراز الخصائص التي يتم الوصول إليها ، والتحقق من صحة أنواع البيانات المعلنة والفعلية المستخدمة في الخصائص.
    • صحة عدد المعلمات التي تم تمريرها إلى مكالمات sprintf / printf في منسق السلسلة.
    • وجود المتغيرات مع الأخذ بعين الاعتبار الكتل المكونة من مشغلي الفروع والحلقات.
    • الملصقات عديمة الفائدة (مثل "(سلسلة) 'foo'") وفحوصات صارمة ("===" و "! ==") على البيانات ذات الأنواع المختلفة والمعاملات التي تعرض دائمًا خطأ.

    ابتكارات PHPStan 1.0 الرئيسية:

    • يتم تنفيذ مستوى الفحص "9" ، والذي يتحقق من استخدام النوع "المختلط" ، والذي يهدف إلى تنظيم استقبال المعلمات بأنواع مختلفة بواسطة الوظيفة. يكشف المستوى التاسع عن الاستخدامات غير الآمنة لـ "مختلط" ، مثل تمرير قيم من النوع "مختلط" إلى نوع آخر ، واستدعاء طرق من النوع "مختلط" ، والوصول إلى خصائصها لأنها قد لا تكون موجودة.
    • التحكم في عمليات التحقق من هوية قيمة الإرجاع لاستدعاءات دالة متطابقة باستخدام التعليقات التوضيحية @ phpstan-pure و @ phpstan-impure.
    • اكتب التحليل في بنيات try-catch-finally باستخدام التعليقات التوضيحيةthrows.
    • تحديد الخصائص والطرق والثوابت الداخلية (الخاصة) المحددة ولكن غير المستخدمة.
    • تمرير عمليات رد نداء غير متوافقة إلى دوال مصفوفة مثل array_map و usort.
    • اكتب الاستقصاء عن التعليقات التوضيحية التوضيحية المفقودة من النوع.
    • تم جعل تعريفات النوع متوافقة مع PHPDocs ، مما يسمح لـ PHPDocs باستخدام أنواع من رسائل الخطأ.

    المصدر: opennet.ru

  • إضافة تعليق