Na ses jaar van ontwikkeling het die eerste stabiele vrystelling van die PHPStan 1.0 statiese ontleder plaasgevind, wat jou toelaat om foute in PHP-kode te vind sonder om dit uit te voer en eenheidstoetse te gebruik. Die projekkode is in PHP geskryf en onder die MIT-lisensie versprei.
Die ontleder bied 10 vlakke van verifikasie, waarin elke daaropvolgende vlak die vermoëns van die vorige een uitbrei en strenger kontrole bied:
Voorbeelde van onderliggende probleme wat geïdentifiseer is:
- Bestaan van klasse wat gebruik word in gevalle van, vang, tikwenke en ander taalkonstrukte.
- Bestaan en beskikbaarheid van opgeroep metodes en funksies, sowel as die aantal argumente geslaag.
- Kontroleer of 'n metode data terugstuur met dieselfde tipe as gedefinieer in die terugkeerstaat.
- Bestaan en sigbaarheid van die eiendomme wat toegang verkry word, en validering van die verklaarde en werklike datatipes wat in die eiendomme gebruik word.
- Die korrektheid van die aantal parameters wat na sprintf/printf-oproepe in die stringformateerder oorgedra is.
- Die bestaan van veranderlikes, met inagneming van blokke wat deur takoperateurs en lusse gevorm word.
- Nuttelose tikuitsendings (soos "(string) 'foo'") en streng kontrole ("===" en "!==") op data met verskillende tipes en operande wat altyd vals gee.
Sleutelinnovasies van PHPStan 1.0:
- Die kontrolevlak "9" word geïmplementeer, wat die gebruik van die "gemengde" tipe kontroleer, wat bedoel is om die ontvangs van parameters met verskillende tipes deur die funksie te organiseer. Die negende vlak ontbloot die onveilige gebruike van "gemeng", soos om waardes van die tipe "gemeng" na 'n ander tipe deur te gee, metodes van die tipe "gemeng" te noem en toegang tot die eienskappe daarvan te kry omdat dit dalk nie bestaan nie.
- Beheer van terugkeerwaarde-identiteitskontroles vir identiese funksie-oproepe deur die @phpstan-pure en @phpstan-impure-aantekeninge te gebruik.
- Tik analise in probeer-vang-uiteindelik-konstruksies deur @gooi-aantekeninge te gebruik.
- Identifikasie van gedefinieerde maar ongebruikte interne (private) eienskappe, metodes en konstantes.
- Deur onversoenbare terugroepe na skikkingsfunksies soos array_map en usort deur te gee.
- Tik-inspeksie vir ontbrekende tik-aantekeninge.
- Tipe verklarings is versoenbaar gemaak met PHPDocs, wat PHPDocs toelaat om tipes van foutboodskappe te gebruik.
Bron: opennet.ru