- 2 мин
- 8814
Задача
Определить совместимость кода с версией 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
переменная окружения в~/.bashrc
export 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