Plugin pour l'outil d'analyse statique PHP_codesniffer qui ajoute une analyse de l'utilisation de variables problématiques.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable )unset() sans être définie. (Code de sniff: VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable )VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable )$this , self::$static_member , static::$static_member est utilisé en dehors de la portée de la classe. (Codes de reniflement: VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass ou VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass ) La variable analyse nécessite PHP 5.4 ou plus et PHP Code Sniffer version 3.5.6 ou plus.
C'est la méthode la plus simple.
Tout d'abord, installez PHPCODESNIFFER-COMPOSER-Installer pour votre projet si vous ne l'avez pas déjà fait. Cela installera également des PHPC.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
Installez ensuite ces normes.
composer require --dev sirbrillig/phpcs-variable-analysis
Vous pouvez ensuite inclure les reniflements en ajoutant une ligne comme ce qui suit à votre fichier phpcs.xml.
<rule ref="VariableAnalysis"/>
Cela devrait juste fonctionner après ça!
Installez PHP_CODESNIFFER (PHPCS) en suivant ses instructions d'installation (via le compositeur, le fichier PHAR, la poire ou la caisse GIT).
Assurez-vous que la version de PHP_CODESNIFFER correspond à nos exigences.
Installez des variableanalysis. Téléchargez le fichier zip ou tar.gz à partir de la page de version VariaBeLanalysis. Développez le fichier et renommez le répertoire résultant à phpcs-variable-analysis . Déplacez le répertoire vers un endroit où vous souhaitez respecter toutes vos normes PHPCS.
Ajoutez les chemins des normes nouvellement installées à la configuration PHP_CODESNIFFER installée_paths. La commande suivante doit ajouter les nouvelles normes à vos normes existantes (assurez-vous de fournir les chemins réels des répertoires que vous avez créés ci-dessus).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
Si vous n'avez pas d'autres normes installées, vous pouvez le faire plus facilement (encore une fois, assurez-vous de fournir les chemins réels):
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
Il existe une variété d'options pour personnaliser le comportement de la variableNALYSY, jetez un œil à la règle incluse.xml.example pour des exemples commentés d'une configuration.
Les options disponibles sont les suivantes:
allowUnusedFunctionParameters (bool, par défaut false ): si défini sur true, les arguments de fonction ne seront jamais marqués comme inutilisés.allowUnusedCaughtExceptions (bool, par défaut true ): Si défini sur true, les variables d'exception capturées ne seront jamais marquées comme inutilisées.allowUnusedParametersBeforeUsed (bool, par défaut true ): si défini sur true, les arguments de fonction inutilisés seront ignorés s'ils sont suivis par des arguments de fonction utilisés.allowUnusedVariablesBeforeRequire (BOOL, FAUX false ): Si défini sur true, les variables définies avant un require , require_once , include ou include_once ne seront pas marquées comme inutilisées. Ils peuvent être destinés au fichier requis.allowUndefinedVariablesInFileScope (BOOL, false DE DÉFAUT): S'il est défini sur les variables non définies, les variables dans la portée de niveau supérieur du fichier ne seront jamais marquées comme indéfinies. Cela peut être utile pour les fichiers de modèle qui utilisent de nombreuses variables globales définies ailleurs.allowUnusedVariablesInFileScope (BOOL, false par défaut): Si défini sur True, les variables inutilisées dans la portée de niveau supérieur du fichier ne seront jamais marquées comme inutilisées. Cela peut être utile lors de la définition de nombreuses variables globales à utiliser ailleurs.validUnusedVariableNames (String, par défaut null ): Une liste de noms de variables d'espace réservée à l'espace que vous souhaitez ignorer à partir des avertissements variables inutilisés. Par exemple, pour ignorer les variables $junk et $unused , cela pourrait être défini sur 'junk unused' .ignoreUnusedRegexp (String, par défaut null ): une chaîne PHP Regexp (notez que cela nécessite des délimiteurs explicites) pour les variables que vous souhaitez ignorer à partir d'avertissements variables inutilisés. Par exemple, pour ignorer les variables $_junk et $_unused , cela pourrait être défini sur '/^_/' .validUndefinedVariableNames (String, par défaut null ): Une liste séparée par l'espace des noms des variables d'espace réservé que vous souhaitez ignorer à partir des avertissements de variables non définis. Par exemple, pour ignorer les variables $post et $undefined , cela pourrait être défini sur 'post undefined' . Ceci peut être utilisé en combinaison avec validUndefinedVariableRegexp .validUndefinedVariableRegexp (String, par défaut null ): une chaîne PHP Regexp (notez que cela nécessite des délimiteurs explicites) pour les variables que vous souhaitez ignorer à partir des avertissements variables non définis. Par exemple, pour ignorer les variables $post et $undefined , cela pourrait être défini sur '/^(post|undefined)$/' . Ceci peut être utilisé en combinaison avec validUndefinedVariableNames .allowUnusedForeachVariables (BOOL, par défaut true ): Si défini sur True, les valeurs inutilisées de la syntaxe key => value dans une boucle foreach ne seront jamais marquées comme inutilisées.sitePassByRefFunctions (chaîne, par défaut null ): une liste des fonctions personnalisées qui passent en variables à initialiser par référence (par exemple preg_match() ) et ne devraient donc pas exiger que ces variables soient définies à l'avance. La liste est séparée de l'espace et chaque entrée est du nom de forme de functionName:1,2 . Le nom de la fonction vient d'abord suivi d'un côlon et d'une liste de numéros d'argument séparés par des virgules (à partir de 1) qui devraient être considérés comme des définitions variables. La valeur spéciale ... dans la liste des arguments entraînera tous les arguments après le dernier numéro considéré comme des définitions de variables.allowWordPressPassByRefFunctions (bool, par défaut false ): Si défini sur true, une liste des fonctions de référence WordPress courantes sera ajoutée à la liste de PHP afin que le passage des variables non définies à ces fonctions (à initialiser par référence) soit autorisée.Pour définir ces options, vous devez utiliser XML dans votre ensemble de règles. Pour plus de détails, consultez la page PHPCS personnalisable Sniff Properties. Voici un exemple qui ignore toutes les variables qui commencent par un soulignement:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >Cela a été transporté à partir de l'excellent travail à https://github.com/illusori/php_codesniffer-variableanalysis
Veuillez ouvrir des problèmes ou PRS sur ce référentiel.
Toute modification doit être accompagnée de tests et doit passer une analyse line et statique. Veuillez utiliser PHPDOC (plutôt que les types réels) pour déclarer les types car cela doit s'exécuter dans PHP 5.4.
Pour exécuter des tests, assurez-vous que le compositeur est installé, puis exécutez:
composer install # you only need to do this once
composer test
Pour exécuter la lie, utilisez:
composer lint
Pour exécuter une analyse statique, utilisez:
composer phpstan