Plugin für PHP_CODESNIFFER statisches Analyse -Tool, das eine Analyse der Verwendung problematischer Variable hinzufügt.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariableunset() verwendet werden, ohne definiert zu werden. VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariableVariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable$this , self::$static_member , static::$static_member wird außerhalb des Klassenbereichs verwendet. (Sniff -Codes: VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass oder VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass Die Variableanalyse erfordert PHP 5.4 oder höher und PHP -CodesNiffere Version 3.5.6 oder höher.
Dies ist die einfachste Methode.
Installieren Sie zunächst PHPCODESNIFERFERFER-COMPOSER-INSTALLER für Ihr Projekt, wenn Sie es noch nicht getan haben. Dadurch werden auch PHPCs installiert.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
Installieren Sie dann diese Standards.
composer require --dev sirbrillig/phpcs-variable-analysis
Sie können dann die Sniffs einfügen, indem Sie eine Zeile wie Folgendes zu Ihrer Phpcs.xml -Datei hinzufügen.
<rule ref="VariableAnalysis"/>
Danach sollte es einfach funktionieren!
Installieren Sie PHP_CODESNIFER (PHPCS), indem Sie die Installationsanweisungen befolgen (über Komponist, Phar -Datei, Birnen oder Git -Checkout).
Stellen Sie sicher, dass die Version von PHP_CODESNIFFER unseren Anforderungen entspricht.
Installieren Sie die Variableanalyse. Laden Sie entweder die ZIP- oder Tar.gz -Datei von der neuesten Release -Seite der Variableanalysis herunter. Erweitern Sie die Datei und benennen Sie das resultierende Verzeichnis in phpcs-variable-analysis um. Bewegen Sie das Verzeichnis an einen Ort, an dem Sie alle Ihre PHPCS -Standards behalten möchten.
Fügen Sie die Pfade der neu installierten Standards zur Konfiguration von PHP_CODESNIFFER Installed_Paths hinzu. Der folgende Befehl sollte die neuen Standards nach Ihren vorhandenen Standards anhängen (stellen Sie sicher, dass Sie die tatsächlichen Pfade den oben erstellten Verzeichnissen liefern).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
Wenn Sie keine anderen Standards installiert haben, können Sie dies einfacher tun (erneut die tatsächlichen Pfade liefern):
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
Es gibt eine Vielzahl von Optionen, um das Verhalten der Variableanalyse anzupassen. Sehen Sie sich die enthaltenen Regeln für kommentierte Beispiele für eine Konfiguration an.
Die verfügbaren Optionen sind wie folgt:
allowUnusedFunctionParameters (bool, Standard false ): Wenn auf True festgelegt wird, werden Funktionsargumente niemals als nicht verwendet gekennzeichnet.allowUnusedCaughtExceptions (BOOL, Standard true ): Wenn sie auf True gesetzt sind, werden die Variablen für Ausnahmeberätigung niemals als nicht verwendet gekennzeichnet.allowUnusedParametersBeforeUsed (bool, Standard true ): Wenn sie auf True gesetzt sind, werden unbenutzte Funktionsargumente ignoriert, wenn sie von gebrauchten Funktionsargumenten befolgt werden.allowUnusedVariablesBeforeRequire (BOOL, Standard false ): Wenn auf true festgelegt, werden Variablen vor einem require , require_once , include oder include_once nicht als nicht verwendet gekennzeichnet. Sie können für die erforderliche Datei bestimmt sein.allowUndefinedVariablesInFileScope (BOOL, Standard false ): Wenn Sie auf wahr sind, werden undefinierte Variablen im oberen Bereich der Datei niemals als undefiniert markiert. Dies kann für Vorlagendateien nützlich sein, die viele globale Variablen verwenden, die an anderer Stelle definiert sind.allowUnusedVariablesInFileScope (BOOL, Standard false ): Wenn auf True gesetzt, werden nicht verwendete Variablen im obersten Bereich der Datei niemals als nicht verwendet gekennzeichnet. Dies kann hilfreich sein, wenn viele globale Variablen an anderer Stelle verwendet werden.validUnusedVariableNames (String, Standard- null ): Eine platzgetrennte Liste von Namen von Platzhaltervariablen, die Sie von nicht verwendeten variablen Warnungen ignorieren möchten. Um beispielsweise die Variablen $junk und $unused zu ignorieren, könnte dies auf 'junk unused' eingestellt werden.ignoreUnusedRegexp (String, Standard null ): Eine PHP -Regexp -Zeichenfolge (Beachten Sie, dass dies explizite Abgrenzer erfordert) für Variablen, die Sie von nicht verwendeten Variablenwarnungen ignorieren möchten. Um beispielsweise die Variablen $_junk und $_unused zu ignorieren, könnte dies auf '/^_/' festgelegt werden.validUndefinedVariableNames (STRING, Standard- null ): Eine platz getrennte Liste von Namen von Platzhaltervariablen, die Sie von undefinierten variablen Warnungen ignorieren möchten. Um beispielsweise die Variablen $post und $undefined zu ignorieren, könnte dies so eingestellt werden, 'post undefined' . Dies kann in Kombination mit validUndefinedVariableRegexp verwendet werden.validUndefinedVariableRegexp (String, Standard null ): Eine PHP -Regexp -Zeichenfolge (beachten Sie, dass dies explizite Grenzwerte erfordert) für Variablen, die Sie von undefinierten variablen Warnungen ignorieren möchten. Um beispielsweise die Variablen $post und $undefined zu ignorieren, könnte dies auf '/^(post|undefined)$/' festgelegt werden. Dies kann in Kombination mit validUndefinedVariableNames verwendet werden.allowUnusedForeachVariables (bool, Standard true ): Wenn auf true festgelegt wird, werden nicht verwendete Werte aus der key => value in einer foreach -Schleife niemals als nicht verwendet markiert.sitePassByRefFunctions (String, Standard null ): Eine Liste benutzerdefinierter Funktionen, die in Variablen übergeben werden, die durch Referenz initialisiert werden sollen (z. B. preg_match() ) und daher nicht erfordern sollten, dass diese Variablen vorab definiert werden. Die Liste ist der Platz getrennt und jeder Eintrag ist der Formular functionName:1,2 . Der Funktionsname folgt zunächst von einem Dickdarm und einer von Kommas getrennten Liste von Argumentnummern (ab 1), die als variable Definitionen angesehen werden sollten. Der besondere Wert ... in der Argumentenliste wird alle Argumente nach der letzten Zahl als variable Definitionen betrachtet.allowWordPressPassByRefFunctions (BOOL, Standard false ): Wenn auf true festgelegt wird, wird eine Liste der gängigen WordPress-Pass-by-Referenzfunktionen zu der Liste der PHP-Funktionen hinzugefügt, sodass die Übergabe undefinierter Variablen an diese Funktionen (zu initialisiert durch Referenz) zulässig ist.Um diese Optionen festzulegen, müssen Sie XML in Ihrem Regeln verwenden. Weitere Informationen finden Sie auf der Seite PHPCS -Anpassungsabschnüffel. Hier ist ein Beispiel, das alle Variablen ignoriert, die mit einem Unterstrich beginnen:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >Dies wurde aus den hervorragenden Arbeiten in https://github.com/illusori/php_codesniffer-variableanalysis ggabiert
Bitte öffnen Sie Probleme oder PRs in diesem Repository.
Alle Änderungen sollten von Tests begleitet werden und die Linie und statische Analyse bestehen. Bitte verwenden Sie PHPDOC (anstelle tatsächlicher Typen) zum Deklarieren von Typen, da dies in PHP 5.4 ausgeführt werden muss.
Um Tests auszuführen, stellen Sie sicher, dass der Komponist installiert ist, und dann ausführen:
composer install # you only need to do this once
composer test
Verwenden Sie: zum Ausführen von Lining:
composer lint
Verwenden Sie die statische Analyse, um: Verwenden Sie:
composer phpstan