Utgivelse av PHPStan 1.0, en statisk analysator for PHP-kode

Etter seks år med utvikling fant den første stabile utgivelsen av den statiske analysatoren PHPStan 1.0 sted, som lar deg finne feil i PHP-kode uten å kjøre den og bruke enhetstester. Prosjektkoden er skrevet i PHP og distribuert under MIT-lisensen.

Analysatoren gir 10 kontrollnivåer, der hvert påfølgende nivå utvider mulighetene til det forrige og gir strengere kontroller:

  • Grunnleggende kontroller, definering av ukjente klasser, funksjoner og metoder ($this), udefinerte variabler og overføring av feil antall argumenter.
  • Identifisere muligens udefinerte variabler, ukjente magiske metoder og egenskaper til klasser med __call og __get.
  • Deteksjon av ukjente metoder i alle uttrykk, ikke begrenset til anrop via $this. Sjekker PHPDocs.
  • Kontrollere returtyper og tilordne typer til egenskaper.
  • Grunnleggende identifikasjon av "død" (aldri kalt) kode. Identifiser forekomster av anrop som alltid returnerer falske, "else"-blokker som aldri utløses, og kode etter retur.
  • Kontrollere hvilke typer argumenter som sendes til metoder og funksjoner.
  • Advarsel om manglende typeinformasjonsannoteringer.
  • Advarsel om feil fagforeningstyper som definerer samlinger av to eller flere typer.
  • Advarsel om anropsmetoder og tilgang til egenskaper med typene "nullbar".
  • Kontrollerer bruken av "blandet" type.

    Eksempler på underliggende problemer som er identifisert:

    • Eksistensen av klasser brukt i forekomst av, catch, typehints og andre språkkonstruksjoner.
    • Eksistensen og tilgjengeligheten av metoder og funksjoner som kalles, samt antall argumenter som er bestått.
    • Kontrollerer at metoden returnerer data med samme type som definert i returuttrykket.
    • Eksistensen og synligheten til egenskapene som er tilgjengelig, og kontroll av de deklarerte og faktiske datatypene som brukes i egenskapene.
    • Antall parametere som sendes til sprintf/printf-kall i strengformateringsblokken er riktig.
    • Eksistensen av variabler som tar hensyn til blokker dannet av forgreningsoperatører og løkker.
    • Ubrukelige typekast (f.eks. "(streng) 'foo'") og strenge tester ("===" og "!==") på data med forskjellige typer og operander som alltid returnerer usant.

    Nøkkelinnovasjoner i PHPStan 1.0:

    • Kontrollnivået "9" er implementert, som kontrollerer bruken av typen "blandet", beregnet på å organisere funksjonens mottak av parametere med forskjellige typer. Nivå XNUMX identifiserer usikker bruk av "blandet", for eksempel å overføre verdier av typen "blandet" til en annen type, kalle metoder av typen "blandet", og få tilgang til egenskapene fordi de kanskje ikke eksisterer.
    • Kontroller om returverdier er identiske for identiske funksjonskall ved å bruke @phpstan-pure og @phpstan-impure-kommentarene.
    • Skriv analyse i try-catch-finally-konstruksjoner ved å bruke @throws-kommentarer.
    • Identifikasjon av definerte men ubrukte interne (private) egenskaper, metoder og konstanter.
    • Sender inkompatible tilbakeringinger til array-funksjoner som array_map og usort.
    • Typeinspeksjon for manglende skrivehintkommentarer.
    • Laget typedeklarasjoner som er kompatible med PHPDocs, slik at typer fra feilmeldinger kan brukes i PHPDocs.

    Kilde: opennet.ru

  • Legg til en kommentar