Udgivelsen af PHPStan 1.0, en statisk kodeanalysator for PHP-kode

Efter seks års udvikling er den første stabile udgave af PHPStan 1.0, en statisk analyser, der muliggør at finde fejl i PHP-kode uden at udføre den og uden brug af unit-tests, blevet lanceret. Projektets kode er skrevet i PHP og distribueres under MIT-licensen.

Analysatoren tilbyder 10 niveauer af kontrol, hvor hvert efterfølgende niveau udvider mulighederne i det forrige og leverer strengere kontroller:

  • Basischecks, identifikation af ukendte klasser, funktioner og metoder ($this), udefinerede variabler samt overførsel af et forkert antal argumenter.
  • Identifikation af sandsynligt udefinerede variabler, ukendte magic-metoder og klasseegenskaber med __call og __get.
  • Identifikation af ukendte metoder i alle udtryk, ikke begrænset til opkald via $this. Kontrol af PHPDocs.
  • Kontrol af returneringstyper og tildeling af typer til egenskaber.
  • Grundlæggende identifikation af "død" (aldeles ikkekaldt) kode. Identifikation af instanceof-opkald, der altid returnerer false, aldrig aktiverede "else"-blokke og kode, der findes efter return.
  • Kontrol af argumenttyper, der overføres til metoder og funktioner.
  • Advarsel om manglende annoteringer med typeinformation.
  • Advarsel om ugyldige union-typer, der definerer samlinger af to eller flere typer.
  • Advarsel om opkald af metoder og adgang til egenskaber med "nullable" typer.
  • Kontrol af brugen af "mixed" type.

    Eksempler på identificerede grundlæggende problemer:

    • Eksistensen af klasser, der anvendes i instanceof, catch, typehints og andre sprogkonstruktioner.
    • Eksistensen og tilgængeligheden af kaldte metoder og funktioner, samt antallet af overførte argumenter.
    • Kontrol af, at metoden returnerer data med den samme type, der er defineret i return-udtrykket.
    • Eksistensen og synligheden af egenskaber, der tilgås, samt kontrol af de deklarerede og faktiske datatyper, der anvendes i egenskaber.
    • Korrektheden af antallet af parametre, der er overført til opkald af sprintf/printf i tekstformatblokken.
    • Eksistensen af variabler under hensyntagen til blokke dannet af betingelses- og løkkestrukturer.
    • Unyttige typecastinger (for eksempel «(string) 'foo'») og strenge tjek («===» og «!==») af data med forskellige typer og operander, der altid returnerer værdien false.

    Nøgleinnovationer i PHPStan 1.0:

    • Implementeret kontrolniveau «9», der udfører tjek af brugen af typen «mixed», beregnet til at tage imod parametre af forskellige typer i funktionen. Det niende niveau afslører usikre måder at bruge «mixed» på, såsom at overdrage værdier af typen «mixed» til en anden type, kalde metoder med typen «mixed» og tilgå dets egenskaber, da de måske ikke eksisterer.
    • Styring af identitetstjek for returnerede værdier ved samme funktion kald med brug af annotationerne @phpstan-pure og @phpstan-impure.
    • Typeanalyse i try-catch-finally konstruktioner med brug af annotationerne @throws.
    • Identifikation af bestemte, men ubrugte interne (private) egenskaber, metoder og konstanter.
    • Overdragelse af inkompatible callback-kald til array-håndteringsfunktioner, såsom array_map og usort.
    • Typeinspektion for manglende typehint-annotationer.
    • Sikret kompatibilitet af typeskildringer med PHPDocs, hvilket muliggør brug af typer fra fejlmeddelelser i PHPDocs.

    Kilde: opennet.ru

  • Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster