- 2 мин
- 10385
Задача
Определить совместимость кода с версией PHP
Примеры
- Старый сайт на php, надо понять, под какой версией PHP его можно запустить с минимальными правками.
- Вышла новая версия PHP. Получить список несоотвествий текущего кода с новой версией.
Решение
Так как эта задача - в области работы над кодом, не будет работать в продакшне, можно использовать доступный код.
-
Composer, https://getcomposer.org/
средство управления пакетами -
PHP_CodeSniffer, https://github.com/squizlabs/PHP_CodeSniffer
конфигурируемый анализатор кода PHP / JS / CSS на предмет соответствия стандартам -
PHPCompatibility, https://github.com/PHPCompatibility/PHPCompatibility
расширение для PHP_CodeSniffer для проверки совместимости
Установка
-
установка
composerглобально-
папка под пакеты
созданиеmkdir -p /home/user/docker-web-stack/.composer
переменная окружения в~/.bashrcexport COMPOSER_HOME=/home/user/docker-web-stack/.composer
перечитать файлsource ~/.bashrc -
скачать и установить по инструкции, чтоб
composerбыл доступен в командной строке
ссылка: https://getcomposer.org/doc/00-intro.md -
проверка
composer -V-- выведет версию
иcomposer about -vvv-- выведет операции в г
-
папка под пакеты
-
установка
PHP_CodeSnifferглобально-
установка
composer global require "squizlabs/php_codesniffer=*" -
проверка
phpcs --version-- выведет версию
-
установка
-
установка расширения
-
установка
composer global require "phpcompatibility/php-compatibility=*" -
указание пути к расширению
phpcs --config-set installed_paths "$COMPOSER_HOME/vendor/phpcompatibility/php-compatibility -
проверка, вывести все доступные стандарты
phpcs -i
должно вывести что-то вроде этого:The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz, Zend and PHPCompatibility
Т.е. PHPCompatibility должен присутствовать в списке
-
установка
Примеры использования
На примере проекта ~/docker-web-stack/my-project/.
-
Проверить текущую папку, только файлы
.phpна соответствие текущему php установленному в ОС. Результаты - на экранphpcs --standard=PHPCompatibility --extensions=php --no-colors ./ -
Проверить текущую папку, только файлы
.phpна соответствие текущему php установленному в ОС. Результаты - на экран. Проверка - в три параллельных потока. Быстрее примерно на 20% в локальном тесте.phpcs --standard=PHPCompatibility --parallel=3 --extensions=php --no-colors ./ -
Проверить папку
my-awesome-project, только файлы.phpна соответствие php 7.4. В два потока. Все ошибки, игнорировать часть предупреждений. Полные результаты - в отчёт, саммари - на экран.
phpcs --standard=PHPCompatibility --extensions=php --no-colors --parallel=2 \ --error-severity=1 \ --warning-severity=7 \ --runtime-set testVersion 7.4 \ --report-width=auto \ --report-full=./phpc.74.txt \ --report-summary \ ~/projects/my-awesome-project/
Обновлено 18 января 2022