Veröffentlichung von PHPStan 1.0, einem statischen Analysator für PHP-Code

Nach sechs Jahren Entwicklungszeit ist die erste stabile Veröffentlichung des statischen Analysers PHPStan 1.0 erschienen, der es Ihnen ermöglicht, Fehler im PHP-Code zu finden, ohne ihn auszuführen und Unit-Tests zu verwenden. Der Projektcode ist in PHP geschrieben und wird unter der MIT-Lizenz vertrieben.

Der Analysator bietet 10 Verifizierungsstufen, wobei jede nachfolgende Stufe die Fähigkeiten der vorherigen erweitert und strengere Prüfungen ermöglicht:

  • Grundlegende Prüfungen, Definition unbekannter Klassen, Funktionen und Methoden ($this), undefinierter Variablen und Übergabe der falschen Anzahl von Argumenten.
  • Finden möglicherweise undefinierter Variablen, unbekannter magischer Methoden und Klasseneigenschaften mit __call und __get.
  • Erkennung unbekannter Methoden in allen Ausdrücken, nicht beschränkt auf den Aufruf über $this. PHPDocs prüfen.
  • Rückgabetypen prüfen und Eigenschaften Typen zuweisen.
  • Grundlegende Erkennung von „totem“ (nie aufgerufenem) Code. Erkennen Sie Aufrufe von „instanceof“, die nach der Rückgabe immer „false“ zurückgeben und niemals „else“-Blöcke und Code auslösen.
  • Überprüfen der Arten von Argumenten, die an Methoden und Funktionen übergeben werden.
  • Warnung vor fehlenden Anmerkungen zu Typinformationen.
  • Warnung vor ungültigen Union-Typen, die Sammlungen von zwei oder mehr Typen definieren.
  • Warnung vor dem Aufrufen von Methoden und dem Zugriff auf Eigenschaften mit „Nullable“-Typen.
  • Prüfung der Verwendung des Typs „gemischt“.

    Beispiele für zugrunde liegende Probleme, die identifiziert wurden:

    • Vorhandensein von Klassen, die in „Instanceof“, „Catch“, „Typehints“ und anderen Sprachkonstrukten verwendet werden.
    • Existenz und Verfügbarkeit aufgerufener Methoden und Funktionen sowie die Anzahl der übergebenen Argumente.
    • Überprüfen, ob eine Methode Daten mit demselben Typ zurückgibt, der in der Return-Anweisung definiert ist.
    • Existenz und Sichtbarkeit der Eigenschaften, auf die zugegriffen wird, und Validierung der deklarierten und tatsächlichen Datentypen, die in den Eigenschaften verwendet werden.
    • Die Richtigkeit der Anzahl der Parameter, die im String-Formatierer an sprintf/printf-Aufrufe übergeben werden.
    • Die Existenz von Variablen unter Berücksichtigung von Blöcken, die durch Verzweigungsoperatoren und Schleifen gebildet werden.
    • Nutzlose Typumwandlungen (wie „(string) ‚foo‘“) und strenge Prüfungen („===" und „!==") für Daten mit unterschiedlichen Typen und Operanden, die immer „false“ zurückgeben.

    Wichtigste Neuerungen von PHPStan 1.0:

    • Es ist die Prüfstufe „9“ implementiert, die die Verwendung des Typs „gemischt“ prüft, der dazu gedacht ist, den Empfang von Parametern unterschiedlichen Typs durch die Funktion zu organisieren. Die neunte Ebene deckt die unsichere Verwendung von „mixed“ auf, z. B. das Übergeben von Werten vom Typ „mixed“ an einen anderen Typ, das Aufrufen von Methoden vom Typ „mixed“ und den Zugriff auf dessen Eigenschaften, weil diese möglicherweise nicht vorhanden sind.
    • Steuern der Rückgabewert-Identitätsprüfungen für identische Funktionsaufrufe mithilfe der Annotationen @phpstan-pure und @phpstan-impure.
    • Typanalyse in Try-Catch-finally-Konstrukten mithilfe von @throws-Annotationen.
    • Identifizierung definierter, aber nicht verwendeter interner (privater) Eigenschaften, Methoden und Konstanten.
    • Übergabe inkompatibler Rückrufe an Array-Funktionen wie array_map und usort.
    • Typprüfung auf fehlende Typehint-Anmerkungen.
    • Typdeklarationen wurden mit PHPDocs kompatibel gemacht, sodass PHPDocs Typen aus Fehlermeldungen verwenden kann.

    Source: opennet.ru

  • Kommentar hinzufügen