Pagpagawas sa PHPStan 1.0, usa ka static analyzer alang sa PHP code

Pagkahuman sa unom ka tuig nga pag-uswag, nahitabo ang una nga lig-on nga pagpagawas sa static analyzer nga PHPStan 1.0, nga nagtugot kanimo nga makit-an ang mga sayup sa code sa PHP nga wala kini gipatuman ug gigamit ang mga pagsulay sa yunit. Ang code sa proyekto gisulat sa PHP ug giapod-apod ubos sa lisensya sa MIT.

Naghatag ang analista og 10 nga lebel sa pagsusi, diin ang matag sunod nga lebel nagpalapad sa mga kapabilidad sa nauna ug naghatag labi ka higpit nga mga pagsusi:

  • Mga sukaranan nga pagsusi, pagtino sa wala mailhi nga mga klase, mga gimbuhaton ug mga pamaagi ($ kini), wala mahibal-an nga mga variable, ug pagpasa sa sayup nga gidaghanon sa mga argumento.
  • Pag-ila sa posibleng dili matino nga mga variable, wala mailhi nga mga pamaagi sa salamangka ug mga kabtangan sa mga klase nga adunay __call ug __get.
  • Pagtuki sa wala mailhi nga mga pamaagi sa tanan nga mga ekspresyon, dili limitado sa mga tawag pinaagi sa $this. Pagsusi sa PHPDocs.
  • Pagsusi sa mga tipo sa pagbalik ug pag-assign sa mga tipo sa mga kabtangan.
  • Ang sukaranan nga pag-ila sa "patay" (wala gyud gitawag) nga kodigo. Ilha ang mga pananglitan sa mga tawag nga kanunay nga nagbalik nga sayup, "uban pa" nga mga bloke nga wala’y sunog, ug code pagkahuman sa pagbalik.
  • Pagsusi sa mga tipo sa argumento nga gipasa sa mga pamaagi ug mga gimbuhaton.
  • Pahimangno bahin sa nawala nga tipo nga mga anotasyon sa impormasyon.
  • Pahimangno bahin sa dili husto nga mga tipo sa unyon nga naghubit sa mga koleksyon sa duha o daghan pa nga mga tipo.
  • Pahimangno bahin sa mga pamaagi sa pagtawag ug pag-access sa mga kabtangan nga adunay mga tipo nga "nullable".
  • Pagsusi sa paggamit sa "mixed" type.

    Mga pananglitan sa nagpahiping mga problema nga giila:

    • Ang paglungtad sa mga klase nga gigamit sa instanceof, catch, typehints ug uban pang mga pagtukod sa pinulongan.
    • Ang paglungtad ug pagkaanaa sa mga pamaagi ug mga gimbuhaton nga gitawag, ingon man ang gidaghanon sa mga argumento nga gipasa.
    • Pagsusi nga ang pamaagi nagbalik sa datos nga adunay parehas nga tipo nga gihubit sa ekspresyon sa pagbalik.
    • Ang pagkaanaa ug visibility sa mga kabtangan nga gi-access, ug pagsusi sa gideklarar ug aktuwal nga mga tipo sa datos nga gigamit sa mga kabtangan.
    • Ang gidaghanon sa mga parameter nga gipasa sa sprintf/printf nga mga tawag sa string formatting block husto.
    • Ang paglungtad sa mga baryable nga gikonsiderar ang mga bloke nga naporma sa mga branching operator ug mga galong.
    • Wala'y kapuslanan nga tipo nga mga cast (e.g. "(string) 'foo'") ug estrikto nga mga pagsulay ("===" ug "!==") sa mga datos nga adunay lainlaing mga tipo ug operand nga kanunay nagbalik nga sayup.

    Pangunang mga inobasyon sa PHPStan 1.0:

    • Ang lebel sa tseke nga "9" gipatuman, nga nagsusi sa paggamit sa "gisagol" nga tipo, gituyo alang sa pag-organisar sa pagdawat sa function sa mga parameter nga adunay lainlaing mga tipo. Ang lebel XNUMX nagpaila sa dili luwas nga paggamit sa "mixed", sama sa pagpasa sa mga kantidad sa tipo nga "mixed" ngadto sa lain nga tipo, pagtawag sa mga pamaagi sa tipo nga "mixed", ug pag-access sa mga kabtangan niini tungod kay mahimo nga wala kini.
    • Kontrola kung parehas ang mga kantidad sa pagbalik alang sa parehas nga mga tawag sa function gamit ang @phpstan-pure ug @phpstan-impure nga mga anotasyon.
    • Type analysis sa try-catch-finally constructs gamit ang @throws annotation.
    • Pag-ila sa gihubit apan wala magamit nga internal (pribado) nga mga kabtangan, pamaagi ug kanunay.
    • Pagpasa sa dili magkatugma nga mga callback sa array function sama sa array_map ug usort.
    • Pag-inspeksyon sa tipo alang sa nawala nga mga anotasyon sa typehint.
    • Naghimo og mga deklarasyon sa tipo nga nahiuyon sa PHPDocs, nga gitugotan ang mga tipo gikan sa mga mensahe sa sayup nga magamit sa PHPDocs.

    Source: opennet.ru

  • Idugang sa usa ka comment