Never Code Alone Logo Never Code Alone
Weißer cartoon elefantenkopf der mit seinem rüssel eine schwarze Loope vor sein rechtes Auge hält, blauer Hintergund.

Einleitung

PHPStan ist ein leistungsstarkes Tool zur statischen Code-Analyse für PHP-Projekte. Es hilft Entwicklern, Fehler frühzeitig zu erkennen und die Codequalität zu verbessern, ohne den Code tatsächlich ausführen zu müssen.

PHPStan 2.0 Features in der Übersicht

Was ist das neue Analyse-Level 10 in PHPStan 2.0?

Level 10 führt eine besonders strenge Typprüfung ein. Es zielt darauf ab, die Verwendung des mixed-Typs zu minimieren, indem es explizit typisierte mixed-Werte erkennt und meldet. Entwickler werden aufgefordert, genauere Typangaben zu machen und sicherzustellen, dass der Code nicht auf unbestimmte Typen angewiesen ist, die zu Laufzeitfehlern führen könnten. Dies verbessert die Codequalität und reduziert potenzielle Fehler.

Welche Verbesserungen gibt es bei der Speicherverwaltung in PHPStan 2.0?

PHPStan 2.0 optimiert die Speicherverwaltung erheblich. Der Speicherverbrauch wurde um bis zu 70 Prozent reduziert, was sich positiv auf die Performance und die Geschwindigkeit der Analyse großer Codebasen auswirkt. Diese Optimierung ermöglicht effizientere Analysen, besonders bei umfangreichen Projekten.

Was ist der neue List-Typ in PHPStan 2.0?

PHPStan 2.0 führt einen neuen List-Typ ein. Dieser repräsentiert ein Array mit fortlaufenden ganzzahligen Schlüsseln, die bei 0 beginnen und keine Lücken aufweisen. Der List-Typ gehört zu den fortgeschrittenen Typen, die in PHPDocs dargestellt werden können. Er erleichtert Entwicklern die Arbeit mit Arrays durch eine klarere Definition spezifischer Datenstrukturen.

Wie verbessert PHPStan 2.0 die Validierung von PHPDoc-Tags?

PHPStan 2.0 überarbeitet die Validierung des @var-PHPDoc-Tags. Es gleicht diese Tags mit den nativen Typen der zugewiesenen Ausdrücke ab, was hilft, inkonsistente und potenziell fehlerhafte Typdeklarationen zu identifizieren. Zusätzlich überprüft es die Reinheit von Funktionen, die mit @phpstan-pure gekennzeichnet sind, und meldet unzulässige Auszeichnungen als Fehler.

Welche Verbesserungen gibt es beim Caching in PHPStan 2.0?

PHPStan 2.0 reduziert die Abhängigkeit von Caching, was die Analyse beschleunigt und den Speicherplatzbedarf verringert. Es verzichtet auf das Caching bestimmter Informationen, die in jedem Durchlauf ohnehin verfügbar sind. Dies führt zu einer Verringerung der benötigten Dateien auf der Festplatte und einer effizienteren Nutzung des Speicherplatzes.

Installation und Einrichtung

Um PHPStan in Ihrem Projekt zu verwenden, installieren Sie es über Composer:

Code:
          

composer require --dev phpstan/phpstan

Erstellen Sie anschließend eine phpstan.neon Konfigurationsdatei im Hauptverzeichnis Ihres Projekts:

Code:
          

parameters:
   level: 5
   paths:
       - src
       - tests

Verwendung von PHPStan

Code analysieren

Um Ihren Code zu analysieren, führen Sie folgenden Befehl aus:

Code:
          

vendor/bin/phpstan analyse

Regel-Level anpassen

PHPStan bietet verschiedene Regel-Level (0-9), wobei 0 die grundlegendsten und 9 die strengsten Überprüfungen durchführt. Sie können das Level in der Konfigurationsdatei oder über die Kommandozeile festlegen:

Code:
          

vendor/bin/phpstan analyse --level 8

Praktische Anwendungsfälle

Typenüberprüfung

PHPStan kann inkonsistente Typen in Ihrem Code aufdecken:

Code:
          

function add(int $a, int $b): int {
   return $a + $b;
}

$result = add(5, "10"); // PHPStan würde hier einen Fehler melden

Erkennung von unerreichbarem Code

PHPStan kann auf unerreichbaren Code hinweisen:

Code:
          

function alwaysTrue(): bool {
   return true;
   echo "This will never be executed"; // PHPStan würde dies als unerreichbar markieren
}

Überprüfung von Methodenaufrufen

PHPStan prüft, ob Methoden mit den richtigen Argumenten aufgerufen werden:

Code:
          

class Calculator {
   public function multiply(int $a, int $b): int {
       return $a * $b;
   }
}

$calc = new Calculator();
$result = $calc->multiply(5); // PHPStan würde einen Fehler wegen des fehlenden Arguments melden

Tipps für die effektive Nutzung

  1. Beginnen Sie mit einem niedrigen Level und erhöhen Sie es schrittweise.
  2. Nutzen Sie Baseline-Dateien, um bestehende Fehler zu ignorieren und sich auf neue Probleme zu konzentrieren.
  3. Integrieren Sie PHPStan in Ihren CI/CD-Prozess für kontinuierliche Codequalitätsprüfungen.
  4. Verwenden Sie PHPDoc-Annotationen, um PHPStan zusätzliche Typinformationen zu geben.
CYPRESS.IO Ambassador und IT Consultant für QA Engenieering und Qualität in PHP Projekten.

Erreichen Sie unsere PHP Consultant Spezialisten

Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.

Häufig gestellte Fragen (FAQ)

Was ist der Unterschied zwischen PHPStan und anderen statischen Analyse-Tools?

PHPStan zeichnet sich durch seine Genauigkeit, Geschwindigkeit und die Möglichkeit aus, schrittweise strengere Analysen durchzuführen. Es bietet auch eine breite Palette von Erweiterungen und eine aktive Community.

Kann PHPStan alle Fehler in meinem Code finden?

Nein, PHPStan kann nicht alle möglichen Fehler entdecken, insbesondere nicht solche, die erst zur Laufzeit auftreten. Es ist ein Werkzeug zur Verbesserung der Codequalität, kein Ersatz für umfassende Tests.

Wie gehe ich mit False Positives um?

Sie können PHPStan-spezifische Kommentare verwenden, um False Positives zu ignorieren, oder Baseline-Dateien erstellen, um bestehende Probleme auszublenden.

Unterstützt PHPStan auch Framework-spezifischen Code?

Ja, es gibt zahlreiche Erweiterungen für populäre PHP-Frameworks wie Laravel, Symfony und Nette.

Wie kann ich PHPStan für mein Projekt anpassen?

Sie können benutzerdefinierte Regeln erstellen, die Konfigurationsdatei anpassen und Erweiterungen verwenden, um PHPStan an Ihre spezifischen Anforderungen anzupassen.

Kann PHPStan auch Docblock-Kommentare analysieren?

Ja, PHPStan nutzt PHPDoc-Annotationen, um zusätzliche Typinformationen zu erhalten und genauere Analysen durchzuführen.

Wie behandelt PHPStan dynamische Eigenschaften oder Methoden?

PHPStan kann Schwierigkeiten mit dynamischen Eigenschaften haben. In solchen Fällen können Sie PHPDoc-Annotationen oder benutzerdefinierte Erweiterungen verwenden, um PHPStan zusätzliche Informationen zu geben.

Wie wirkt sich PHPStan auf die Leistung meines Projekts aus?

PHPStan selbst hat keinen Einfluss auf die Laufzeitleistung Ihres Projekts, da es nur zur Entwicklungszeit läuft. Die Analyse großer Projekte kann jedoch einige Zeit in Anspruch nehmen.

Kann ich PHPStan in meine IDE integrieren?

Ja, es gibt Plugins für viele gängige IDEs wie PhpStorm, Visual Studio Code und andere, die eine nahtlose Integration von PHPStan ermöglichen.

Wie oft sollte ich PHPStan ausführen?

Es wird empfohlen, PHPStan bei jedem Commit auszuführen, idealerweise als Teil Ihres CI/CD-Prozesses. So können Sie Probleme frühzeitig erkennen und beheben.