Rhyddhau PHPStan 1.0, dadansoddwr statig ar gyfer cod PHP

Ar Γ΄l chwe blynedd o ddatblygiad, cynhaliwyd y datganiad sefydlog cyntaf o'r dadansoddwr statig PHPStan 1.0, sy'n eich galluogi i ddod o hyd i wallau yn y cod PHP heb ei weithredu a defnyddio profion uned. Mae cod y prosiect wedi'i ysgrifennu yn PHP a'i ddosbarthu o dan y drwydded MIT.

Mae'r dadansoddwr yn darparu 10 lefel o wirio, lle mae pob lefel ddilynol yn ehangu galluoedd yr un flaenorol ac yn darparu gwiriadau llymach:

  • Gwiriadau sylfaenol, diffinio dosbarthiadau, swyddogaethau a dulliau anhysbys ($hyn), newidynnau heb eu diffinio, a phasio'r nifer anghywir o ddadleuon.
  • Nodi newidynnau o bosibl heb eu diffinio, dulliau hud anhysbys a phriodweddau dosbarthiadau gyda __call a __get.
  • Canfod dulliau anhysbys ym mhob ymadrodd, heb fod yn gyfyngedig i alwadau trwy $hyn. Gwirio PHPDocs.
  • Gwirio mathau o ddychweliadau a phennu mathau i eiddo.
  • Adnabod cod β€œmarw” (heb ei alw) yn sylfaenol. Nodwch enghreifftiau o alwadau sydd bob amser yn dychwelyd blociau ffug, "arall" nad ydynt byth yn tanio, a chod ar Γ΄l dychwelyd.
  • Gwirio'r mathau o ddadleuon a drosglwyddir i ddulliau a swyddogaethau.
  • Rhybudd am anodiadau gwybodaeth teip sydd ar goll.
  • Rhybudd am fathau anghywir o undeb sy'n diffinio casgliadau o ddau fath neu fwy.
  • Rhybudd am ddulliau galw a chael mynediad i eiddo gyda mathau "nullable".
  • Gwirio'r defnydd o'r math "cymysg".

    Enghreifftiau o broblemau sylfaenol a nodwyd:

    • Bodolaeth dosbarthiadau a ddefnyddir er enghraifft, dal, teipiau a lluniadau iaith eraill.
    • Bodolaeth ac argaeledd dulliau a swyddogaethau a elwir, yn ogystal Γ’ nifer y dadleuon a basiwyd.
    • Gwirio bod y dull yn dychwelyd data gyda'r un math ag a ddiffinnir yn y mynegiad dychwelyd.
    • Bodolaeth a gwelededd yr eiddo y ceir mynediad iddynt, a gwirio'r mathau o ddata datganedig a gwirioneddol a ddefnyddir yn yr eiddo.
    • Mae nifer y paramedrau a drosglwyddwyd i alwadau sprintf/printf yn y bloc fformatio llinyn yn gywir.
    • Bodolaeth newidynnau gan gymryd i ystyriaeth blociau a ffurfiwyd gan weithredwyr canghennog a dolenni.
    • Castiau math diwerth (e.e. "(llinyn) 'foo'") a phrofion llym ("===" a "!==") ar ddata gyda gwahanol fathau a operands sydd bob amser yn dychwelyd ffug.

    Arloesiadau allweddol yn PHPStan 1.0:

    • Mae'r lefel wirio "9" wedi'i gweithredu, sy'n gwirio'r defnydd o'r math "cymysg", a fwriedir ar gyfer trefnu derbyniad paramedrau'r swyddogaeth gyda gwahanol fathau. Mae Lefel XNUMX yn nodi defnyddiau anniogel o "cymysg", megis pasio gwerthoedd o fath "cymysg" i fath arall, galw dulliau o fath "cymysg", a chael mynediad at ei briodweddau oherwydd efallai nad ydynt yn bodoli.
    • Rheoli a yw gwerthoedd dychwelyd yn union yr un fath ar gyfer galwadau swyddogaeth union yr un fath gan ddefnyddio'r anodiadau @phpstan-pure a @phpstan-impure.
    • Teipiwch ddadansoddiad mewn lluniadau ceisio dal-o'r diwedd gan ddefnyddio anodiadau @throws.
    • Nodi priodweddau mewnol (preifat) diffiniedig ond heb eu defnyddio, dulliau a chysonion.
    • Trosglwyddo galwadau anghydnaws i swyddogaethau arae fel array_map a usort.
    • Math o archwiliad ar gyfer anodiadau math awgrym coll.
    • Wedi gwneud datganiadau math sy'n gydnaws Γ’ PHPDocs, gan ganiatΓ‘u i fathau o negeseuon gwall gael eu defnyddio yn PHPDocs.

    Ffynhonnell: opennet.ru

  • Ychwanegu sylw