Olti yillik ishlab chiqishdan so'ng, PHPStan 1.0 statik analizatorining birinchi barqaror versiyasi chiqarildi. U sizga PHP kodidagi xatolarni uni bajarmasdan yoki birlik testlaridan foydalanmasdan topish imkonini beradi. Loyiha kodi PHP tilida yozilgan va MIT litsenziyasi ostida tarqatiladi.
Analizator 10 ta tekshirish darajasini ta'minlaydi, har bir keyingi daraja avvalgisining imkoniyatlarini kengaytiradi va yanada qat'iyroq tekshirishlarni ta'minlaydi:
Aniqlangan asosiy muammolarga misollar:
- instanceof, catch, typehints va boshqa til konstruktsiyalarida ishlatiladigan sinflarning mavjudligi.
- Chaqirilayotgan usullar va funksiyalarning mavjudligi va mavjudligi, shuningdek, uzatilayotgan argumentlar soni.
- Usul return operatorida belgilanganidek bir xil turdagi ma'lumotlarni qaytaradimi yoki yo'qligini tekshiradi.
- Kirish mumkin bo'lgan xususiyatlarning mavjudligi va ko'rinishi, shuningdek, xususiyatlarda ishlatiladigan e'lon qilingan va haqiqiy ma'lumotlar turlarini tekshirish.
- Satr formati blokida sprintf/printf chaqiruvlariga o'tkazilgan parametrlarning to'g'ri soni.
- Tarmoqlanuvchi operatorlar va sikllar tomonidan hosil qilingan bloklarni hisobga olgan holda o'zgaruvchilarning mavjudligi.
- Foydasiz turdagi kastlar (masalan, "(string) 'foo'") va har doim noto'g'ri qiymatni qaytaradigan turli xil turdagi va operandlarga ega ma'lumotlar ustida qat'iy tekshiruvlar ("===" va "!==").
PHPStan 1.0 ning asosiy xususiyatlari:
- "9" tasdiqlash darajasi joriy etildi, u turli xil parametrlarni qabul qiluvchi funktsiyalarni joylashtirish uchun mo'ljallangan "aralash" turdan foydalanishni tekshiradi. 9-daraja "aralash" turning xavfli ishlatilishini aniqlaydi, masalan, "aralash" turning qiymatlarini boshqa turga o'tkazish, "aralash" turning usullarini chaqirish va uning xususiyatlariga kirish, chunki ular mavjud bo'lmasligi mumkin.
- @phpstan-pure va @phpstan-impure annotatsiyalaridan foydalanib, bir xil funksiya chaqiruvlari uchun bir xil qaytish qiymatlarini tekshirishni boshqarish.
- @throws annotatsiyalaridan foydalanib, try-catch-finally konstruktsiyalarida tip tahlili.
- Aniqlangan, ammo ishlatilmagan ichki (xususiy) xususiyatlar, usullar va konstantalarni aniqlash.
- array_map va usort kabi massivlarni qayta ishlash funktsiyalariga mos kelmaydigan qayta chaqiruvlarni o'tkazish.
- Yo'qolgan shrift izohlarini tekshiring.
- Tur tavsiflari endi PHPDocs bilan mos keladi, bu sizga PHPDocs-dagi xato xabarlaridagi turlardan foydalanish imkonini beradi.
Manba: opennet.ru
