Inhaltsverzeichnis
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:
composer require tomasvotruba/class-leak --dev
Ein erster Befehle könnte zum Beispiel wie folgt lauten:
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:
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:
- Bereinigung von Legacy-Code
- Identifizierung obsoleter Klassen nach Refactoring
- Verbesserung der Codequalität und -übersichtlichkeit
Ein typischer Workflow könnte so aussehen:
- Führen Sie Class Leak regelmäßig aus
- Überprüfen Sie die identifizierten ungenutzten Klassen
- 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:
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
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