PHPStan 1.0 kaleratzea, PHP kodearen analizatzaile estatikoa

Sei urteko garapenaren ondoren, PHPStan 1.0 analizatzaile estatikoaren lehen bertsio egonkorra egin zen, eta horri esker PHP kodean akatsak aurki ditzakezu hura exekutatu gabe eta unitate-probak erabiliz. Proiektuaren kodea PHPn idatzita dago eta MIT lizentziapean banatzen da.

Analizatzaileak 10 egiaztapen maila eskaintzen ditu, zeinetan ondorengo maila bakoitzak aurrekoaren gaitasunak zabaltzen ditu eta egiaztapen zorrotzagoak eskaintzen ditu:

  • Oinarrizko egiaztapenak, klase, funtzio eta metodo ezezagunak definituz ($this), definitu gabeko aldagaiak eta argumentu kopuru okerrak pasatzea.
  • Definitu gabeko aldagaiak, metodo magiko ezezagunak eta klaseen propietateak identifikatzea __call eta __get-ekin.
  • Adierazpen guztietan metodo ezezagunak hautematea, $this bidezko deietara mugatu gabe. PHPDocs egiaztatzen.
  • Itzulpen motak egiaztatzea eta propietateei motak esleitzea.
  • "Hildako" (inoiz deitu gabe) kodearen oinarrizko identifikazioa. Identifikatu beti faltsuak itzultzen dituzten deien instantzia, "bestela" blokeak inoiz piztu ez direnak eta itzuleraren ondoren kodea.
  • Metodo eta funtzioetara pasatu diren argumentu motak egiaztatzea.
  • Moten informazioaren oharrak falta direlako abisua.
  • Bi motako edo gehiagoko bildumak definitzen dituzten batasun mota okerrei buruzko abisua.
  • Metodoei deitzeari eta propietateei "nullable" motak atzitzeari buruzko abisua.
  • "Mistoa" motaren erabilera egiaztatzea.

    Identifikatutako azpiko arazoen adibideak:

    • instanceof, catch, typehints eta beste hizkuntza-eraikuntza batzuetan erabiltzen diren klaseen existentzia.
    • Deitutako metodo eta funtzioen existentzia eta erabilgarritasuna, baita gainditutako argumentu kopurua ere.
    • Metodoak itzuleraren adierazpenean definitutako mota bereko datuak itzultzen dituela egiaztatzea.
    • Atzitzen ari diren propietateen existentzia eta ikusgaitasuna, eta propietateetan erabilitako deklaratutako eta benetako datu motak egiaztatzea.
    • Kateen formateatzeko blokean sprintf/printf deietara pasatzen diren parametroen kopurua zuzena da.
    • Adarkatze-operadoreek eta begiztak osatutako blokeak kontuan hartuta aldagaien existentzia.
    • Alferrikako motak (adibidez, "(katea) 'foo'") eta proba zorrotzak ("===" eta "!==") mota eta eragigai ezberdinekin beti faltsua itzultzen duten datuetan.

    PHPStan 1.0-n funtsezko berrikuntzak:

    • "9" egiaztapen-maila ezarri da, "misto" motaren erabilera egiaztatzen duena, funtzioak mota ezberdinetako parametroen harrera antolatzeko xedea duena. Bederatzigarren mailak "mistoaren" erabilera ez-seguruak identifikatzen ditu, hala nola "mistoa" motako balioak beste mota bati pasatzea, "mistoa" motako metodoei deitzea eta bere propietateak atzitzea, agian existitzen ez direlako.
    • Kontrolatu itzuleraren balioak berdinak diren funtzio dei berdinetarako @phpstan-pure eta @phpstan-impure oharrak erabiliz.
    • Mota analisia try-catch-finally konstruktuetan @throws oharrak erabiliz.
    • Barne-propietate (pribatu) definitu baina erabili gabekoen identifikazioa, metodo eta konstanteak.
    • Dei bateraezinak array_map eta usort bezalako array-funtzioei pasatzea.
    • Motaren ikuskapena falta diren motako oharpenetarako.
    • Mota-deklarazioak PHPDocs-ekin bateragarriak egin ditu, errore-mezuetako motak PHPDocs-en erabiltzeko aukera emanez.

    Iturria: opennet.ru

  • Gehitu iruzkin berria