A veces, metidos en el fragor de la batalla, los developers nos olvidamos de la existencia de algunas herramientas desarrolladas por la comunidad para ayudarnos a mejorar la calidad de nuestro código. Incluso pese a conocerlas, muchas veces no las usamos porque no podemos usarlas de una manera cómoda.

PHPStorm da soporte nativo a algunas de ellas como PHP Codesniffer o PHP Mess Detector lo cual nos permite usar dichas herramientas de una manera fácil e incluirlas en nuestro workflow. A continuación os describo cómo integrar algunas de estas herramientas con nuestro IDE. El proceso está hecho sobre OS X y PHPStorm 7 pero no debería variar demasiado en otros entornos Unix o otras versiones de PHPStorm.

Doy por supuesto que tenéis PHP y Pear o Composer instalados :)

PHP Codesniffer

PHP Codesniffer es una herramienta que auditará nuestro código y comprobará que seguimos un standard definido. Primero de todo instalamos el PHP Codesniffer mediante Composer:

$ composer global require "squizlabs/php_codesniffer":"dev-phpcs-fixer"

El paquete se instalará por defecto en ~/.composer/vendor/bin. Aseguraos de que está ruta esté en vuestro include path!

También lo podemos instalar con Pear:

$ pear channel-discover pear.pdepend.org
$ pear install PHP_CodeSniffer

Una vez instalado PHP Codesniffer abrimos a las preferencias de Storm (Cmd + ,) y vamos al apartado PHP > Code Sniffer. En esta ventana debemos rellenar el campo phpcs path. En caso de no conocer el path podemos ejecutar en el terminal:

$ which phpcs

Podemos validar nuestro phpcs para comprobar que todo funciona correctamente.

Para poder sacar todo el partido a PHP Codesniffer debemos seleccionar nuestro standard para auditar el código y configurar el Storm para que nos avise cuando encuentre código que no se ajusta a él.

Para hacerlo nos dirigimos al menú Inspections en las preferencias de Storm y en activamos el checkbox PHP > PHP Code Sniffer validation y seleccionamos PSR2 en el apartado Coding Standard. Si no nos aparece podemos seleccionar Custom y descargar un ruleset.xml

configuracion PHP Codesniffer

Si hemos realizado todos los pasos correctamente ya se debería marcar en el editor el código que no se ajusta a PSR-2.

configuracion PHP Codesniffer

PHP Mess Detector

PHP Mess Detector se integra en PHPStorm también de manera nativa, el proceso es muy similar al anterior con PHP Codesniffer. Primero de todo instalamos PHP Mess Detector mediante Composer:

$ composer global require "phpmd/phpmd":"dev-master"

O Pear:

$ pear channel-discover pear.phpmd.org
$ pear channel-discover pear.pdepend.org
$ pear install --alldeps phpmd/PHP_PMD

En las preferencias de PHPStorm nos dirijimos a PHP > Mess Detector e introducimos el path a nuestro binario. Si no sabés el path siempre puedes volver a ejecutar which phpmd. Una vez validada nuestra ruta nos dirijimos al menú Inspections y activamos el check PHP > PHP Mess Detector validation. Y activamos las reglas que creamos conveniente. Puedes encontrar más información sobre las reglas de PHP Mess detector en la web oficial del proyecto

configuración PHP Mess Detector

Si todo ha funcionado deberiamos ver las marcas en el editor del código que no se ajusta a nuestras reglas.

configuración PHP Mess Detector

PHP Coding Standards Fixer

PHP Coding Standards Fixer es una herramienta desarrollada por Fabien Potencier que "arregla" la mayoria de problemas que nos detecta PHP Codesniffer. Con esta herramienta nos ahorramos el tedioso trabajo de ir solucionando las inconsistencias de nuestro código con PSR-1 y PSR-2. Para instalarlo podemos ejecutar:

$ sudo curl http://cs.sensiolabs.org/get/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer
$ sudo chmod a+x /usr/local/bin/php-cs-fixer

Desgraciadamente PHPStorm no da soporte nativo a PHP CS Fixer por lo que tenemos que configurarlo como una herramienta externa. Para ello nos vamos otra vez a las preferencias de PHPStorm, en el menú External Tools donde añadiremos una entrada nueva.

La configuración debe quedar como se ve en la siguiente imagen:

configuración PHP Coding Standards Fixer

Si todo está configurado correctamente, en el menú Tools debería aparecer nuestra herramienta php-cs-fixer. Que al ser ejecutada dará un formato a nuestro código acorde a PSR-2.

configuración PHP Coding Standards Fixer

Un vez configurado, podemos asignar una combinación de teclas para ejecutar PHP Coding Standards Fixer. Para ello, nos dirigimos al apartado Keymap en las preferencias de PHPStorm y luego navegamos a la carpeta External Tools.

De la misma manera que hemos integrado PHP Coding Standards Fixer podemos integrar multitud de herramientas como PHP Dead Code Detector, PHP Copy/Paste Detector ...

Espero que os haya servido de ayuda. ¿Usáis alguna herramienta que no haya mencionado?