Verëffentlechung vum PHPStan 1.0, e statesche Analysator fir PHP Code

No sechs Joer Entwécklung ass déi éischt stabil Verëffentlechung vum statesche Analysator PHPStan 1.0 stattfonnt, wat Iech erlaabt Feeler am PHP Code ze fannen ouni et auszeféieren an Eenheetstester ze benotzen. De Projet Code ass an PHP geschriwwen an ënner der MIT Lizenz verdeelt.

Den Analyser bitt 10 Kontrollniveauen, an deem all spéider Niveau d'Fäegkeete vum viregten erweidert a méi streng Kontrollen ubitt:

  • Basis Kontrollen, onbekannt Klassen definéieren, Funktiounen a Methoden ($dës), ondefinéiert Variablen, an déi falsch Unzuel vun Argumenter weiderginn.
  • Identifikatioun méiglecherweis ondefinéiert Verännerlechen, onbekannt magesch Methoden an Eegeschafte vun Klassen mat __call an __get.
  • Detektioun vun onbekannte Methoden an all Ausdréck, net limitéiert op Uriff iwwer $dëser. Iwwerpréift PHPDocs.
  • Iwwerpréift Retour Typen an zougewisen Typen un Eegeschaften.
  • Basis Identifikatioun vun "dout" (ni genannt) Code. Identifizéieren Instanz vun Uruff déi ëmmer falsch zréckkommen, "soss" Blocken déi ni brennen, a Code nom Retour.
  • Iwwerpréift d'Zorte vun Argumenter, déi u Methoden a Funktiounen iwwerginn.
  • Warnung iwwer fehlend Typinformatiounsannotatiounen.
  • Warnung iwwer falsch Gewerkschaftstypen déi Sammlungen vun zwou oder méi Typen definéieren.
  • Warnung iwwer Uruffmethoden an Zougang zu Eegeschafte mat Typen "nullbar".
  • Iwwerpréift d'Benotzung vum "gemëschte" Typ.

    Beispiller vun ënnerierdesch Problemer identifizéiert:

    • D'Existenz vu Klassen, déi an Instanz vun, Fang, Typhint an aner Sproochkonstruktioune benotzt ginn.
    • D'Existenz an Disponibilitéit vu Methoden a Funktiounen genannt, wéi och d'Zuel vun Argumenter passéiert.
    • Iwwerpréift datt d'Method Daten mat deemselwechten Typ zréckginn wéi am Retourausdrock definéiert.
    • D'Existenz an d'Visibilitéit vun den Eegeschaften déi zougänglech sinn, a kontrolléiert déi deklaréiert an aktuell Datentypen déi an den Eegeschafte benotzt ginn.
    • D'Zuel vun de Parameteren, déi op sprintf / printf Uruff am Stringformatéierungsblock passéiert sinn, ass richteg.
    • D'Existenz vu Variablen berücksichtegt d'Blocke geformt vu Verzweigungsbetreiber a Schleifen.
    • Nëtzlos Typ Goss (zB "(String) 'foo'") a strikt Tester ("===" an "!==") op Daten mat verschiddenen Typen an Operanden déi ëmmer falsch zréckkommen.

    Schlëssel Innovatiounen am PHPStan 1.0:

    • Den "9" Scheckniveau gouf implementéiert, deen d'Benotzung vum "gemëschte" Typ iwwerpréift, geduecht fir den Empfang vun der Funktioun vu Parameteren mat verschiddenen Typen ze organiséieren. Niveau XNUMX identifizéiert onsécher Benotzunge vu "gemëschten", sou wéi Wäerter vum Typ "gemëscht" an eng aner Aart passéieren, Methoden vum Typ "gemëscht" nennen an Zougang zu sengen Eegeschafte well se vläicht net existéieren.
    • Kontrolléiert ob Retourwäerter identesch sinn fir identesch Funktiounsuriff mat den @phpstan-pure an @phpstan-impure Annotatiounen.
    • Typ Analyse an try-catch-endlech konstrukte mat @throws Annotatiounen.
    • Identifikatioun vun definéiert awer onbenotzt intern (privat) Eegeschaften, Methoden a Konstanten.
    • Passéiert inkompatibel Callbacks op Arrayfunktiounen wéi array_map an usort.
    • Typinspektioun fir fehlend Typhint Annotatiounen.
    • Gemaach Typdeklaratioune kompatibel mat PHPDocs, erlaabt datt Typen vu Fehlermeldungen an PHPDocs benotzt kënne ginn.

    Source: opennet.ru

  • Setzt e Commentaire