Задача
Определить совместимость кода с версией PHP
Примеры
- Старый сайт на php, надо понять, под какой версией PHP его можно запустить с минимальными правками.
- Вышла новая версия PHP. Получить список несоответствий текущего кода с новой версией.
Решение
Так как эта задача - в области работы над кодом, не будет работать в продакшне, можно использовать доступный код.
- PHP_CodeSniffer, https://github.com/squizlabs/PHP_CodeSniffer
конфигурируемый анализатор кода PHP / JS / CSS на предмет соответствия стандартам - PHPCompatibility, https://github.com/PHPCompatibility/PHPCompatibility
расширение для PHP_CodeSniffer для проверки совместимости
Установка
1. установка 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-- выведет операции в г
2. установка PHP_CodeSniffer глобально
- установка
composer global require "squizlabs/php_codesniffer=*"
- проверка
phpcs --version -- выведет версию
3. установка расширения
- установка
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/