Чи задумувалися ви коли-небудь, як легко перевірити якість власного коду, коду ваших колег, чи, можливо, третьостороннього модуля, який ви хочете використовувати на Magento проекті?

Для цього команда розробників Magento створила програму Magento Extension Quality Program Coding Standard (Magento EQP), яка дозволяє перевіряти код на відповідність стандарту, а також виявляти такі недоліки:

- виконання SQL запитів у циклі;
- використання небезпечних функцій;
- використання супер-глобальних змінних;
- надмірна складність коду;
- невиправдані завантаження колекцій.

За допомогою цієї програми можна перевірити код, використовуючи одне із двох правил PHP CodeSnifferMEQP1 (для Magento 1) або MEQP2 (для Magento 2).

Встановлення

Встановити Magento EQP можна за допомогою Composer, виконавши CLI команду:

composer create-project --repository=https://repo.magento.com magento/marketplace-eqp magento-coding-standard

Перевірка коду

Для перевірки коду (який, наприклад, знаходиться у папці /path/to/your/extension), перейдіть у папку Magento EQP:

cd /path/to/magento-coding-standard

та виконайте команду:

vendor/bin/phpcs /path/to/your/extension --standard=MEQP2 > log.txt

Результат виконання перевірки запишеться у файл log.txt і матиме схожий вигляд:

FILE: /path/to/your/extension/Model/Object.php
----------------------------------------------------------------------
FOUND 0 ERRORS AND 10 WARNINGS AFFECTING 10 LINES
----------------------------------------------------------------------
  46 | WARNING | Use of protected class members is discouraged.
  51 | WARNING | Use of protected class members is discouraged.
  56 | WARNING | Use of protected class members is discouraged.
  61 | WARNING | Use of protected class members is discouraged.
  66 | WARNING | Use of protected class members is discouraged.
  71 | WARNING | Use of protected class members is discouraged.
 109 | WARNING | Use of protected class members is discouraged.
 159 | WARNING | Direct object instantiation (object of
     |         | \Magento\Framework\DataObject) is discouraged in
     |         | Magento 2.
 222 | WARNING | The use of function is_null() is discouraged; use
     |         | strict comparison "=== null" instead.
 256 | WARNING | Direct throw of Exception is discouraged. Use
     |         | \Magento\Framework\Exception\LocalizedException
     |         | instead.
----------------------------------------------------------------------

Для початку зверніть увагу на те, чи немає інформації про помилки (ERRORS), які потрібно виправити, особливо, якщо ви бажаєте, аби ваш код пройшов технічну перевірку на Magento Marketplace. Стосовно застережень (WARNINGS), спробуйте їх також  виправляти.

Автоматичне виправлення помилок

Якщо в результаті перевірки ви отримали надзвичайно велику кількість застережень, Magento EQP надає інструмент, який автоматично, по можливості виправить недоліки за вас.

Для запуску процесу автоматичного виправлення, виконайте команду:

vendor/bin/phpcbf --no-patch /path/to/your/extension --standard=MEQP2