Baada ya miaka sita ya maendeleo, kutolewa kwa kwanza kwa utulivu wa analyzer tuli PHPStan 1.0 ilifanyika, ambayo inakuwezesha kupata makosa katika kanuni ya PHP bila kuitekeleza na kutumia vipimo vya kitengo. Nambari ya mradi imeandikwa katika PHP na kusambazwa chini ya leseni ya MIT.
Kichanganuzi hutoa viwango 10 vya ukaguzi, ambapo kila ngazi inayofuata huongeza uwezo wa ile iliyotangulia na hutoa ukaguzi mkali zaidi:
Mifano ya matatizo ya msingi kutambuliwa:
- Kuwepo kwa madarasa yanayotumika kwa mfano, kamata, tahajia na miundo mingine ya lugha.
- Uwepo na upatikanaji wa njia na kazi zinazoitwa, pamoja na idadi ya hoja zilizopitishwa.
- Kuangalia kuwa njia inarudisha data na aina sawa kama ilivyofafanuliwa katika usemi wa kurudi.
- Kuwepo na mwonekano wa sifa zinazofikiwa, na kuangalia aina za data zilizotangazwa na halisi zinazotumika katika sifa.
- Idadi ya vigezo vilivyopitishwa kwa simu za sprintf/printf katika kizuizi cha umbizo la kamba ni sahihi.
- Uwepo wa vigezo vinavyozingatia vitalu vinavyoundwa na waendeshaji wa matawi na vitanzi.
- Aina zisizo na maana (k.m. "(string) 'foo'") na majaribio makali ("===" na "!==") kwenye data yenye aina tofauti na uendeshaji ambazo kila wakati hurudi sivyo.
Ubunifu muhimu katika PHPStan 1.0:
- Ngazi ya hundi ya "9" imetekelezwa, ambayo inaangalia matumizi ya aina ya "mchanganyiko", iliyopangwa kwa ajili ya kuandaa mapokezi ya kazi ya vigezo na aina tofauti. Kiwango cha XNUMX kinabainisha matumizi yasiyo salama ya "mchanganyiko", kama vile kupitisha thamani za aina "mchanganyiko" kwa aina nyingine, wito wa mbinu za aina "mchanganyiko", na kufikia sifa zake kwa sababu zinaweza kuwa hazipo.
- Dhibiti ikiwa thamani za kurejesha zinafanana kwa simu zinazofanana za utendakazi kwa kutumia maelezo ya @phpstan-pure na @phpstan-najisi.
- Chapa uchanganuzi katika kujaribu-kukamata hatimaye kuunda kwa kutumia maelezo ya @throws.
- Utambulisho wa sifa zilizofafanuliwa lakini zisizotumika za ndani (za kibinafsi), njia na viunga.
- Kupitisha simu zisizooana kwa vitendakazi vya mkusanyiko kama vile array_map na usort.
- Aina ya ukaguzi kwa kukosa vidokezo vya chapa.
- Ilifanya matamko ya aina inayooana na PHPDocs, ikiruhusu aina kutoka kwa ujumbe wa hitilafu kutumika katika PHPDocs.
Chanzo: opennet.ru