Efter sex års utveckling skedde den första stabila utgåvan av den statiska analysatorn PHPStan 1.0, som låter dig hitta fel i PHP-koden utan att köra den och använda enhetstester. Projektkoden är skriven i PHP och distribueras under MIT-licensen.
Analysatorn tillhandahåller 10 nivåer av kontroll, där varje efterföljande nivå utökar kapaciteten för den föregående och ger strängare kontroller:
Exempel på underliggande problem som identifierats:
- Förekomsten av klasser som används i instanceof, catch, typhints och andra språkkonstruktioner.
- Förekomsten och tillgängligheten av metoder och funktioner som anropas, samt antalet argument som passerats.
- Kontrollera att metoden returnerar data med samma typ som definieras i returuttrycket.
- Förekomsten och synligheten för de egenskaper som nås, och kontroll av de deklarerade och faktiska datatyperna som används i egenskaperna.
- Antalet parametrar som skickas till sprintf/printf-anrop i strängformateringsblocket är korrekt.
- Förekomsten av variabler som tar hänsyn till block som bildas av grenoperatorer och loopar.
- Värdelösa typkastningar (t.ex. "(sträng) 'foo'") och strikta tester ("===" och "!==") på data med olika typer och operander som alltid returnerar falskt.
Viktiga innovationer i PHPStan 1.0:
- Kontrollnivån "9" har implementerats, som kontrollerar användningen av typen "blandad", avsedd för att organisera funktionens mottagning av parametrar med olika typer. Nivå XNUMX identifierar osäker användning av "blandad", som att överföra värden av typen "blandad" till en annan typ, anropa metoder av typen "blandad" och komma åt dess egenskaper eftersom de kanske inte existerar.
- Kontrollera om returvärdena är identiska för identiska funktionsanrop med hjälp av @phpstan-pure och @phpstan-impure-anteckningarna.
- Typanalys i try-catch-finally-konstruktioner med @throws-kommentarer.
- Identifiering av definierade men oanvända interna (privata) egenskaper, metoder och konstanter.
- Skickar inkompatibla callbacks till arrayfunktioner som array_map och usort.
- Typinspektion för saknade typhintkommentarer.
- Gjorde typdeklarationer kompatibla med PHPDocs, vilket gjorde att typer från felmeddelanden kunde användas i PHPDocs.
Källa: opennet.ru