PHP kodi uchun statik analizator PHPStan 1.0 ning chiqarilishi

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:

  • Asosiy tekshiruvlar, noma'lum sinflar, funksiyalar va usullarni ($this), aniqlanmagan o'zgaruvchilarni aniqlash va noto'g'ri miqdordagi argumentlarni uzatish.
  • __call va __get yordamida potentsial aniqlanmagan o'zgaruvchilarni, noma'lum sehrli usullarni va sinf xususiyatlarini aniqlash.
  • $this orqali chaqiruvlar bilan cheklanmagan holda, barcha ifodalarda noma'lum usullarni aniqlaydi. PHPDocs tekshiruvchisi.
  • Qaytish turlarini tekshirish va xususiyatlarga turlarni tayinlash.
  • "O'lik" (hech qachon chaqirilmagan) kodni asosiy aniqlash. Har doim noto'g'ri javob qaytaradigan chaqiruvlar misollarini, hech qachon ishga tushmaydigan "else" bloklarini va qaytarish operatorlaridan keyin kodni aniqlash.
  • Metodlar va funksiyalarga uzatiladigan argumentlar turlarini tekshirish.
  • Tur ma'lumotlari bilan izohlarning yo'qligi haqida ogohlantirish.
  • Ikki yoki undan ortiq turdagi to'plamlarni belgilaydigan yaroqsiz birlashma turlari haqida ogohlantirish.
  • Null turdagi xususiyatlarga ega usullarni chaqirish va ularga kirish haqida ogohlantirish.
  • "Aralash" turdan foydalanishni tekshirish.

    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

  • DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster