Vrystelling van PHPStan 1.0, 'n statiese ontleder vir PHP-kode

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:

  • Basiese kontrole, die definisie van onbekende klasse, funksies en metodes ($this), ongedefinieerde veranderlikes, en die deurgee van die verkeerde aantal argumente.
  • Vind moontlik ongedefinieerde veranderlikes, onbekende magiese metodes en klas eienskappe met __call en __get.
  • Opsporing van onbekende metodes in alle uitdrukkings, nie beperk tot oproepe via $this nie. Gaan PHPDocs na.
  • Kontroleer opgawetipes en toekenning van tipes aan eiendomme.
  • Basiese opsporing van "dooie" (nooit genoem) kode. Bespeur oproepe na instansie wat altyd vals terugkeer, nooit ander blokke afvuur nie, en kode na terugkeer.
  • Kontroleer die tipe argumente wat na metodes en funksies oorgedra word.
  • Waarskuwing oor ontbrekende tipe inligting-aantekeninge.
  • Waarskuwing oor ongeldige vakbondtipes wat versamelings van twee of meer tipes definieer.
  • Waarskuwing oor roepmetodes en toegang tot eiendomme met "nulbare" tipes.
  • Kontroleer die gebruik van die "gemengde" tipe.

    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

  • Voeg 'n opmerking