Plugin para ferramenta de análise estática php_codesniffer que adiciona análise de uso problemático de variáveis.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable )unset() sem serem definidas. (Sniff Code: VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable )VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable )$this , self::$static_member , static::$static_member é usado fora do escopo da classe. (Sniff Codes: VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass ou VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass ) A análise de variáveis requer Php 5.4 ou superior e Códigos PHP Versão 3.5.6 ou superior.
Este é o método mais fácil.
Primeiro, instale o PHPCodesniffer-Composer-Installer para o seu projeto, se você ainda não o possui. Isso também instalará PHPCs.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
Em seguida, instale esses padrões.
composer require --dev sirbrillig/phpcs-variable-analysis
Em seguida, você pode incluir os Sniffs adicionando uma linha como a seguinte ao seu arquivo phpcs.xml.
<rule ref="VariableAnalysis"/>
Deveria funcionar depois disso!
Instale o php_codesniffer (phpcs) seguindo suas instruções de instalação (via arquivo de compositor, arquivo phar, pêra ou git).
Certifique -se de que a versão do PHP_CODESNIFFER corresponda aos nossos requisitos.
Instale a variableanálise. Faça o download do arquivo zip ou tar.gz na página de liberação mais recente da VariableAnálise. Expanda o arquivo e renomeie o diretório resultante para phpcs-variable-analysis . Mova o diretório para um local onde você deseja manter todos os seus padrões PHPCs.
Adicione os caminhos dos padrões recém -instalados à configuração php_codesniffer instalada_paths. O comando a seguir deve anexar os novos padrões aos seus padrões existentes (não deixe de fornecer os caminhos reais para os diretórios que você criou acima).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
Se você não tiver outros padrões instalados, poderá fazer isso com mais facilidade (novamente, não deixe de fornecer os caminhos reais):
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
Há uma variedade de opções para personalizar o comportamento da variableanálise, dê uma olhada no regimeset.xml.exemplo para exemplos comentados de uma configuração.
As opções disponíveis são as seguintes:
allowUnusedFunctionParameters (bool, padrão false ): Se definido como true, os argumentos da função nunca serão marcados como não utilizados.allowUnusedCaughtExceptions (bool, padrão true ): Se definido como true, as variáveis de exceção capturadas nunca serão marcadas como não utilizadas.allowUnusedParametersBeforeUsed (bool, padrão true ): se definido como true, os argumentos de função não utilizados serão ignorados se forem seguidos por argumentos de função usados.allowUnusedVariablesBeforeRequire (bool, padrão false ): se definido como true, as variáveis definidas antes de um require , require_once , include ou include_once não serão marcadas como não utilizadas. Eles podem ser destinados ao arquivo necessário.allowUndefinedVariablesInFileScope (Bool, padrão false ): Se definido como True, variáveis indefinidas no escopo de nível superior do arquivo nunca serão marcadas como indefinidas. Isso pode ser útil para arquivos de modelo que usam muitas variáveis globais definidas em outros lugares.allowUnusedVariablesInFileScope (bool, padrão false ): se definido como true, variáveis não utilizadas no escopo de nível superior do arquivo nunca serão marcadas como não utilizadas. Isso pode ser útil ao definir muitas variáveis globais a serem usadas em outros lugares.validUnusedVariableNames (String, null padrão): Uma lista separada por espaço de nomes de variáveis de espaço reservado que você deseja ignorar de avisos variáveis não utilizados. Por exemplo, para ignorar as variáveis $junk e $unused , isso pode ser definido como 'junk unused' .ignoreUnusedRegexp (string, null padrão): uma string php regexp (observe que isso requer delimitadores explícitos) para variáveis que você deseja ignorar de avisos de variáveis não utilizados. Por exemplo, para ignorar as variáveis $_junk e $_unused , isso pode ser definido como '/^_/' .validUndefinedVariableNames (String, null padrão): Uma lista separada por espaço de nomes de variáveis de espaço reservado que você deseja ignorar de avisos variáveis indefinidos. Por exemplo, para ignorar as variáveis $post e $undefined , isso pode ser definido como 'post undefined' . Isso pode ser usado em combinação com validUndefinedVariableRegexp .validUndefinedVariableRegexp (String, null padrão): uma string php regexp (observe que isso requer delimitadores explícitos) para variáveis que você deseja ignorar de avisos de variáveis indefinidos. Por exemplo, para ignorar as variáveis $post e $undefined , isso pode ser definido como '/^(post|undefined)$/' . Isso pode ser usado em combinação com os validUndefinedVariableNames .allowUnusedForeachVariables (bool, padrão true ): Se definido como true, valores não utilizados da sintaxe do key => value em um loop foreach nunca serão marcados como não utilizados.sitePassByRefFunctions (String, null padrão): Uma lista de funções personalizadas que passam em variáveis a serem inicializadas por referência (por exemplo, preg_match() ) e, portanto, não deve exigir que essas variáveis sejam definidas com antecedência. A lista é separada pelo espaço e cada entrada é do nome da functionName:1,2 . O nome da função vem primeiro, seguido por um cólon e uma lista separada por vírgula de números de argumentos (a partir de 1) que devem ser considerados definições variáveis. O valor especial ... na lista de argumentos fará com que todos os argumentos após o último número sejam considerados definições variáveis.allowWordPressPassByRefFunctions (bool, padrão false ): Se definido como true, uma lista de funções de passagem do WordPress comum será adicionada à lista de php para que as variáveis indefinidas para essas funções (a serem inicializadas por referência) sejam permitidas.Para definir essas opções, você deve usar o XML no seu conjunto de regras. Para detalhes, consulte a página PHPCS Snift Properties personalizáveis. Aqui está um exemplo que ignora todas as variáveis que começam com um sublinhado:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >Isso foi bifurcado no excelente trabalho em https://github.com/illusori/php_codesniffer-variableanalysis
Abra questões ou PRs neste repositório.
Quaisquer alterações devem ser acompanhadas por testes e devem passar no revestimento e na análise estática. Use o PHPDOC (em vez de tipos reais) para declarar tipos, pois isso deve ser executado no Php 5.4.
Para executar testes, verifique se o compositor está instalado e execute:
composer install # you only need to do this once
composer test
Para executar o linha, use:
composer lint
Para executar a análise estática, use:
composer phpstan