Release fan PHPStan 1.0, in statyske analysator foar PHP-koade

Nei seis jier fan ûntwikkeling fûn de earste stabile release fan 'e statyske analysator PHPStan 1.0 plak, wêrtroch jo flaters kinne fine yn PHP-koade sûnder it út te fieren en ienheidstests te brûken. De projektkoade is skreaun yn PHP en ferspraat ûnder de MIT-lisinsje.

De analysator biedt 10 nivo's fan kontrôle, wêryn elk folgjende nivo de mooglikheden fan 'e foarige útwreidet en strangere kontrôles leveret:

  • Basiskontrôles, it definiearjen fan ûnbekende klassen, funksjes en metoaden ($this), undefined fariabelen, en it trochjaan fan it ferkearde oantal arguminten.
  • Identifisearje mooglik undefined fariabelen, ûnbekende magyske metoaden en eigenskippen fan klassen mei __call en __get.
  • Deteksje fan ûnbekende metoaden yn alle útdrukkingen, net beheind ta oproppen fia $this. Kontrolearje PHPDocs.
  • It kontrolearjen fan returntypen en it tawizen fan typen oan eigenskippen.
  • Basis identifikaasje fan "deade" (nea neamd) koade. Identifisearje eksimplaar fan oproppen dy't altyd falsk weromkomme, "oars" blokken dy't nea fjoer, en koade nei weromkomst.
  • Kontrolearje de soarten arguminten dy't trochjûn binne oan metoaden en funksjes.
  • Warskôging oer ûntbrekkende type ynformaasje annotaasjes.
  • Warskôging oer ferkearde fakbûnstypen dy't kolleksjes fan twa of mear soarten definiearje.
  • Warskôging oer opropmetoaden en tagong ta eigenskippen mei typen "nullable".
  • Kontrolearje it gebrûk fan it "mingde" type.

    Foarbylden fan ûnderlizzende problemen identifisearre:

    • It bestean fan klassen brûkt yn instanceof, catch, typehints en oare taalkonstruksjes.
    • It bestean en beskikberens fan metoaden en funksjes neamd, en ek it oantal arguminten trochjûn.
    • Kontrolearje dat de metoade gegevens werombringt mei itselde type as definiearre yn 'e weromkommende ekspresje.
    • It bestean en sichtberens fan 'e eigenskippen dy't tagong wurde, en it kontrolearjen fan de ferklearre en werklike gegevenstypen brûkt yn' e eigenskippen.
    • It oantal parameters trochjûn oan sprintf/printf-oanroppen yn it tekenrige opmaakblok is korrekt.
    • It bestean fan fariabelen mei rekken hâldend mei blokken foarme troch branching operators en loops.
    • Nutteleaze type casts (bgl. "(string) 'foo'") en strange tests ("===" en "!==") op gegevens mei ferskillende soarten en operanden dy't altyd falsk weromkomme.

    Wichtige ynnovaasjes yn PHPStan 1.0:

    • It kontrôlenivo "9" is ymplementearre, dy't it gebrûk fan it "mingde" type kontrolearret, bedoeld foar it organisearjen fan 'e funksje's ûntfangst fan parameters mei ferskate soarten. Nivo XNUMX identifisearret ûnfeilich gebrûk fan "mingd", lykas it trochjaan fan wearden fan it type "mingd" nei in oar type, metoaden fan it type "mingd" oproppe en tagong krije ta syn eigenskippen om't se miskien net bestean.
    • Kontrolearje oft weromwearden identyk binne foar identike funksjeoproppen mei de @phpstan-pure en @phpstan-impure annotaasjes.
    • Type analyze yn try-catch-finally-konstruksjes mei @throws-annotaasjes.
    • Identifikaasje fan definieare mar net brûkte ynterne (privee) eigenskippen, metoaden en konstanten.
    • It trochjaan fan ynkompatibele callbacks nei arrayfunksjes lykas array_map en usort.
    • Type ynspeksje foar ûntbrekkende typehint annotaasjes.
    • Typedeklaraasjes makken kompatibel mei PHPDocs, wêrtroch typen fan flaterberjochten kinne wurde brûkt yn PHPDocs.

    Boarne: opennet.ru

  • Add a comment