Magento 2: Очистка неиспользованных зависимостей

magento.stackexchange https://magento.stackexchange.com//questions/93587

  •  19-12-2019
  •  | 
  •  

Вопрос

Кто-нибудь знает об инструменте для очистки / анализа кода, который сообщил бы программисту PHP Magento 2, который разрядится аргументы, которые не используются?

Например, инструмент, который будет смотреть на следующий класс

<?php
namespace Namespace\Module\Controller\V1;
class MyClass extends \Magento\Framework\App\Action\Action
{
    protected $resultJsonFactory;
    protected $metadataService;
    protected $urlModel;

    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
        \Namespace\Module\Helper\Api $apiHelper,
    ) {
        parent::__construct($context);
        $this->searchCriteriaBuilder      = $searchCriteriaBuilder;
        $this->metadataService            = $metadataServiceInterface;
    }

    public function execute()
    {
        $result = $this->resultJsonFactory->create();
        return $result->setData($items);
    }  
}
.

и сообщите нам, что

  1. Класс не использует свойство $urlModel

  2. класс использует только свойство $metadataService при назначении в конструкторе

  3. Учитывая, сколько Magento Programming включает в себя «попробовать этот класс, нет, ну, возможно, этот класс», я обнаруживаю, что я оставляю за гигантскими конструкторами с зависимостями, я не более не использую.Наличие инструмента, чтобы помочь убрать это, было бы здорово.

Это было полезно?

Решение

Что касается поля urlModel, можно получить предупреждение, если его видимость установлена для private и Mess Detector, является сконфигурирован в phpstorm с dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml.В противном случае есть шанс, что это свойство используется в детских классах, и детектор беспорядков не проверяет это.

Чехол

с metadataService не покрывается, потому что он инициализируется и, таким образом, рассматривается как , используемый .Можно быстро проверить каждое поле в классе, используя функцию «Найти использование» в PHP Storm, если нет «чтения» использования, то, скорее всего, его можно смело удалить.

Общая рекомендация состоит в том, чтобы настроить PHP MD и PHP CS (код Sniffer) с одинаковыми файлами конфигурации, которые используются Magento Static Tests, также имеет смысл устанавливать серьезность к ошибке (поэтому шторм PHP подчеркивает ошибки с красной волновой линией)ОтказДля кода Sniffer он расположен здесь dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/ruleset.xml

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top