Izdanje PHPStan 1.0, statičkog analizatora za PHP kod

Nakon šest godina razvoja, došlo je do prvog stabilnog izdanja statičkog analizatora PHPStan 1.0, koji vam omogućuje pronalaženje grešaka u PHP kodu bez njegovog izvršavanja i korištenja jediničnih testova. Kôd projekta je napisan u PHP-u i distribuiran pod licencom MIT-a.

Analizator nudi 10 razina provjere, pri čemu svaka sljedeća razina proširuje mogućnosti prethodne i pruža strože provjere:

  • Osnovne provjere, definiranje nepoznatih klasa, funkcija i metoda ($this), nedefinirane varijable i prosljeđivanje pogrešnog broja argumenata.
  • Identificiranje eventualno nedefiniranih varijabli, nepoznatih čarobnih metoda i svojstava klasa s __call i __get.
  • Otkrivanje nepoznatih metoda u svim izrazima, ne ograničeno na pozive putem $this. Provjeravam PHPDocs.
  • Provjera povratnih tipova i dodjeljivanje tipova svojstvima.
  • Osnovna identifikacija "mrtvog" (nikad pozvanog) koda. Identificirajte pozive instanceof koji uvijek vraćaju false, blokove "else" koji se nikada ne aktiviraju i kodirajte nakon povratka.
  • Provjera vrsta argumenata proslijeđenih metodama i funkcijama.
  • Upozorenje o primjedbama s informacijama koje nedostaju.
  • Upozorenje o netočnim tipovima unije koji definiraju zbirke dvaju ili više tipova.
  • Upozorenje o pozivanju metoda i pristupa svojstvima s tipovima "nullable".
  • Provjera korištenja "mješovitog" tipa.

    Primjeri identificiranih temeljnih problema:

    • Postojanje klasa koje se koriste u instanceof, catch, typehints i drugim jezičnim konstrukcijama.
    • Postojanje i dostupnost pozvanih metoda i funkcija, kao i broj proslijeđenih argumenata.
    • Provjera vraća li metoda podatke iste vrste kao što je definirano u povratnom izrazu.
    • Postojanje i vidljivost svojstava kojima se pristupa te provjera deklariranih i stvarnih tipova podataka koji se koriste u svojstvima.
    • Broj parametara proslijeđenih pozivima sprintf/printf u bloku za oblikovanje niza je točan.
    • Postojanje varijabli uzimajući u obzir blokove formirane operatorima grananja i petljama.
    • Beskorisni tipovi (npr. "(string) 'foo'") i strogi testovi ("===" i "!==") na podacima s različitim tipovima i operandima koji uvijek vraćaju false.

    Ključne inovacije u PHPStan 1.0:

    • Implementirana je razina provjere "9", koja provjerava korištenje "mješovitog" tipa, namijenjenog organiziranju prijema parametara s različitim tipovima funkcije. Razina devet identificira nesigurne upotrebe "mixed", kao što je prosljeđivanje vrijednosti tipa "mixed" drugom tipu, pozivanje metoda tipa "mixed" i pristupanje njegovim svojstvima jer ona možda ne postoje.
    • Kontrolirajte jesu li povratne vrijednosti identične za identične pozive funkcija pomoću napomena @phpstan-pure i @phpstan-impure.
    • Analiza tipa u konstrukcijama try-catch-finally pomoću @throws komentara.
    • Identifikacija definiranih ali nekorištenih internih (privatnih) svojstava, metoda i konstanti.
    • Prosljeđivanje nekompatibilnih povratnih poziva funkcijama polja kao što su array_map i usort.
    • Provjera tipa za nedostajuće primjedbe typehinta.
    • Napravljene su deklaracije tipa kompatibilne s PHPDocsom, dopuštajući da se tipovi iz poruka o pogrešci koriste u PHPDocsu.

    Izvor: opennet.ru

  • Dodajte komentar