Kutolewa kwa PHPStan 1.0, kichanganuzi tuli cha msimbo wa PHP

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:

  • Ukaguzi wa kimsingi, kubainisha aina zisizojulikana, chaguo za kukokotoa na mbinu ($this), vigeu visivyofafanuliwa, na kupitisha idadi isiyo sahihi ya hoja.
  • Kutambua vigeu ambavyo havijafafanuliwa, mbinu za kichawi zisizojulikana na sifa za madarasa na __call na __get.
  • Utambuzi wa mbinu zisizojulikana katika misemo yote, sio tu kwa simu kupitia $this. Inaangalia PHPDocs.
  • Kuangalia aina za kurudi na kugawa aina kwa mali.
  • Kitambulisho cha msingi cha msimbo "waliokufa" (hawajawahi kuitwa). Tambua mifano ya simu ambazo hurejesha sivyo kila wakati, vizuizi vya "vingine" ambavyo havipigi tena, na uweke nambari baada ya kurudi.
  • Kuangalia aina za hoja zilizopitishwa kwa mbinu na kazi.
  • Onyo kuhusu kukosa maelezo ya aina ya ufafanuzi.
  • Onyo kuhusu aina zisizo sahihi za muungano zinazofafanua mikusanyiko ya aina mbili au zaidi.
  • Onyo juu ya njia za kupiga simu na kupata mali zilizo na aina "zisizoweza kubatilishwa".
  • Kuangalia matumizi ya aina ya "mchanganyiko".

    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

  • Kuongeza maoni