Какие есть инструменты для проверки стандарта кодирования Magento 2?

14

В настоящее время я работаю над проектом проверки стандартов кодирования Magento 2.

Доступен ли какой-либо другой инструмент, кроме PHP_CodeSniffer , для проверки правильности написания кода в Magento 2 и PHP?

Рама Чандран М
источник

Ответы:

9

Magento 2 использует стандарт кодирования ECGM2

Вы можете скачать здесь

https://github.com/magento-ecg/coding-standard

ECG Magento Code Sniffer Coding Standard - это набор правил и снифферов для инструмента PHP_CodeSniffer .

Это позволяет автоматически проверять ваш код на наличие некоторых распространенных проблем с Magento и PHP, таких как:

  1. необработанные SQL-запросы; SQL-запросы внутри цикла;
  2. прямая реализация классов Mage и Enterprise;
  3. ненужная загрузка коллекции;
  4. чрезмерная сложность кода;
  5. использование опасных функций; использование PHP Superglobals;

и много других.

  1. ЭКГ для Magento
  2. EcgM2 для Magento 2

Оба Magento и Magento 2 поддерживаются.

Принц Патель
источник
Этот инструмент для расширения для проверки всего кода Magento 2?
Рама Чандран М
Вы можете проверить модуль Magento 2 по этой команде после установки ECGM2 "phpcs --standard = EcgM2 / path / to / module"
Prince Patel
Конечно, Патель. Любой другой инструмент, доступный для, пожалуйста, добавьте в комментариях.
Рама Чандран М
Должен ли я знать, требуется ли проверка W3C для проверки кода Magento 2?
Рама Чандран М
Проверка W3C предназначена для презентации веб-страниц Magento, а не для стандарта кодирования. Magento использует только ЭКГ для Magento 1 и 2 для проверки стандарта расширенного кодирования.
Принц Патель
12

Magento 2 использует стандарт кодирования ECGM2:

  1. Установите стандарт кодирования:

    cd to/your/magento/install/directory
    composer create-project --repository=https://repo.magento.com magento/marketplace-eqp magento-coding-standard
    composer require magento/marketplace-eqp
    cd magento-coding-standard

    Если вы получили ошибку:

    Неустранимая ошибка PHP: Uncaught PHP_CodeSniffer_Exception: Ссылочный снифф "MEQP1.Exceptions.Namespace" не существует

    vendor/bin/phpcs --config-set installed_paths ../../..
    vendor/bin/phpcs --config-set m2-path <path-to-magento2> ( for eg. sudo vendor/bin/phpcs --config-set m2-path  /var/www/html/magento2 )
  2. Проверьте расширение M2:

    Для автоматического исправления ошибок используйте phpcbf:

    vendor/bin/phpcbf <path-to-magento2>/app/code/Vendor/Module/Block/ --standard=MEQP2 --no-patch --extensions=php,phtml,xml,css,js

    Для просмотра файла

    vendor/bin/phpcbf <path-to-magento2>/app/code/Vendor/Module/view/frontend/templates --standard=MEQP2 --extensions=php,phtml 

    Чтобы проверить ошибки / предупреждения:

    vendor/bin/phpcs <path-to-magento2>/app/code/Vendor/Module/Block/ --standard=MEQP2 --extensions=phtml,xml,css,js,php

    Для просмотра файла

    vendor/bin/phpcbf <path-to-magento2>/app/code/Vendor/Module/view/frontend/templates --standard=MEQP2 --extensions=php,phtml

    Решение для некоторых предупреждений доступно здесь:

    Как исправить предупреждения / ошибки, возникшие в отчете технического обзора Magento Marketplace?

  3. Технический обзор торговой площадки:

    vendor/bin/phpcs /path/to/your/extension --standard=MEQP2 --severity=10
  4. Подтвердите расширение Magento 2:

    Загрузите «validate_m2_package.php» с https://gist.github.com/alankent/fcf280dd9c599921b71d#file-validate_m2_package_v2-php и поместите его в корневой каталог magento:

    cd <path-to-magento2>
    php validate_m2_package.php Vendor_Module.zip
Чарви Парих
источник
Перед запуском composer require magento/marketplace-eqpисправьте это composer config repositories.magento-eqp git https://github.com/magento/marketplace-eqp. github.com/magento/marketplace-eqp/issues/2
неизвестно
8

В дополнение к принцу Пательсу ответят ...

Magento 2 также использует стандарт кодирования PSR-2 , так что вы также можете запустить phpcs --standard=PSR2 /path/to/module. Для исправления «ошибок» PSR-2 вы можете использовать « PHP Code Beautifier and Fixer (phpcbf) »

Для меня это работает очень хорошо ...

  • исправить ошибку PSR2 автоматически
  • создавать отчеты
  • объединить отчеты в один файл

Команды:

phpcbf --standard=PSR2 ./app/
phpcs --report-gitblame=CS-blame --report-source=CS-code --report-full=CS-full ./app/
cat CS-* >> ECG-PSR2 ; rm CS-*

Если вы используете git, вы можете добавить pre-commit ловушку для запуска phpcs/ phpcbfавтоматически, прежде чем вносить изменения.


Обновить:

Не особенно для стандартов кодирования magento, но хорошая практика imho ...

  • работать phpcbfс PSR2и MEQP2стандартом
  • работать phpcs -sс обоими стандартами
  • бегать phpmd -s
  • бегать phpstan -l 7
    • для magento 2.2 вы должны использовать версию 0.8.5

-s опция отображать имя сниффа ... возможно, используйте ful, если вы хотите подавить предупреждения

Для хороших отчетов я бы предложил phpdox . Он собирает данные из ...

  • phploc
  • phpcs
  • phpmd
  • phpunit покрытие кода
  • мерзавец
  • ...

Пример (без покрытия кода): http://phpdox.de/demo/PHPUnit/index.xhtml

Другие инструменты:

sv3n
источник
Спасибо @ sv3n. Любой инструмент для проверки безопасности?
Рама Чандран М
1
Для безопасности у меня нет инструментов. Я думаю, что следование стандартам кодирования (избегать необработанных запросов и т. Д.) Является первым хорошим шагом.
sv3n
2

Чтобы проверить уязвимости приложения M2, мы можем использовать:

ZAP(Zed Attack Proxy).
Bhavani
источник