Introducción al análisis estático de PHP en 2024
21 de marzo de 2024
0 minutos de lecturaPHP es un lenguaje de scripting del lado del servidor muy popular y ampliamente utilizado para el desarrollo web. Los desarrolladores de PHP pueden lanzar e implementar productos de software de mayor calidad al aprovechar herramientas de análisis estático que ayudan a mitigar errores en el código PHP, vulnerabilidades de seguridad y otros problemas que pueden afectar la calidad y seguridad de la aplicación si no se abordan en las primeras etapas del ciclo de desarrollo.
¿Qué es el análisis estático?
El análisis estático, también conocido como análisis estático de código o análisis del código fuente, es un método de depuración que consiste en examinar el código fuente antes de ejecutar un programa. Se lleva a cabo aplicando un conjunto de reglas de programación al código fuente del programa. El objetivo principal del análisis estático es detectar y corregir errores en las primeras etapas del desarrollo del código.
En el contexto de PHP, el análisis estático consiste en examinar el código PHP sin ejecutarlo, con el objetivo de encontrar problemas, confirmar que se cumplan los estándares de codificación y comprender la arquitectura, entre otras cosas.
Este es un ejemplo de cómo una herramienta de análisis estático resaltaría un problema en el código PHP:
En este ejemplo, la herramienta de análisis estático identificaría que los argumentos "one" y "two" no son números enteros y, por lo tanto, infringen la declaración del tipo de parámetro de la función.
Importancia del análisis estático en el desarrollo con PHP
El análisis estático cumple un papel crucial en el desarrollo con PHP por varios motivos. En primer lugar, ayuda a detectar errores en el código PHP y posibles problemas en el código base antes de que este se implemente en producción. Esto es especialmente importante en un lenguaje como PHP, que tiene tipado dinámico y facilita la introducción de errores relacionados con los tipos.
En segundo lugar, el análisis estático de PHP puede garantizar que el código cumpla con un conjunto de estándares de codificación predefinidos. Esto es especialmente importante en proyectos grandes o al trabajar en equipo, donde mantener un estilo de codificación coherente es fundamental para que el código sea legible y fácil de mantener.
Por último, el análisis estático puede ayudar a identificar código complejo o «maloliente» que podría necesitar una refactorización. Al proporcionar métricas sobre la complejidad del código, puede servir de guía para mejorar su calidad general.
Beneficios del análisis estático
El análisis estático, en particular para el desarrollo con PHP, ayuda a los desarrolladores y a los equipos de seguridad a:
Mejorar la calidad del código: las herramientas de análisis estático pueden ayudar a los desarrolladores a mejorar la calidad de su código al detectar errores, vulnerabilidades de seguridad e incumplimientos de los estándares de codificación. Al corregir estos problemas en las primeras etapas del ciclo de desarrollo, pueden evitar que se conviertan en problemas mayores en el futuro.
Reforzar la seguridad: desde el punto de vista de la seguridad, las herramientas de análisis estático pueden ayudar a identificar posibles vulnerabilidades de seguridad en tu código base. Pueden detectar problemas de seguridad comunes, como la inyección de código en PHP, el cross-site scripting (XSS) y las vulnerabilidades de redirección abierta.
Detectar errores de código a tiempo: al detectar problemas desde el inicio, el análisis estático puede ahorrar tiempo y recursos a los desarrolladores. También puede reducir considerablemente el tiempo dedicado a la depuración y las revisiones manuales del código, para que puedan enfocarse en tareas más complejas. Empieza con el análisis estático de seguridad gratis con Snyk.
Cumplir con los estándares: el análisis estático puede ayudar a garantizar que tu código base cumpla con los estándares del sector en cuanto a calidad, seguridad y facilidad de mantenimiento. Esto es especialmente importante en los sectores regulados, donde el cumplimiento de ciertos estándares suele ser un requisito.
Entender PERCS 2.0
PERCS 2.0, sigla de PHP Enhanced Review Coding Standard, es una importante mejora de la versión inicial de PERCS. Es una herramienta avanzada para el análisis estático de código PHP que permite a los desarrolladores cumplir con un conjunto específico de estándares de codificación, mejorar la calidad del código y reforzar las convenciones de codificación.
Esta versión de PERCS ofrece varias funciones, como la revisión de sintaxis y estilo del código, y la detección de posibles brechas de seguridad. Es una herramienta valiosa para los desarrolladores de PHP que buscan mejorar la calidad de su código y garantizar el cumplimiento de las convenciones de codificación estándar.
Cumplir con los estándares de codificación es fundamental en el desarrollo de software. Estos garantizan que el código sea legible, fácil de mantener y coherente, lo que facilita la colaboración de los equipos y la comprensión del código base por parte de los nuevos desarrolladores. Los estándares de codificación también previenen errores comunes y posibles vulnerabilidades de seguridad. Al aplicar un estilo de codificación estandarizado, los desarrolladores pueden identificar y corregir problemas de forma más eficiente y efectiva.
PERCS 2.0 mejora considerablemente tanto la calidad del código como el cumplimiento de las convenciones de codificación. Lo hace ofreciendo a los desarrolladores comentarios inmediatos sobre su código y señalando las áreas que no cumplen con los estándares de codificación, así como las posibles vulnerabilidades de seguridad.
Con PERCS 2.0, los desarrolladores pueden aplicar un nivel más alto de calidad del código y garantizar que sus aplicaciones PHP sean confiables, fáciles de mantener y seguras.
Las 3 mejores herramientas de análisis estático para PHP
En el ámbito de la seguridad del código y el desarrollo de software, el análisis estático es clave para mantener una alta calidad del código e identificar posibles vulnerabilidades de seguridad antes de que se conviertan en un problema. Veamos tres potentes herramientas de análisis estático para PHP: PHPStan, Psalm y Snyk. Estas herramientas permiten a los desarrolladores encontrar errores y fallas de seguridad en el código PHP, y ayudan a garantizar que la aplicación cumpla con los requisitos de seguridad.
1. PHPStan
PHPStan es uno de los analizadores estáticos más populares para código PHP. Se enfoca en encontrar errores en tu código sin ejecutarlo. Su principal ventaja es que puede detectar categorías enteras de errores incluso antes de que escribas pruebas para el código.
Para instalar PHPStan, puedes usar Composer, una herramienta para administrar dependencias en PHP. Así es como se hace:
Para ejecutar PHPStan en tu código PHP, solo tienes que ejecutar el siguiente comando:
Aquí, src representa el directorio que contiene tu código PHP. PHPStan mostrará una lista de posibles problemas que haya encontrado en tu código. El resultado suele incluir el nombre del archivo, el número de línea y una descripción del problema. Por ejemplo, podría detectar y mostrar lo siguiente:
2. Psalm
Psalm es otra potente herramienta de análisis estático para PHP. Está diseñada para identificar errores tanto de sintaxis como de lógica en tu código. Una de sus principales ventajas es que puede inferir los tipos en tu código PHP, lo que permite detectar errores relacionados con los tipos antes de que ocurran.
Puedes instalar Psalm con Composer:
Para ejecutar Psalm en tu código PHP, usa el siguiente comando:
Psalm mostrará una lista de problemas en tu código, similar a PHPStan. Sin embargo, también asigna un nivel de gravedad a cada problema, lo que puede ayudarte a priorizar las correcciones.
Este es un ejemplo de resultado de Psalm:
3. Snyk para la seguridad del código en el desarrollo con PHP
Snyk es una herramienta de seguridad diseñada para desarrolladores que les ayuda a encontrar, comprender y corregir vulnerabilidades y problemas de seguridad en su código, dependencias de <i>open source</i>, imágenes de contenedores y más. La herramienta está diseñada para integrarse en tus flujos de trabajo actuales. Se integra fácilmente con diversos IDE y herramientas de compilación, para que puedas instalar gratis el complemento de PHPStorm o la extensión para VS Code de Snyk y empezar a analizar tu código en busca de vulnerabilidades de seguridad.
Snyk identifica problemas de código inseguro gracias a su amplia base de datos de vulnerabilidades y sus capacidades inteligentes de análisis de código. Estas capacidades permiten que la herramienta detecte una gran variedad de posibles amenazas de seguridad, incluida la ejecución de código que afectó al proyecto SuiteCRM y la ejecución remota de código en dompdf.
Veamos un ejemplo de inyección SQL que Snyk puede detectar:
En el fragmento de código PHP anterior, las entradas del usuario se concatenan directamente en la consulta SQL, lo que la hace vulnerable a ataques de inyección SQL. El análisis estático de código PHP de Snyk lo marcará como un riesgo grave de seguridad. Te recomiendo tomar la lección de Snyk Learn sobre inyecciones SQL para entender por qué el código anterior es inseguro y cómo prevenir esta vulnerabilidad.

Snyk también ayuda a identificar errores comunes en el código PHP que podrían causar problemas de seguridad. Por ejemplo, usar una función de PHP obsoleta o no compatible puede introducir vulnerabilidades en la aplicación.
Integrar Snyk en los IDE PHPStorm y VS Code
Snyk se puede integrar fácilmente en IDE populares como PHPStorm y Visual Studio Code, y ofrece comentarios en tiempo real y análisis de vulnerabilidades mientras programas.
Después de instalar el complemento de Snyk para PHPStorm, puedes ejecutar análisis de Snyk directamente desde tu IDE. Solo haz clic con el botón derecho en tu proyecto en el Explorador de proyectos, selecciona Snyk Scan y los resultados del análisis aparecerán en la pestaña Snyk del panel inferior.
Integrar Snyk con VS Code
Para integrar Snyk con VS Code, tendrás que instalar la extensión Snyk Vulnerability Scanner desde el marketplace de VS Code. Una vez instalada, Snyk analizará automáticamente tu proyecto en busca de patrones de código PHP inseguro y dependencias vulnerables en tu archivo Composer. También puedes volver a analizar un proyecto abriendo la Paleta de comandos (Ctrl+Shift+P), escribiendo Snyk y seleccionando la opción Snyk: Rescan. Los resultados del análisis aparecerán en una nueva pestaña de Snyk en la barra lateral.
Integrar el análisis estático de PHP en pipelines de CI/CD
Ante la creciente complejidad del desarrollo de software y la necesidad cada vez mayor de aplicaciones seguras, es más importante que nunca integrar herramientas de análisis estático y estilo de código en tu flujo de trabajo de desarrollo con PHP. Los pipelines de integración continua (CI) e implementación continua (CD) ofrecen un entorno ideal para automatizar estos procesos y garantizar que se mantengan la calidad y la seguridad del código durante todo el ciclo de vida del desarrollo.
Estas herramientas no solo ayudan a mantener la calidad y coherencia del código, sino que también actúan como una primera línea de defensa ante posibles amenazas de seguridad. Ayudan a identificar y corregir posibles vulnerabilidades en las primeras etapas del desarrollo de software, lo que permite ahorrar tiempo, esfuerzo y recursos a largo plazo.
En el ejemplo anterior, PHPStan se integra en un pipeline de CI/CD mediante GitHub Actions. Esto garantiza que el análisis estático se ejecute automáticamente en cada push o pull request, detecte posibles problemas desde el inicio y haga más eficiente la revisión del código.
Beneficios de integrar el análisis estático en la automatización de CI
Integrar el análisis estático en tu pipeline de CI puede ofrecer numerosos beneficios:
Detección temprana de errores: el análisis estático puede ayudar a detectar posibles problemas y vulnerabilidades en las primeras etapas del proceso de desarrollo, lo que reduce el costo y el tiempo necesarios para corregirlos.
Mejor calidad del código: al aplicar estándares de codificación y buenas prácticas, el análisis estático puede dar como resultado un código más limpio y fácil de mantener.
Mayor seguridad: el análisis estático puede ayudar a identificar vulnerabilidades de seguridad en tu código y dar como resultado aplicaciones más seguras.
Conoce las herramientas de estilo de código
El siguiente tema es cómo mantener un estilo de código coherente. Las herramientas de estilo de código cumplen un papel crucial para aplicar un estilo uniforme en todo el código base y hacer que el código sea legible y fácil de mantener. Estas herramientas también pueden reducir la probabilidad de errores y vulnerabilidades de seguridad al aplicar buenas prácticas de codificación. Para lograrlo, podemos usar herramientas de estilo de código específicas para PHP: PHPCS, StyleCI y PHP-CS-Fixer.
¿Por qué implementar una herramienta de estilo de código?
Los estándares de codificación son un conjunto de pautas y buenas prácticas para escribir código. Ayudan a los desarrolladores a escribir código limpio, profesional y sin errores. Seguir un estilo de código coherente mejora la legibilidad, reduce la complejidad y promueve la reutilización del código. Aquí es donde entran en juego las herramientas de estilo de código. Revisan automáticamente si el código tiene problemas de estilo e incluso pueden corregirlos en algunos casos.
En el desarrollo con PHP, estas herramientas son indispensables. No solo ayudan a mantener un estilo de código coherente, sino que también cumplen una función clave para detectar posibles vulnerabilidades de seguridad. Esto es esencial en el panorama actual de amenazas cibernéticas, donde incluso el más mínimo error de codificación puede provocar una brecha de seguridad grave.
PHP_CodeSniffer (PHPCS)
PHP_CodeSniffer (PHPCS) es un conjunto de dos scripts de PHP. El script principal phpcs tokeniza archivos de PHP, JavaScript y CSS para detectar infracciones de un estándar de codificación definido, y el segundo script, phpcbf, corrige automáticamente las infracciones del estándar.
Puedes instalar PHPCS con Composer:
Una vez instalado, puedes ejecutar el comando phpcs en el directorio de tu proyecto:
PHPCS mostrará las infracciones de los estándares de codificación que encuentre. Por ejemplo:
Puedes usar el comando phpcbf para corregir estos problemas automáticamente:
StyleCI
StyleCI es un servicio de integración continua para el estilo de código PHP. Es una herramienta web que puedes integrar con tus repositorios de GitHub, GitLab o Bitbucket. Verifica cada push o pull request para asegurarse de que el código cumpla con el estilo configurado.
Para usar StyleCI, debes registrarte en su sitio web y vincular tus repositorios.
PHP-CS-Fixer
La herramienta PHP-CS-Fixer de FriendsOfPHP es otra herramienta que no solo detecta, sino que también corrige problemas con los estándares de codificación en tu código PHP.
Puedes instalar PHP-CS-Fixer con Composer:
Después de instalar PHP-CS-Fixer, puedes usar el comando php-cs-fixer para corregir tu código:
PHP-CS-Fixer mostrará los archivos que corrigió:
Conclusión
En esta publicación del blog, analizamos la importancia del análisis estático y las herramientas de estilo de código en el desarrollo de PHP. Vimos cómo estas herramientas pueden mejorar no solo la calidad de la base de código, sino también la seguridad general de la aplicación.
Las herramientas de análisis estático, como PHPStan, Psalm y Snyk, cumplen un papel fundamental en la identificación de posibles problemas en tu código PHP que podrían provocar errores o vulnerabilidades de seguridad. Estas herramientas analizan tu código en profundidad sin ejecutarlo, lo que permite detectar errores en una etapa temprana.
Si estás creando aplicaciones PHP con contenedores, te recomiendo consultar estos recursos:
Empieza con los desafíos de Capture the Flag
Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.



