PHP kodu üçün statik analizator olan PHPStan 1.0-ın buraxılışı

Altı illik inkişafdan sonra PHPStan 1.0 statik analizatorunun ilk stabil buraxılışı baş verdi ki, bu da PHP kodunu icra etmədən və vahid testlərindən istifadə etmədən səhvləri tapmağa imkan verir. Layihə kodu PHP-də yazılır və MIT lisenziyası ilə paylanır.

Analizator 10 yoxlama səviyyəsini təmin edir, burada hər bir sonrakı səviyyə əvvəlkinin imkanlarını genişləndirir və daha ciddi yoxlamalar təmin edir:

  • Əsas yoxlamalar, naməlum siniflərin, funksiyaların və metodların müəyyən edilməsi ($this), təyin olunmamış dəyişənlər və yanlış sayda arqumentlərin ötürülməsi.
  • __call və __get ilə mümkün qeyri-müəyyən dəyişənləri, naməlum sehrli metodları və sinif xüsusiyyətlərini tapmaq.
  • $this vasitəsilə zəng etməklə məhdudlaşmayan bütün ifadələrdə naməlum metodların aşkarlanması. PHPDocs yoxlanılır.
  • Qayıdış növlərinin yoxlanılması və xassələrə növlərin təyin edilməsi.
  • "Ölü" (heç vaxt çağırılmamış) kodun əsas aşkarlanması. Həmişə yalan qaytaran, heç vaxt başqa blokları işə salmayan və qaytarıldıqdan sonra kodla gələn zəngləri aşkar edin.
  • Metod və funksiyalara ötürülən arqument növlərinin yoxlanılması.
  • Çatışmayan növ məlumat annotasiyaları haqqında xəbərdarlıq.
  • İki və ya daha çox növün kolleksiyalarını müəyyən edən etibarsız birləşmə növləri haqqında xəbərdarlıq.
  • Çağırış üsulları və "nullable" tipli xassələrə giriş haqqında xəbərdarlıq.
  • "Qarışıq" növündən istifadənin yoxlanılması.

    Müəyyən edilmiş əsas problemlərin nümunələri:

    • instanceof, catch, typehints və digər dil konstruksiyalarında istifadə olunan siniflərin mövcudluğu.
    • Çağırılan metodların və funksiyaların mövcudluğu və mövcudluğu, həmçinin ötürülən arqumentlərin sayı.
    • Metodun qaytarma ifadəsində müəyyən edilmiş eyni tipli məlumatları qaytarıb-qaytarmadığını yoxlamaq.
    • Əldə olunan xassələrin mövcudluğu və görünməsi, xassələrdə istifadə olunan elan edilmiş və faktiki məlumat növlərinin yoxlanılması.
    • Sətir formatlayıcısında sprintf/printf çağırışlarına ötürülən parametrlərin sayının düzgünlüyü.
    • Budaq operatorları və looplar tərəfindən yaradılmış blokları nəzərə alaraq dəyişənlərin mövcudluğu.
    • Fərqli tiplər və operandlar həmişə yalan qaytaran verilənlər üzərində yararsız yazı tipləri ("(string) 'foo'" kimi) və ciddi yoxlamalar ("===" və "!==").

    PHPStan 1.0-ın əsas yenilikləri:

    • Funksiya tərəfindən müxtəlif tipli parametrlərin qəbulunu təşkil etmək üçün nəzərdə tutulmuş "qarışıq" növün istifadəsini yoxlayan "9" yoxlama səviyyəsi həyata keçirilir. Doqquzuncu səviyyə "qarışıq" növünün təhlükəli istifadələrini ifşa edir, məsələn, "qarışıq" tipli dəyərləri başqa bir növə ötürmək, "qarışıq" tipli metodları çağırmaq və mövcud olmaya biləcəyi üçün onun xassələrinə daxil olmaq.
    • @phpstan-pure və @phpstan-impure annotasiyalarından istifadə edərək eyni funksiya çağırışları üçün qaytarılan dəyər identifikasiyasına nəzarət edir.
    • @throws annotasiyalarından istifadə edərək try-catch-finally konstruksiyalarında tip analizi.
    • Müəyyən edilmiş, lakin istifadə olunmayan daxili (özəl) xassələrin, metodların və sabitlərin müəyyən edilməsi.
    • Array_map və usort kimi massiv funksiyalarına uyğun olmayan geri çağırışların ötürülməsi.
    • Çatışmayan yazı ipucu annotasiyaları üçün növ yoxlaması.
    • Növ bəyannamələri PHPDocs ilə uyğunlaşdırılaraq, PHPDocs-a xəta mesajlarından növlərdən istifadə etməyə imkan verir.

    Mənbə: opennet.ru

  • Добавить комментарий