Illustration zum Thema 'Class Leak'. Das Bild zeigt eine Liste in einem Fenster mit dem Titel 'Class Leak', in der mehrmals der Begriff 'Class Leak' aufgelistet ist. Einige dieser Einträge sind durchgestrichen, was möglicherweise das Löschen oder Entfernen symbolisiert. Daneben steht ein Papierkorb mit einem Recycling-Symbol, in den einige der durchgestrichenen Einträge grafisch fallen. Im Hintergrund sind wiederholt das Wort 'Class Leak' und das Recycling-Symbol zu sehen. Das Bild symbolisiert möglicherweise die Beseitigung von Speicherlecks (Memory Leaks) oder überflüssigen Klassen.

Einleitung Class Leak

Class Leak ist ein Tool, das nicht genutzte Klassen in deinem Projekt identifiziert. Es hilft dir, veralteten und ungenutzten Code zu finden und zu entfernen, was dein Projekt schlanker und wartungsfreundlicher macht.

Installation und Einrichtung von Class Leak

Die Installation erfolgt in Javascript mit folgendem Code:

 

 

Code:
          

composer require tomasvotruba/class-leak --dev

Ein erster Befehle könnte zum Beispiel wie folgt lauten:

 

 

Code:
          

vendor/bin/class-leak check /src /tests

Konfiguration und Anpassung von Class Leak

Konfiguration und Anpassung von Class Leak

Class Leak lässt sich über Kommandozeilenoptionen konfigurieren. Einige wichtige Optionen sind:

  • --skip-type: Zum Ausschließen bestimmter Klassen oder Interfaces
  • --skip-suffix: Zum Ausschließen von Klassen mit bestimmten Suffixen
  • --skip-attribute: Zum Ausschließen von Klassen mit bestimmten Attributen

Beispiel:

Code:
          

vendor/bin/class-leak check src --skip-type="App\Contract\SomeInterface" --skip-suffix "Controller"

Verwendung von Class Leak

Class Leak ist besonders nützlich für:

  1. Bereinigung von Legacy-Code
  2. Identifizierung obsoleter Klassen nach Refactoring
  3. Verbesserung der Codequalität und -übersichtlichkeit

Ein typischer Workflow könnte so aussehen:

  1. Führen Sie Class Leak regelmäßig aus
  2. Überprüfen Sie die identifizierten ungenutzten Klassen
  3. Entfernen Sie die Klassen oder dokumentieren Sie, warum sie beibehalten werden

Integration in CI/CD-Pipelines

Class Leak lässt sich leicht in CI/CD-Pipelines integrieren. Hier ein Beispiel für GitHub Actions:

Code:
          

name: Check for unused classes
on: [push, pull_request]
jobs:
 class-leak:
   runs-on: ubuntu-latest
   steps:
     - uses: actions/checkout@v2
     - name: Install dependencies
       run: composer install
     - name: Run Class Leak
       run: vendor/bin/class-leak check src

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)

Welche Vorteile bietet Class Leak?

Es spart Speicher und vereinfacht die Wartung deines Projekts, indem es ungenutzte Klassen eliminiert. Dies führt zu effizienteren und leichter zu wartenden Projekten, vor allem in großen Codebasen.

Wann solltest du Class Leak verwenden?

Am besten verwendest du Class Leak, sobald du in einem Projekt einen gewissen PHPStan-Level (mindestens Level 2) erreicht hast. Es ist besonders nützlich in größeren Projekten mit vielen Abhängigkeiten.

Warum sollte ich Class Leak verwenden?

Unbenutzte Klassen nehmen Speicherplatz ein und machen den Code schwieriger zu warten. Class Leak hilft dir dabei, den Code sauber und schlank zu halten, indem es ungenutzte Klassen identifiziert, die sicher entfernt werden können.

Wann ist der Einsatz von Class Leak sinnvoll?

Class Leak ist besonders nützlich, wenn dein Projekt gewachsen ist und du den Überblick über alle Klassen verloren hast. Wenn du PHPStan Level 2 erreicht hast, kannst du dieses Tool einsetzen, um unnötige Komplexität zu vermeiden.

Wie hilft Class Leak meinem Projekt langfristig?

Durch das Entfernen von unnötigen Klassen bleibt dein Projekt besser wartbar und performanter. Außerdem verringert sich die Wahrscheinlichkeit, dass zukünftige Entwickler auf veralteten Code stoßen, der unnötig verwirrt.

Kann Class Leak auch in bestehenden Legacy-Projekten eingesetzt werden?

Ja, Class Leak ist besonders wertvoll für Legacy-Projekte. Gerade in gewachsenen Codebasen sammeln sich oft ungenutzte Klassen an. Durch schrittweises Analysieren und Entfernen kannst du das Projekt Stück für Stück aufräumen und die technische Schuld reduzieren.

Wie unterscheidet sich Class Leak von anderen Code-Analyse-Tools wie PHPStan?

Während PHPStan primär Typfehler und potenzielle Bugs findet, fokussiert sich Class Leak gezielt auf ungenutzte Klassen. Es ergänzt PHPStan perfekt, da es eine andere Art von totem Code aufspürt, die statische Analyse-Tools oft übersehen.

Funktioniert Class Leak mit Frameworks wie Symfony oder Laravel?

Ja, Class Leak funktioniert mit allen PHP-Frameworks. Bei Frameworks ist jedoch Vorsicht geboten, da manche Klassen per Reflection oder Dependency Injection geladen werden. Nutze die Skip-Optionen, um Framework-spezifische Klassen wie Controller oder Event Listener auszuschließen.

Kann Class Leak false positives liefern?

Ja, in bestimmten Fällen kann Class Leak Klassen als ungenutzt markieren, die tatsächlich verwendet werden. Dies passiert häufig bei Klassen, die über dynamische Instanziierung, Service Container oder Reflection geladen werden. Prüfe die Ergebnisse daher immer manuell, bevor du Klassen löschst.

Wie oft sollte ich Class Leak in meinem Projekt ausführen?

Idealerweise integrierst du Class Leak in deine CI/CD-Pipeline, sodass es bei jedem Pull Request automatisch läuft. Für manuelle Checks empfiehlt sich ein wöchentlicher oder monatlicher Rhythmus, besonders nach größeren Refactorings oder Feature-Releases.

Welche PHP-Version benötigt Class Leak?

Class Leak erfordert mindestens PHP 7.2, wobei PHP 8.0 oder höher empfohlen wird. Die neueren PHP-Versionen bieten bessere Performance und Unterstützung für moderne Sprachfeatures wie Attributes, die Class Leak ebenfalls analysieren kann.

Kann ich Class Leak mit Composer-Autoloading verwenden?

Ja, Class Leak arbeitet nahtlos mit dem Composer-Autoloader zusammen. Es analysiert alle Klassen, die über den PSR-4 Autoloader registriert sind. Stelle sicher, dass dein composer.json korrekt konfiguriert ist und führe composer dump-autoload aus, bevor du Class Leak startest.

Wie gehe ich mit Klassen um, die nur in Tests verwendet werden?

Klassen, die ausschließlich in Tests genutzt werden, können als false positives erscheinen. Scanne daher immer sowohl den src- als auch den tests-Ordner gemeinsam mit dem Befehl vendor/bin/class-leak check src tests, damit Class Leak die Test-Abhängigkeiten erkennt.

Gibt es eine Möglichkeit, bestimmte Namespaces komplett auszuschließen?

Ja, mit der Option --skip-type kannst du ganze Namespaces ausschließen. Verwende beispielsweise --skip-type="App\Generated\" um alle generierten Klassen zu ignorieren. Das ist besonders nützlich für automatisch generierte Proxy-Klassen oder API-Clients.

Kann Class Leak auch Interfaces und Traits erkennen?

Ja, Class Leak erkennt nicht nur ungenutzte Klassen, sondern auch ungenutzte Interfaces und Traits. Das macht es zu einem umfassenden Tool für die Bereinigung aller Arten von PHP-Typen in deinem Projekt.

Fazit

Class Leak ist ein wertvolles Werkzeug für PHP-Entwickler, die ihre Codebasis optimieren und wartbar halten möchten. Durch die regelmäßige Anwendung von Class Leak können Entwickler sicherstellen, dass ihr Code schlank und effizient bleibt, was langfristig zu einer verbesserten Codequalität und einfacheren Wartung führt.

Weiterführende Ressourcen

Offizielle Class Leak GitHub-Repository

PHP-FIG Standards für Best Practices in PHP-Projekten