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:
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