
Es ist leicht, ungenutzte private Klassenelemente zu finden, da sie in der Klasse selbst nicht verwendet werden. Aber was ist mit öffentlichen Methoden/Eigenschaften/Konstanten?
final class Book
{
public function getTitle(): string
{
// ...
}
- public function getSubtitle(): string
- {
- // ...
- }
}Wie können wir unbenutztes öffentliches Element erkennen?
Genau das macht dieses Paket.
Diese Technik ist sehr nützlich für private Projekte und für versehentlich verwendeten public Modifikator, die nur als lokal in private als als lokal bezeichnet werden sollten.
composer require tomasvotruba/unused-public --devDas Paket ist für die PHP 7.2+ -Version erhältlich.
Mit Phpstan Extension Installer ist alles ausführen.
Aktivieren Sie jedes Element selbst mit einer einfachen Konfiguration:
# phpstan.neon
parameters :
unused_public :
methods : true
properties : true
constants : trueHaben Sie Hunderte von gemeldeten öffentlichen Methoden? Sie haben keine Zeit, sie alle zu überprüfen, möchten aber allmählich umgehen?
Setzen Sie stattdessen die maximal zulässige % -Konfiguration:
# phpstan.neon
parameters :
unused_public :
methods : 2.5Dies bedeutet, dass maximal 2,5 % aller öffentlichen Methoden als nicht genutzt werden können:
Möchten Sie lokale Methodenaufrufe überprüfen, die nicht entfernt werden sollten, sondern stattdessen in private / protected werden?
# phpstan.neon
parameters :
unused_public :
local_methods : true Einige Methoden werden nur in Zweig- oder Blattvorlagen angewendet und können als nicht genutzt gemeldet werden.
{{ book. getTitle () }}Wie können wir sie ausschließen? Fügen Sie Ihre Twig- oder Blade -Vorlagenverzeichnisse in die Konfiguration hinzu, um Methodennamen auszuschließen:
# phpstan.neon
parameters :
unused_public :
template_paths :
- templates In einigen Fällen melden die Regeln falsch positive Ergebnisse:
Open-Source-Anbieter entwerfen öffentliche API für Projekte. Ist Element als nicht verwendet gemeldet, aber es ist tatsächlich so konzipiert, dass es öffentlich verwendet wird?
Markieren Sie die Klasse oder das Element mit @api -Annotation, um sie zu überspringen:
final class Book
{
/**
* @api
*/
public function getName ()
{
return $ this -> name ;
}
}