Magento 2:Nicht verwendete Abhängigkeiten bereinigen
Frage
Kennt jemand ein Code-Reinigungs- / Analyse-Tool, das einen PHP-Magento-2-Programmierer darüber informiert, welche DI-Argumente nicht verwendet werden?
Zum Beispiel ein Tool, das sich die folgende Klasse ansehen würde
<?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);
}
}
und sag uns das
Die Klasse verwendet nicht die
$urlModel
EigenschaftDie Klasse verwendet nur die
$metadataService
eigenschaft beim Zuweisen im Konstruktor
Wenn man bedenkt, wie viel von der Magento-Programmierung beinhaltet "Probieren Sie diese Klasse aus, nein, vielleicht diese Klasse", stelle ich fest, dass ich riesige Konstruktoren mit Abhängigkeiten hinterlasse, die ich nicht mehr benutze.Ein Werkzeug zu haben, um dies zu bereinigen, wäre großartig.
Lösung
In Bezug auf die urlModel
feld, es ist möglich, eine Warnung zu erhalten, wenn die Sichtbarkeit auf eingestellt ist private
und Chaos-Detektor ist konfiguriert in PhpStorm mit dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml
.Andernfalls besteht die Möglichkeit, dass diese Eigenschaft in untergeordneten Klassen verwendet wird und Mess Detector dies nicht überprüft.
Koffer mit metadataService
wird nicht abgedeckt, da es initialisiert und somit als betrachtet wird verwendet.Es ist möglich, schnell jedes Feld in einer Klasse mit der Funktion 'Find usages' in PHP Storm zu überprüfen. Wenn es keine 'Read' -Verwendungen gibt, kann es höchstwahrscheinlich sicher entfernt werden.
Allgemeiner Rat ist, PHP MD und PHP CS (Code Sniffer) mit den gleichen Konfigurationsdateien zu konfigurieren, die von statischen Magento-Tests verwendet werden. Außerdem ist es sinnvoll, den Schweregrad auf Fehler zu setzen (so unterstreicht PHP Storm Fehler mit einer roten Wellenlinie).Für Code-Sniffer befindet es sich hier dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/ruleset.xml