Wara sitt snin ta 'żvilupp, seħħet l-ewwel rilaxx stabbli tal-analizzatur statiku PHPStan 1.0, li jippermettilek issib żbalji fil-kodiċi PHP mingħajr ma tesegwixxiha u tuża testijiet tal-unità. Il-kodiċi tal-proġett huwa miktub bil-PHP u mqassam taħt il-liċenzja MIT.
L-analizzatur jipprovdi 10 livelli ta 'kontroll, li fihom kull livell sussegwenti jespandi l-kapaċitajiet ta' dak preċedenti u jipprovdi kontrolli aktar stretti:
Eżempji ta' problemi sottostanti identifikati:
- L-eżistenza ta' klassijiet użati f'każ ta', catch, typehnts u kostruzzjonijiet ta' lingwa oħra.
- L-eżistenza u d-disponibbiltà ta 'metodi u funzjonijiet imsejħa, kif ukoll in-numru ta' argumenti mgħoddija.
- Iċċekkja li l-metodu jirritorna data bl-istess tip kif definit fl-espressjoni tar-ritorn.
- L-eżistenza u l-viżibilità tal-proprjetajiet li qed jiġu aċċessati, u l-iċċekkjar tat-tipi tad-dejta ddikjarati u attwali użati fil-proprjetajiet.
- In-numru ta 'parametri mgħoddija lil sejħiet sprintf/printf fil-blokk tal-ifformattjar tal-istring huwa korrett.
- L-eżistenza ta 'varjabbli b'kont meħud ta' blokki ffurmati minn operaturi ta 'fergħat u loops.
- Casts tat-tip inutli (eż. "(string) 'foo'") u testijiet stretti ("===" u "!==") fuq data b'tipi differenti u operandi li dejjem jirritorna foloz.
Innovazzjonijiet ewlenin f'PHPStan 1.0:
- Ġie implimentat il-livell ta 'kontroll "9", li jiċċekkja l-użu tat-tip "imħallat", maħsub biex jorganizza r-riċeviment tal-funzjoni ta' parametri b'tipi differenti. Livell disa 'jidentifika użi mhux sikuri ta' "imħallta", bħall-mogħdija ta 'valuri tat-tip "imħallta" għal tip ieħor, sejħa ta' metodi tat-tip "imħallta", u aċċess għall-proprjetajiet tiegħu minħabba li jistgħu ma jeżistux.
- Ikkontrolla jekk il-valuri tar-ritorn humiex identiċi għal sejħiet ta' funzjoni identiċi billi tuża l-annotazzjonijiet @phpstan-pure u @phpstan-impure.
- Analiżi tat-tip fil-kostruzzjonijiet try-catch-finally bl-użu ta' annotazzjonijiet @throws.
- Identifikazzjoni ta' proprjetajiet, metodi u kostanti interni (privati) definiti iżda mhux użati.
- Tgħaddi callbacks inkompatibbli għal funzjonijiet array bħal array_map u usort.
- Spezzjoni tat-tip għal annotazzjonijiet typehint nieqsa.
- Għamel dikjarazzjonijiet tat-tip kompatibbli ma' PHPDocs, li ppermettew li tipi minn messaġġi ta' żball jintużaw f'PHPDocs.
Sors: opennet.ru