Release av PHPStan 1.0, en statisk analysator för PHP-kod

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:

  • Grundläggande kontroller, definiera okända klasser, funktioner och metoder ($this), odefinierade variabler och skicka fel antal argument.
  • Identifiera möjligen odefinierade variabler, okända magiska metoder och egenskaper hos klasser med __call och __get.
  • Detektering av okända metoder i alla uttryck, inte begränsat till samtal via $this. Kontrollerar PHPDocs.
  • Kontrollera returtyper och tilldela typer till egenskaper.
  • Grundläggande identifiering av "död" (aldrig anropad) kod. Identifiera instanser av anrop som alltid returnerar falskt, "annat"-block som aldrig avfyras och kod efter retur.
  • Kontrollera vilka typer av argument som skickas till metoder och funktioner.
  • Varning om saknade typinformationskommentarer.
  • Varning om felaktiga fackföreningstyper som definierar samlingar av två eller flera typer.
  • Varning om anropsmetoder och åtkomst till egenskaper med typerna "nullbar".
  • Kontrollera användningen av den "blandade" typen.

    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

  • Lägg en kommentar