A continuación explicaré cómo configurar de manera correcta tu PhpStorm para Magento 2 (este post está basado en un Magento 2.3).

Cómo información inicial, recomiendo instalar el paquete de composer hirak/prestissimo el cual descarga los paquetes en paralelo y acelera el proceso de instalación.

PHPCS

Php CodeSniffer es un validador de código que nos ayudará a escribir un buen código mostrándonos los errores que no cumplan con las recomendaciones indicadas por PHP. En este link podrás encontrar más información y leer los PSR aceptados, en especial PSR1, PSR2 y PSR4.

Para ello lo primero es instalarlo dentro de nuestro proyecto mediante composer.


composer require --dev magento/magento-coding-standard

Más info aquí: https://github.com/magento/magento-coding-standard

PHPMD

PHP Mess Detector es una herramienta basada en PHP Depend la cual a su vez es una herramienta para el cálculo de métricas de calidad. Siguiendo un conjunto de reglas definidas, analiza nuestro código y nos avisa de posibles problemas cómo:

  • Posibles bugs
  • Expresiones demasiado complicadas
  • Parámetros y métodos no utilizados.

Magento 2 tiene definido su conjunto de reglas de PHPMD y que en el siguiente apartado indicaremos cómo configurar.

Configuración de nuestro PhpStorm

Distinción de directorios

Dentro de una raíz de contenido, PhpStorm puede distinguir entre las carpetas que contienen código fuente y las que deben ser ignoradas para evitar que se hagan búsquedas, análisis en ellas, etc. 

Dentro de una raíz de contenido, PhpStorm puede distinguir entre carpetas de origen, carpetas de recursos, código de test y carpetas excluidas.

La carpeta marcada como fuente es la carpeta raíz para todos los namespaces PHP.

Para marcar los directorios debemos ir a PhpStorm -> Preferences, y en el buscador escribimos Directories

Directories Php Storm

De las carpetas de la imagen anterior haremos la siguiente distinción:

  • Excluded:
    • Todas las carpetas excepto app, var y vendor.
    • Dentro de la carpeta var, todas excepto la carpeta report.
  • Test: Carpeta dev
  • Sources: Carpetas app y vendor.

Los directorios nos quedarían marcados de la siguiente manera:

Mark Directories PhpStorm

Versión de PHP

En mi caso en particular, tengo varias versiones instaladas de PHP. Es por eso que dependiendo de con qué versión de Magento estemos trabajando, tengamos que indicar a PhpStorm que versión de PHP debe interpretar.

Para ello, vamos de nuevo a PhpStorm -> Preferences y bajo Languages Frameworks -> PHP elegiremos la versión. En nuestro caso, al ser un Magento 2.3 elegiremos la versión de PHP 7.2

Version de PHP

Si por cualquier motivo, bajo CLI Interpreter no viene indicado nuestra versión de PHP con la que estamos trabajando pulsaremos en los que hay a la derecha del selector y añadiremos manualmente nuestra versión indicando el directorio dónde se encuentra instalado.

Directory PHP

PHPCS y PHPMD

A continuación indicaremos a PHPStorm el conjunto de reglas y recomendaciones de que debe usar para analizar nuestro código.

Lo primero es comprobar que nuestro PHPStorm ha reconocido el PHPCS que hemos instalado anteriormente. Para ellos nos dirigiremos a PhpStorm -> Preferences y bajo Languages Frameworks -> PHP -> Code Sniffer y a la derecha del selector de Configuration pulsaremos en

Crearemos una nueva configuración e indicaremos el directorio de instalación de nuestro PHPCS _FOLDER_PROJECT_/vendor/bin/phpcs

PHPCS PhpStorm

Una vez configurado nuestro PHPCS en PHPStorm, vamos a indicarle a Magento que nos alerte de las reglas de PHPMD y PHPCS. Para ello vamos de nuevo a PhpStorm -> Preferences y bajo Editor -> Inspections, en el buscador de la derecha escribiremos PHP.

De aquí nos centraremos en los 2 últimos, PHP Code Sniffer validation y PHP Mess Detector validation.

Inspections PhpStorm

Para PHPCS elegiremos el estándar Magento2

PSR Magento 2

Si no apareciera en el selector la opción de Magento 2, probad a reiniciar el PhpStorm.

Después de estos pasos abriremos el composer.json de nuestro proyecto y añadiremos las siguientes líneas tal y como viene indicado aquí:


"scripts": {
"post-install-cmd": [
"([ $COMPOSER_DEV_MODE -eq 0 ] || vendor/bin/phpcs --config-set installed_paths ../../magento/magento-coding-standard/)"
],
"post-update-cmd": [
"([ $COMPOSER_DEV_MODE -eq 0 ] || vendor/bin/phpcs --config-set installed_paths ../../magento/magento-coding-standard/)"
]
}

Para PHPMD crearemos una nueva Custom RuleSet seleccionado el símbolo + y elegiremos la ruta dónde se encuentra el archivo de reglas de Magento 2 dentro de nuestro proyecto. 

/dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml

PHPMD PhpStorm

Es importante indicar que esta regla PHPMD debe ser seleccionada en cada proyecto con el que trabajemos, ya que este archivo se encuentra dentro del directorio del proyecto.

Adicionalmente si trabajamos con PHP 7, es recomendable seleccionar que nos avise mediante un warning para declarar los strict types.

Para ello, en el mismo buscador de inspections, escribimos Missing strict types declaration y lo dejaremos activado.

Strict Types PhpStorm

Con estos pasos ya tenemos configurado de manera óptima nuestro PhpStorm para trabajar con Magento 2 y cuando tengamos abierto un archivo nos avisará mediante un warning de los errores que debemos corregir.