Плагин для инструмента статического анализа PHP_CODESNIFFER, который добавляет анализ проблемного использования переменных.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable )unset() без определения. (Sniff Code: VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable )VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable )$this , self::$static_member , static::$static_member используется вне сферы действия класса. (Коды Sniff: VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass или VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass ) Вариант вариации требует PHP 5,4 или выше, а PHP -кодовая версия 3.5.6 или выше.
Это самый простой метод.
Во-первых, установите phpcodesniffer-composer-installer для вашего проекта, если у вас еще нет. Это также установит PHPCS.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
Затем установите эти стандарты.
composer require --dev sirbrillig/phpcs-variable-analysis
Затем вы можете включить Sniffs, добавив линию, подобную следующей, в ваш файл phpcs.xml.
<rule ref="VariableAnalysis"/>
Это должно работать после этого!
Установите php_codesniffer (PHPCS), следуя его инструкциям по установке (через Composer, Phar File, Gear или Git Checkout).
Убедитесь, что версия php_codesniffer соответствует нашим требованиям.
Установите вариблеанализ. Загрузите файл Zip или Tar.gz с последней страницы выпуска Variableanalysis. Расширить файл и переименовать полученный каталог в phpcs-variable-analysis . Переместите каталог в место, где вы хотели бы сохранить все свои стандарты PHPCS.
Добавьте пути вновь установленных стандартов в конфигурацию PHP_Codesniffer install_paths. Следующая команда должна добавить новые стандарты к вашим существующим стандартам (обязательно предоставите фактические пути к каталогам, созданным выше).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
Если у вас не установлены другие стандарты, вы можете сделать это легче (опять же, обязательно предоставьте фактические пути):
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
Существует множество вариантов для настройки поведения вариаблеанализа, взгляните на включенные правила.
Доступные варианты следующие:
allowUnusedFunctionParameters (bool, false по умолчанию): если установить на истину, аргументы функций никогда не будут помечены как неиспользованные.allowUnusedCaughtExceptions (Bool, true по умолчанию): если установлено в True, пойманные переменные исключения никогда не будут отмечены как неиспользованные.allowUnusedParametersBeforeUsed (bool, по умолчанию true ): если установить на истинную аргументы неиспользованных функций, будут проигнорированы, если за ними следуют аргументы используемых функций.allowUnusedVariablesBeforeRequire (bool, false по умолчанию): если установить на истину, переменные, определенные перед require , require_once , include или include_once не будут отмечены как неиспользованные. Они могут быть предназначены для требуемого файла.allowUndefinedVariablesInFileScope (bool, false по умолчанию): если установить на истинные, неопределенные переменные в прицеле верхнего уровня файла никогда не будут помечены как неопределенные. Это может быть полезно для файлов шаблонов, которые используют многие глобальные переменные, определенные в другом месте.allowUnusedVariablesInFileScope (Bool, false по умолчанию): если установить на TRUE, неиспользованные переменные в прицеле верхнего уровня файла никогда не будут помечены как неиспользованные. Это может быть полезно при определении множества глобальных переменных, которые будут использоваться в другом месте.validUnusedVariableNames (String, Default null ): разделенный пространством список имен переменных заполнителей, которые вы хотите игнорировать из неиспользованных переменных предупреждений. Например, чтобы игнорировать переменные $junk и $unused , это может быть настроено на 'junk unused' .ignoreUnusedRegexp (String, по умолчанию null ): строка REGEXP PHP (обратите внимание, что это требует явных делимитов) для переменных, которые вы хотите игнорировать из неиспользованных переменных предупреждений. Например, чтобы игнорировать переменные $_junk и $_unused , это может быть установлено на '/^_/' .validUndefinedVariableNames (String, Default null ): разделенный пространством список имен переменных заполнителей, которые вы хотите игнорировать из неопределенных переменных предупреждений. Например, чтобы игнорировать переменные $post и $undefined , это может быть установлено, чтобы 'post undefined' . Это может использоваться в сочетании с validUndefinedVariableRegexp .validUndefinedVariableRegexp (String, по умолчанию null ): строка Regexp PHP (обратите внимание, что это требует явных делимитов) для переменных, которые вы хотите игнорировать из не определенных предупреждений переменных. Например, чтобы игнорировать переменные $post и $undefined , это может быть установлено на '/^(post|undefined)$/' . Это может быть использовано в сочетании с validUndefinedVariableNames .allowUnusedForeachVariables (Bool, true Default): если установить на TRUE, неиспользованные значения из синтаксиса key => value в цикле foreach никогда не будут отмечены как неиспользованные.sitePassByRefFunctions (String, по умолчанию null ): список пользовательских функций, которые проходят в переменных, которые должны быть инициализированы с помощью ссылки (например, preg_match() ) и, следовательно, не должны требовать, чтобы эти переменные были определены заранее. Список разделен пространством, и каждая запись имеет форму functionName:1,2 . Имя функции появляется в первую очередь, за которой следует толстая кишка и разделенный запятой список номеров аргументов (начиная с 1), которые следует считать определениями переменных. Специальное значение ... в списке аргументов вызовет все аргументы после того, как последнее число считается определениями переменных.allowWordPressPassByRefFunctions (bool, false по умолчанию): если установить в TRUE, в список PHP будет добавлен список общих функций WordPress, чтобы быть инициализированным посредством ссылки).Чтобы установить эти эти параметры, вы должны использовать XML на своем наборе правил. Для получения подробной информации см. Настраиваемую страницу PHPCS Sniff Properties. Вот пример, который игнорирует все переменные, которые начинаются с подчеркивания:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >Это было раздирается от отличной работы в https://github.com/illusori/php_codesniffer-variableanalysises
Пожалуйста, откройте проблемы или PRS в этом репозитории.
Любые изменения должны сопровождаться тестами и должны пройти линию и статический анализ. Пожалуйста, используйте PHPDOC (а не фактические типы) для объявления типов, поскольку это должно работать в PHP 5.4.
Чтобы запустить тесты, убедитесь, что композитор установлен, затем запустите:
composer install # you only need to do this once
composer test
Чтобы запустить линейку, используйте:
composer lint
Чтобы запустить статический анализ, используйте:
composer phpstan