Найти тему
Online-Media

Анализ кода на соответствие версии PHP

Оглавление
Изображение от starline на Freepik
Изображение от starline на Freepik

Задача

Определить совместимость кода с версией PHP

Примеры

  1. Старый сайт на php, надо понять, под какой версией PHP его можно запустить с минимальными правками.
  2. Вышла новая версия PHP. Получить список несоответствий текущего кода с новой версией.

Решение

Так как эта задача - в области работы над кодом, не будет работать в продакшне, можно использовать доступный код.

  1. Composer, https://getcomposer.org/
    средство управления пакетами
  2. PHP_CodeSniffer, https://github.com/squizlabs/PHP_CodeSniffer
    конфигурируемый анализатор кода PHP / JS / CSS на предмет соответствия стандартам
  3. 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/

  1. Проверить текущую папку, только файлы .php на соответствие текущему php установленному в ОС. Результаты - на экран
    phpcs --standard=PHPCompatibility --extensions=php --no-colors ./
  2. Проверить текущую папку, только файлы .php на соответствие текущему php установленному в ОС. Результаты - на экран. Проверка - в три параллельных потока. Быстрее примерно на 20% в локальном тесте.
    phpcs --standard=PHPCompatibility --parallel=3 --extensions=php --no-colors ./
  3. Проверить папку 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/