PHP kodi uchun statik analizator PHPStan 1.0 ning chiqarilishi

Olti yillik rivojlanishdan so'ng PHPStan 1.0 statik analizatorining birinchi barqaror chiqarilishi bo'lib o'tdi, bu sizga PHP kodidagi xatolarni uni bajarmasdan va birlik testlaridan foydalanmasdan topish imkonini beradi. Loyiha kodi PHP da yozilgan va MIT litsenziyasi ostida tarqatiladi.

Analizator 10 ta tekshirish darajasini ta'minlaydi, bunda har bir keyingi daraja oldingisining imkoniyatlarini kengaytiradi va yanada qattiqroq tekshiruvlarni ta'minlaydi:

  • Asosiy tekshiruvlar, noma'lum sinflar, funktsiyalar va usullarni aniqlash ($this), aniqlanmagan o'zgaruvchilar va noto'g'ri argumentlar sonini o'tkazish.
  • Ehtimol, aniqlanmagan o'zgaruvchilarni, noma'lum sehrli usullarni va __call va __get bilan sinflarning xususiyatlarini aniqlash.
  • $this orqali qo'ng'iroqlar bilan cheklanmagan barcha ifodalarda noma'lum usullarni aniqlash. PHPDocs tekshirilmoqda.
  • Qaytish turlarini tekshirish va xossalarga turlarni belgilash.
  • "O'lik" (hech qachon chaqirilmagan) kodining asosiy identifikatsiyasi. Har doim yolg'on qaytaradigan qo'ng'iroqlar misolini, hech qachon yonmaydigan "else" bloklarini va qaytib kelgandan keyin kodni aniqlang.
  • Usul va funksiyalarga berilgan argumentlar turlarini tekshirish.
  • Yo'qolgan turdagi ma'lumot izohlari haqida ogohlantirish.
  • Ikki yoki undan ortiq turdagi to'plamlarni belgilaydigan noto'g'ri birlashma turlari haqida ogohlantirish.
  • Qo'ng'iroq usullari va "nullable" turlari bilan xususiyatlarga kirish haqida ogohlantirish.
  • "Aralash" turdagi foydalanishni tekshirish.

    Aniqlangan asosiy muammolarga misollar:

    • Instanceof, catch, typehints va boshqa til konstruksiyalarida ishlatiladigan sinflarning mavjudligi.
    • Chaqiriladigan usullar va funktsiyalarning mavjudligi va mavjudligi, shuningdek, o'tkazilgan argumentlar soni.
    • Usul qaytish ifodasida aniqlangan bir xil turdagi ma'lumotlarni qaytarishini tekshirish.
    • Kiritilgan xususiyatlarning mavjudligi va ko'rinishi, xususiyatlarda ishlatiladigan e'lon qilingan va haqiqiy ma'lumotlar turlarini tekshirish.
    • String formatlash blokidagi sprintf/printf qo'ng'iroqlariga o'tkazilgan parametrlar soni to'g'ri.
    • Tarmoqlanuvchi operatorlar va tsikllar tomonidan tuzilgan bloklarni hisobga olgan holda o'zgaruvchilarning mavjudligi.
    • Foydasiz turdagi translatsiyalar (masalan, "(string) 'foo'") va har doim yolg'onni qaytaradigan har xil turdagi va operandlarga ega bo'lgan ma'lumotlarning qattiq testlari ("===" va "!==").

    PHPStan 1.0 dagi asosiy yangiliklar:

    • Har xil turdagi parametrlarni funktsiyani qabul qilishni tashkil qilish uchun mo'ljallangan "aralash" turidan foydalanishni tekshiradigan "9" tekshirish darajasi amalga oshirildi. XNUMX-daraja "aralash" dan xavfli foydalanishni aniqlaydi, masalan, "aralash" turdagi qiymatlarni boshqa turga o'tkazish, "aralash" turdagi usullarni chaqirish va ular mavjud bo'lmagani uchun uning xususiyatlariga kirish.
    • @phpstan-pure va @phpstan-impure izohlari yordamida bir xil funktsiya chaqiruvlari uchun qaytarish qiymatlari bir xil yoki yo'qligini boshqaring.
    • Try-catch-finally konstruksiyalarida @throws izohlari yordamida tahlil qiling.
    • Aniqlangan, lekin foydalanilmagan ichki (xususiy) xususiyatlarni, usullarini va konstantalarini aniqlash.
    • array_map va usort kabi massiv funksiyalariga mos kelmaydigan qayta qoβ€˜ngβ€˜iroqlarni oβ€˜tkazish.
    • Yo'qolgan yozuv izohlari uchun turdagi tekshiruv.
    • PHPDocs bilan mos keladigan turdagi deklaratsiyalar yaratildi, bu esa xato xabarlari turlaridan PHPDocs da foydalanishga imkon beradi.

    Manba: opennet.ru

  • a Izoh qo'shish