Ukukhutshwa kwe-PHPStan 1.0, i-static analyzer yekhowudi ye-PHP

Emva kweminyaka emithandathu yophuhliso, ukukhululwa kokuqala okuzinzile kwe-static analyzer PHPStan 1.0 kwenzeka, okukuvumela ukuba ufumane iimpazamo kwikhowudi ye-PHP ngaphandle kokuyenza kunye nokusebenzisa iimvavanyo zeyunithi. Ikhowudi yeprojekthi ibhalwe kwi-PHP kwaye isasazwe phantsi kwelayisenisi ye-MIT.

I-analyzer ibonelela ngamanqanaba e-10 okukhangela, apho inqanaba ngalinye elilandelayo likhulisa amandla omntu odlulileyo kwaye libonelela ngokujonga okungqongqo ngakumbi:

  • Iitshekhi ezisisiseko, ezichaza iindidi ezingaziwayo, imisebenzi kunye neendlela ($oku), iinguqu ezingachazwanga, kunye nokugqithisa inani elingalunganga leengxoxo.
  • Ukuchonga iinguqu ezinokwenzeka ezingachazwanga, iindlela zomlingo ezingaziwayo kunye neempawu zeeklasi nge __call kunye __fumana.
  • Ukuchongwa kweendlela ezingaziwayo kuwo onke amabinzana, akupheleliselwanga kwiminxeba nge $thi. Ukujonga i-PHPDocs.
  • Ukujonga iintlobo zokubuyisela kunye nokwabela iindidi kwiipropati.
  • Ukuchongwa okusisiseko kwekhowudi "efileyo" (engazange ibizwe). Chonga imizekelo yeefowuni ezihlala zibuya zingeyonyani, "enye" ​​iibhloko ezingaqhumi, kwaye ikhowudi emva kokubuya.
  • Ukujonga iintlobo zeengxoxo ezigqithiselwe kwiindlela kunye nemisebenzi.
  • Isilumkiso malunga nohlobo olungekhoyo amanqakwana olwazi.
  • Isilumkiso malunga neentlobo zomanyano ezingachanekanga ezichaza ingqokelela yeentlobo ezimbini nangaphezulu.
  • Isilumkiso malunga neendlela zokufowuna kunye nokufikelela kwiipropati ezineentlobo "ezingenakulinganiswa".
  • Ukujonga ukusetyenziswa kohlobo "oluxutyiweyo".

    Imizekelo yeengxaki eziphambili ezichongiweyo:

    • Ubukho beeklasi ezisetyenziswayo kumzekelo, ukubamba, ukuchwetheza kunye nolwakhiwo lolunye ulwimi.
    • Ubukho kunye nokufumaneka kweendlela kunye nemisebenzi ebizwa, kunye nenani leengxoxo ezidlulisiweyo.
    • Ukukhangela ukuba indlela ibuyisela idatha kunye nohlobo olufanayo njengoko kuchaziwe kwintetho yembuyekezo.
    • Ubukho kunye nokubonakala kweepropati ezifikelelwayo, kunye nokutshekisha iintlobo zedatha ezibhengeziweyo kunye nezichanekileyo ezisetyenziswa kwiipropati.
    • Inani leeparamitha ezidluliselwe kwi-sprintf/printf iminxeba kwibhloko yokufomatha umtya ichanekile.
    • Ubukho bezinto eziguquguqukayo ezithathela ingqalelo iibhloko ezenziwe ngabaqhubi be-branching kunye neelophu.
    • Udidi olungasebenziyo luphosa (umzekelo "(umtya) 'foo'") kunye novavanyo olungqongqo ("===" kunye "!==") kwidatha eneentlobo ezahlukeneyo kunye nee-operands ezihlala zibuyisela bubuxoki.

    Izinto ezintsha eziphambili kwi-PHPStan 1.0:

    • Inqanaba lokutshekisha "9" liphunyeziwe, elihlola ukusetyenziswa kohlobo "oluxutyiweyo", olujoliswe ekuququzeleleni ukwamkelwa komsebenzi weeparamitha ezineentlobo ezahlukeneyo. Inqanaba le-XNUMX lichonga ukusetyenziswa okungakhuselekanga kwe "mixed", njengokudlula amaxabiso ohlobo "oluxutyiweyo" kolunye uhlobo, iindlela zokubiza uhlobo "oluxutyiweyo", kunye nokufikelela kwiipropathi zayo kuba zisenokungabikho.
    • Lawula ukuba amaxabiso embuyekezo ayafana na kwiifowuni zemisebenzi efanayo usebenzisa i-@phpstan-pure kunye ne @phpstan-inkcazo engcolileyo.
    • Uhlobo lohlalutyo kwi-try- catch-ekugqibeleni yakha usebenzisa i-@throws annotations.
    • Ukuchongwa kweempawu ezichaziweyo kodwa ezingasetyenziswanga zangaphakathi (zabucala), iindlela kunye nesigxina.
    • Ukugqithiswa kwee-callbacks ezingahambelaniyo kuluhlu lwemisebenzi efana ne-array_map kunye nosort.
    • Chwetheza uhlolo lwezichasiselo zochwethezo ezingekhoyo.
    • Yenza izibhengezo zohlobo oluhambelana ne-PHPDocs, ezivumela iindidi ezivela kwimiyalezo yempazamo ukuba isetyenziswe kwi-PHPDocs.

    umthombo: opennet.ru

  • Yongeza izimvo