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 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