PHPStan 1.0 جو رليز، PHP ڪوڊ لاءِ جامد تجزيي ڪندڙ

ڇهن سالن جي ترقي کان پوء، جامد تجزيه ڪندڙ PHPStan 1.0 جو پهريون مستحڪم رليز ٿيو، جيڪو توهان کي PHP ڪوڊ ۾ غلطيون ڳولڻ جي اجازت ڏئي ٿو بغير ان کي عمل ڪرڻ ۽ يونٽ ٽيسٽ استعمال ڪرڻ جي. پروجيڪٽ ڪوڊ PHP ۾ لکيل آهي ۽ MIT لائسنس تحت ورهايو ويو آهي.

تجزيه ڪندڙ 10 سطحن جي چڪاس فراهم ڪري ٿو، جنهن ۾ هر ايندڙ سطح اڳئين سطح جي صلاحيتن کي وڌائي ٿو ۽ وڌيڪ سخت چيڪ مهيا ڪري ٿو:

  • بنيادي چڪاس، اڻڄاتل طبقن جي وضاحت ڪرڻ، افعال ۽ طريقا ($ this)، اڻ ڄاڻايل متغير، ۽ دليلن جي غلط تعداد کي پاس ڪرڻ.
  • __call ۽ __get سان ممڪن طور تي اڻڄاتل متغير، نامعلوم جادو طريقن ۽ طبقن جي ملڪيت جي سڃاڻپ.
  • سڀني اظهارن ۾ اڻڄاتل طريقن جي ڳولا، $this ذريعي ڪالن تائين محدود ناهي. PHPDocs چيڪ ڪرڻ.
  • واپسي جي قسمن جي جانچ ڪندي ۽ ملڪيتن جي قسمن کي تفويض ڪرڻ.
  • بنيادي سڃاڻپ "مئل" (ڪڏهن به نه سڏيو ويو) ڪوڊ. ڪالن جي مثال جي سڃاڻپ ڪريو جيڪي هميشه غلط موٽندا آهن، "ٻيا" بلاڪ جيڪي ڪڏهن به فائر نه ڪندا آهن، ۽ واپسي کان پوء ڪوڊ.
  • طريقن ۽ ڪمن ڏانهن منتقل ٿيل دليلن جي قسمن کي جانچڻ.
  • گم ٿيل قسم جي معلومات جي تشريح بابت خبردار.
  • غلط يونين جي قسمن بابت ڊيڄاريندڙ جيڪي ٻن يا وڌيڪ قسمن جي مجموعن جي وضاحت ڪن ٿا.
  • ڪال ڪرڻ جي طريقن بابت خبردار ڪرڻ ۽ ملڪيتن تائين رسائي جي قسمن سان "نالبل".
  • "مخلوط" قسم جي استعمال جي جانچ ڪندي.

    بنيادي مسئلن جي سڃاڻپ جا مثال:

    • ڪلاسن جو وجود مثال طور استعمال ڪيو ويو، ڪيچ، ٽائيپ اشارو ۽ ٻين ٻولين جي تعمير.
    • طريقن ۽ ڪمن جي موجودگي ۽ دستيابي کي سڏيو ويندو آهي، انهي سان گڏ دليلن جو تعداد منظور ڪيو ويو آهي.
    • چيڪ ڪري رهيو آهي ته طريقو ڊيٽا کي ساڳئي قسم سان موٽائي ٿو جيئن واپسي جي اظهار ۾ بيان ڪيو ويو آهي.
    • ملڪيتن جي موجودگي ۽ نمائش تائين رسائي ٿي رهي آهي، ۽ ملڪيتن ۾ استعمال ٿيل اعلان ڪيل ۽ حقيقي ڊيٽا جي قسمن جي جانچ ڪندي.
    • اسٽرنگ فارميٽنگ بلاڪ ۾ sprintf/printf ڪالن تي منظور ٿيل پيرا ميٽرن جو تعداد درست آھي.
    • برانچنگ آپريٽرز ۽ لوپس پاران ٺاهيل اڪائونٽ بلاڪ ۾ تبديل ٿيندڙ متغيرن جو وجود.
    • بيڪار قسم جا ڪاسٽ (مثال طور "(string) 'foo'") ۽ سخت ٽيسٽ ("===" ۽ "!==") ڊيٽا تي مختلف قسمن ۽ آپريشنز سان جيڪي هميشه غلط موٽندا آهن.

    PHPStan 1.0 ۾ اهم جدت:

    • "9" چيڪ ليول تي عمل ڪيو ويو آهي، جيڪو "مخلوط" قسم جي استعمال کي جانچيندو آهي، مختلف قسمن سان فنڪشن جي استقبال کي منظم ڪرڻ جو ارادو ڪيو ويو آهي. سطح XNUMX "مخلوط" جي غير محفوظ استعمالن جي نشاندهي ڪري ٿو، جيئن "ملي" قسم جي قدرن کي ٻئي قسم ڏانهن منتقل ڪرڻ، "ملي" قسم جا طريقا سڏڻ، ۽ ان جي ملڪيت تائين رسائي ڇاڪاڻ ته اهي موجود نه هوندا.
    • @phpstan-pure ۽ @phpstan-impure تشريحون استعمال ڪندي ڪنٽرول ڪريو ته ڇا موٽڻ جون قيمتون هڪجهڙيون فنڪشن ڪالن لاءِ هڪجهڙيون آهن.
    • Type analysis in try-catch-finally constructs استعمال ڪندي @throws annotations.
    • بيان ڪيل پر غير استعمال ٿيل اندروني (نجي) ملڪيتن، طريقن ۽ مستقل جي سڃاڻپ.
    • صفن جي ڪمن لاءِ نامناسب ڪال بڪ پاس ڪرڻ جهڙوڪ array_map ۽ usort.
    • ٽائپ انسپيڪشن گم ٿيل ٽائپ هينٽ اينوٽيشنز لاءِ.
    • PHPDocs سان ٺهڪندڙ قسم جا بيان ٺاهيا ويا، PHPDocs ۾ استعمال ٿيڻ جي غلطي پيغامن جي قسمن کي اجازت ڏين ٿا.

    جو ذريعو: opennet.ru

  • تبصرو شامل ڪريو