A PHPStan 1.0 kiadása, statikus kódellenőrző PHP nyelven

Hat év fejlesztés után megjelent a PHPStan 1.0 első stabil verziója, amely lehetővé teszi a PHP nyelvű kód hibáinak megtalálását anélkül, hogy végrehajtanánk azt vagy unit teszteket használnánk. A projekt kódja PHP nyelven íródott, és MIT licenc alatt terjesztik.

Az elemző 10 ellenőrzési szintet kínál, ahol minden egyes következő szint kibővíti az előző lehetőségeit és szigorúbb ellenőrzéseket biztosít:

  • Alapellenőrzések, ismeretlen osztályok, funkciók és metódusok ($this), nem definiált változók, valamint a hibás számú argumentum átadása.
  • Valószínűleg nem definiált változók, ismeretlen mágikus metódusok és osztályváltozók (__call és __get) észlelése.
  • Ismeretlen metódusok észlelése minden kifejezésben, nem korlátozva a $this használatára. PHPDocs ellenőrzési lehetőségek.
  • Visszatérési típusok és a tulajdonságok típusainak ellenőrzése.
  • Alapvető «halott» (soha nem meghívott) kód észlelése. Az instanceof hívások, amelyek mindig false értéket adnak vissza, a «máskülönben» blokkok, amelyek soha nem érvényesülnek és a return utáni kód észlelése.
  • Argumentumok típusainak ellenőrzése, amelyeket metódusokba és funkciókba adunk át.
  • Figyelmeztetés a típinformációk nélküli annotációk hiányáról.
  • Figyelmeztetés hibás union-típusokról, amelyek két vagy több típust definiálnak.
  • Figyelmeztetés «nullable» típusokkal rendelkező metódusok hívására és tulajdonságok elérésére.
  • A «mixed» típus használatának ellenőrzése.

    Példák a feltárt alapvető problémákra:

    • Olyan osztályok létezése, amelyek a instanceof, catch, typehint és más nyelvi konstrukciókban használatosak.
    • A hívható metódusok és funkciók létezése és elérhetősége, valamint az átadott argumentumok számának ellenőrzése.
    • Ellenőrzés, hogy a metódus által visszaadott adatok ugyanazzal a típussal rendelkeznek, mint ami a return kifejezésben meg van határozva.
    • A tulajdonságok létezésének és láthatóságának ellenőrzése, amelyeket hivatkozásként használnak, valamint a deklarált és tényleges típusok ellenőrzése, amelyeket a tulajdonságokban használnak.
    • A sprintf/printf hívásokban átadott paraméterek számának helyessége a szöveges formátumok blokkjában.
    • Változók létezése a branch és ciklus operátorok által képzett blokkok figyelembevételével.
    • Használhatatlan típuskonverziók (például «(string) 'foo'») és szigorú ellenőrzés («===» és «!==») különböző típusú és operandusú adatokon, amelyek mindig false értéket adnak vissza.

    A PHPStan 1.0 kulcsfontosságú újításai:

    • Megvalósult a „9” ellenőrzési szint, amely a „mixed” típus használatának ellenőrzését végzi, lehetővé téve a funkció paraméterei közötti különböző típusok fogadását. A kilencedik szint felfedi a „mixed” használatával kapcsolatos biztonsági kérdéseket, mint például a „mixed” típusú értékek más típusra való átadása, a „mixed” típussal rendelkező metódusok hívása és a hozzájuk tartozó tulajdonságok elérése, mivel ezek nem létezhetnek.
    • Az azonos függvényhívások visszatérési értékeinek azonosítók ellenőrzésének kezelése az @phpstan-pure és @phpstan-impure annotációk használatával.
    • Típusok elemzése try-catch-finally konstrukciókban @throws annotációk használatával.
    • Bizonyos, de nem használt belső (private) tulajdonságok, metódusok és konstansok azonosítása.
    • Inkompatibilis callback hívások átadása az array_map és usort típusú tömbműveletekben.
    • Típusok ellenőrzése a hiányzó typehint annotációk esetén.
    • Biztosítva van a típusleírások kompatibilitása a PHPDocs-szal, lehetővé téve a hibaüzenetekben szereplő típusok használatát PHPDocs-ban.

    Forrás: opennet.ru

  • Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster