Plugin para la herramienta de análisis estático PHP_CODESNIFFER que agrega análisis del uso de variables problemáticas.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable )unset() sin ser definidos. (Código de sniff: VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable )VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable )$this , self::$static_member , static::$static_member se usa fuera de alcance de clase. (Códigos de sniff: VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass El análisis de variables requiere PHP 5.4 o superior y PHP Codesniffer versión 3.5.6 o superior.
Este es el método más fácil.
Primero, instale PhPCodesNiffer-Composer-Installer para su proyecto si aún no lo ha hecho. Esto también instalará PHPC.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
Luego instale estos estándares.
composer require --dev sirbrillig/phpcs-variable-analysis
Luego puede incluir los sniffs agregando una línea como la siguiente a su archivo phpcs.xml.
<rule ref="VariableAnalysis"/>
¡Debería funcionar después de eso!
Instale PHP_CODESNIFFER (PHPCS) siguiendo sus instrucciones de instalación (a través de compositor, archivo PHAR, Pear o GIT Checkout).
Asegúrese de que la versión de Php_CodesNiffer coincida con nuestros requisitos.
Instale el análisis de variables. Descargue el archivo Zip o Tar.gz de la última página de lanzamiento de VariAbleAnalysis. Expanda el archivo y cambie el nombre del directorio resultante al phpcs-variable-analysis . Mueva el directorio a un lugar donde desee mantener todos sus estándares PHPCS.
Agregue las rutas de los estándares recién instalados a la configuración PhP_CodesNiffer Installed_Paths. El siguiente comando debe agregar los nuevos estándares a sus estándares existentes (asegúrese de proporcionar las rutas reales a los directorios que creó anteriormente).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
Si no tiene otros estándares instalados, puede hacerlo más fácilmente (nuevamente, asegúrese de suministrar las rutas reales):
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
Hay una variedad de opciones para personalizar el comportamiento del análisis de variables, eche un vistazo a las reglas incluidas.xml.Ejemplo para ejemplos comentarios de una configuración.
Las opciones disponibles son las siguientes:
allowUnusedFunctionParameters (bool, false predeterminado): si se establece en verdadero, los argumentos de función nunca se marcarán como no utilizados.allowUnusedCaughtExceptions (bool, predeterminado true ): si se establece en verdadero, las variables de excepción atrapadas nunca se marcarán como no utilizadas.allowUnusedParametersBeforeUsed (bool, predeterminado true ): si se establece en verdadero, los argumentos de la función no utilizados se ignorarán si son seguidos por argumentos de funciones utilizados.allowUnusedVariablesBeforeRequire (bool, predeterminado false ): si se establece en verdadero, las variables definidas antes de require , require_once , include o include_once no se marcarán como no utilizadas. Pueden estar destinados al archivo requerido.allowUndefinedVariablesInFileScope (bool, false predeterminado): si se establece en verdadero, las variables indefinidas en el alcance de nivel superior del archivo nunca se marcarán como indefinidos. Esto puede ser útil para archivos de plantilla que usan muchas variables globales definidas en otros lugares.allowUnusedVariablesInFileScope (bool, false predeterminado): si se establece en verdadero, las variables no utilizadas en el alcance de nivel superior del archivo nunca se marcarán como no utilizados. Esto puede ser útil al definir muchas variables globales que se utilizarán en otro lugar.validUnusedVariableNames (cadena, null predeterminado): una lista separada por el espacio de nombres de variables de marcador de posición que desea ignorar de advertencias de variables no utilizadas. Por ejemplo, para ignorar las variables $junk y $unused , esto podría configurarse en 'junk unused' .ignoreUnusedRegexp (String, null predeterminado): una cadena PHP REGEXP (tenga en cuenta que esto requiere delimitadores explícitos) para variables que desea ignorar de advertencias variables no utilizadas. Por ejemplo, para ignorar las variables $_junk y $_unused , esto podría establecerse en '/^_/' .validUndefinedVariableNames (cadena, null predeterminado): una lista separada por el espacio de los nombres de las variables de marcador de posición que desea ignorar de advertencias variables indefinidas. Por ejemplo, para ignorar las variables $post y $undefined , esto podría configurarse en 'post undefined' . Esto se puede utilizar en combinación con validUndefinedVariableRegexp .validUndefinedVariableRegexp (String, null predeterminado): una cadena PHP RegExp (tenga en cuenta que esto requiere delimitadores explícitos) para variables que desea ignorar de advertencias variables indefinidas. Por ejemplo, para ignorar las variables $post y $undefined , esto podría establecerse en '/^(post|undefined)$/' . Esto se puede usar en combinación con validUndefinedVariableNames .allowUnusedForeachVariables (bool, predeterminado true ): si se establece en true, los valores no utilizados de la key => value en un bucle foreach nunca se marcarán como no utilizados.sitePassByRefFunctions (cadena, null predeterminado): una lista de funciones personalizadas que pasan en variables para inicializarse por referencia (por ejemplo, preg_match() ) y, por lo tanto, no debe requerir que esas variables se definan con anticipación. La lista está separada por el espacio y cada entrada es del functionName:1,2 . El nombre de la función viene primero seguido de un colon y una lista separada por comas de números de argumentos (a partir de 1) que deben considerarse definiciones variables. El valor especial ... en la lista de argumentos hará que todos los argumentos después del último número se consideren definiciones variables.allowWordPressPassByRefFunctions (bool, false predeterminado): si se establece en True, se agregará una lista de funciones comunes de pasar por referencia de WordPress (para ser inicializada por referencia) se permitirá.Para establecer estas opciones, debe usar XML en su conjunto de reglas. Para obtener más detalles, consulte la página PHPCS Customizable Sniff Propiedades. Aquí hay un ejemplo que ignora todas las variables que comienzan con un bajo:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >Esto fue bifurcado por el excelente trabajo en https://github.com/illusori/php_codesniffer-variableanalysisalysis
Abra problemas o PRS en este repositorio.
Cualquier cambio debe ir acompañado de pruebas y debe pasar la pelusa y el análisis estático. Utilice PHPDOC (en lugar de tipos reales) para declarar tipos, ya que esto debe ejecutarse en PHP 5.4.
Para ejecutar pruebas, asegúrese de que el compositor esté instalado, luego ejecute:
composer install # you only need to do this once
composer test
Para ejecutar la pelusa, use:
composer lint
Para ejecutar el análisis estático, use:
composer phpstan