Magento 2:Limpiar dependencias no utilizadas
Pregunta
¿Alguien conoce una herramienta de análisis/limpieza de código que pueda informar a un programador de PHP Magento 2 qué argumentos DI no se están utilizando?
Por ejemplo, una herramienta que analizaría la siguiente clase
<?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);
}
}
y dinos que
La clase no utiliza el
$urlModel
propiedadLa clase sólo utiliza el
$metadataService
propiedad al asignar en el constructor
Dado que gran parte de la programación de Magento implica "probar esta clase, no, bueno, tal vez esta clase", descubro que dejo atrás constructores gigantes con dependencias que ya no uso.Tener una herramienta para ayudar a limpiar esto sería genial.
Solución
Con respecto a urlModel
campo, es posible obtener una advertencia si su visibilidad se establece en private
y el detector de desorden es configurado en PHPStorm con dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml
.De lo contrario, existe la posibilidad de que esta propiedad se utilice en clases secundarias y el detector de desorden no lo comprueba.
Caso con metadataService
no está cubierto, porque está inicializado y por lo tanto se considera como usado.Es posible comprobar rápidamente todos los campos de una clase utilizando la función 'Buscar usos' en PHP Storm; si no hay usos de 'lectura', lo más probable es que se pueda eliminar de forma segura.
El consejo general es configurar PHP MD y PHP CS (rastreador de código) con los mismos archivos de configuración que utilizan las pruebas estáticas de Magento; también tiene sentido establecer la gravedad en Error (por lo que PHP Storm subraya los errores con una línea de onda roja).Para el rastreador de códigos se encuentra aquí. dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/ruleset.xml