PhpStorm 2020.1: soporte composer.json, herramientas para PHPUnit, cobertura de código con PCOV y PHPDBG, Grazie y más



Hola Habr! ¡Nos complace presentar el primer lanzamiento importante de PhpStorm este año!

Debajo del corte, un análisis detallado de todos los cambios notables y nuevas características. Precaución: muchas fotos.

PhpStorm 2020.1 Toolbox App. 30- . JetBrains .

composer.json


Todas las acciones para trabajar con dependencias ahora están disponibles directamente en el archivo composer.jsony funcionan directamente en el editor.

Puede crear un nuevo archivo composer.json desde el menú contextual o utilizando la tecla de acceso rápido Ctrl(⌘)+N. La plantilla para este archivo se encuentra en Preferencias / Configuración | Editor | Plantillas de archivos y códigos .



Administración de dependencias

Para agregar una dependencia, simplemente comience a escribir el nombre del proveedor y el paquete, y aparecerá una lista de autocompletado con las opciones apropiadas. Las versiones disponibles de este paquete se ofrecerán



en el campo de versión . Por ahora, un carro (^) u otro símbolo para especificar un rango de versiones tendrá que agregarse manualmente, pero en futuras versiones lo arreglaremos.
Para los requisitos sobre la versión de PHP o la presencia de extensiones, la finalización automática también funcionará.

Actualización e instalación de paquetes

Si composer.lockaún no hay un archivo y no hay paquetes instalados, entonces PhpStorm resaltará el nombre de la sección requirey require-dev. Para instalarlos, puede hacer clic en el botón Instalar en la barra de herramientas sobre el editor. O utilice la acción de clic rápido Alt(⌥)+Entery seleccione Instalar paquetes..



Pero si no todos los paquetes están instalados, PhpStorm resaltará los que faltan. Luego Alt(⌥)+Enterpuede llamar a cualquiera de ellos y seleccionar Actualizar paquete o Actualizar todos los paquetes .

Junto al requisito de versión especificado, la versión gris será la versión del paquete que está realmente instalado. Y en el cuadro de diálogo emergente para paquetes, habrá información de packagist.org sobre el número de descargas y estrellas.



PhpStorm toma toda la información sobre los paquetes y sus versiones de packagist.org y los almacena en caché.

Navegación a archivos y carpetas

Seguramente lo sabrá haciendo clic Ctrl(⌘)+Clicky Ctrl(⌘)+Bpodrá ir a la definición de entidades o buscar su uso.

En composer.jsonesto también funcionará. Si hace clic Ctrl(⌘)+Clicken un paquete, el directorio correspondiente se resaltará en el Árbol del proyecto. Y si está en un archivo, se abrirá en el editor.



Al hacer clic en Ctrl(⌘)+Clicko Ctrl(⌘)+Ben cualquier enlace, se composer.jsonabrirá en el navegador.

Autocompletaren secciones de carga automática (-dev)
Autocompletado basado en información de clases y la estructura de directorios del proyecto funciona para espacios de nombres y rutas.



Ctrl(⌘)+Clicke Ctrl(⌘)+Bir a archivos y carpetas también funciona aquí.

Mejoras para los scripts

En primer lugar, las transiciones a archivos / carpetas / métodos funcionan de la misma manera. En segundo lugar, se admiten alias para los equipos. Y en tercer lugar, los scripts se pueden iniciar desde el editor presionando el botón [reproducir] opuesto al nombre del script.

Esto crea automáticamente una configuración de ejecución. Esto significa que puede volver a ejecutar el script con una tecla de Ctrl(⌃)+Racceso rápido , lo cual es bastante conveniente al depurar:



Instalar herramientas de calidad de código
Si hay dependencias de desarrolloFriendsOfPHP/PHP-CS-Fixer, entonces PhpStorm verificará si la inspección apropiada está habilitada y si el conjunto de reglas está instalado. Si no, puedes llamar Alt(⌥)+Enterpara arreglarlo:



Mejoras de inferencia de tipo PHP


El motor de inferencia de tipos es la base de PhpStorm, y en esta versión se han realizado algunos cambios notables.

Etiqueta adicional resaltadavar
Agregar etiquetas @vares una buena manera de decirle a PhpStorm el tipo de variable. Pero estamos mejorando constantemente la inferencia de tipos, y algunas de estas declaraciones pueden ser redundantes, porque PhpStorm ya conoce el tipo de la variable.

Tales casos se resaltarán y se pueden eliminar mediante la solución rápida Alt(⌥)+Enter-> "Eliminarvar" :



Rastrear tipos nulos es una tarea difícil, y hubo lugares donde PhpStorm no pudo manejarlo. Ahora en 2020.1 PhpStorm sabe cuándo una variable puede ser nula y cuándo no.

Estos son algunos ejemplos:



Autocompletar para una matriz inicializada

Supongamos que tiene una matriz con elementos conocidos y luego intenta iterar sobre ella. Anteriormente, el autocompletado no funcionaba aquí, ya que se perdió la información de tipo. En 2020.1, todo funciona:



Autocompletado en array_map / array_filter.

En el cuerpo de cierre, que se pasa a las funciones array_map () y array_filter (), el complemento para argumentos ahora funciona.



Cobertura de código con PCOV y PHPDBG


Puede construir cobertura de código con Xdebug . Pero dado que esto es principalmente un depurador, tiene una sobrecarga decente. Para acelerar la obtención de un informe de cobertura, puede usar herramientas más livianas: la extensión krakjoe / pcov o el PHPDBG integrado en PHP 5.6+.

Ambos ahora son compatibles con PhpStorm. Debe crear una configuración de ejecución para las pruebas y seleccionar el controlador de cobertura deseado en la configuración. Luego ejecute las pruebas con el cálculo de cobertura haciendo clic en el botón :



Lea más sobre las diferencias en el cálculo de cobertura entre Xdebug, PCOV y phpdbg en README .

PHPUnit Toolkit


En el recientemente lanzado PHPUnit 9 (y ya 9.1), muchas características han sido eliminadas o desaprobadas. Para acelerar la migración y evitar errores, agregamos un montón de inspecciones y soluciones rápidas.



Crear una nueva prueba para la clase

Al invocar Alt(⌥)+Enterla declaración de clase y seleccionar Crear nueva prueba de PHP , puede obtener rápidamente el esqueleto para la prueba.



Metadatos


Los metadatos en el archivo .phpstorm.meta.phppermiten a PhpStorm proporcionar información adicional sobre su proyecto y, por lo tanto, mejorar la finalización del código. Por ejemplo, esta característica se usa en el complemento de Symfony y en el Laravel IDE Helper .

Puede obtener más información sobre las capacidades de los metadatos de un informe PHP como herramienta de desarrollo para PhpStorm en PHP Rusia 2019.

PhpStorm 2020.1 ha agregado una serie de mejoras para los metadatos.

Las directivas de índice de parámetros anulan, asignan y escriben

Antes de usar override(), map()y type()puede cambiar el comportamiento de las funciones del primer argumento. En PhpStorm 2020.1, puede especificar un índice de parámetro arbitrario:



Acceso a las propiedades a través de __get

Si recibió valores de propiedad a través de la magia __get(), se perdió información sobre el tipo. Era posible usar etiquetas adicionales @varo @property, pero esto no siempre guardaba. Ahora puede especificar todo a través de metadatos.



La finalización automática de claves en objetos que implementan ArrayAccess

Metadata admite objetos ArrayAccess, pero solo sugiere el tipo de valores. Ahora las claves posibles también se completan automáticamente.



Puntos de salida personalizados

PhpStorm considera las funciones de tipo die()y / exit()o lanza excepciones para completar la ejecución. Pero las aplicaciones pueden tener puntos de salida más complejos. Por ejemplo, función simple dd()o trigger_error con argumento E_USER_ERROR .

En PhpStorm 2020.1, puede marcar funciones como puntos de salida, y esto ajustará el análisis de flujo en consecuencia.



Iconos para funciones redefinidas a través de metadatos

Enfrente de las declaraciones de funciones cuyo comportamiento ha cambiado con override(), exitPoint()o expectArguments(), se mostrará un icono. Al hacer clic en el icono, se abrirá un archivo .phpstorm.meta.phpen el que el comportamiento cambia, porque puede haber varios archivos.



Los iconos se pueden ocultar en Preferencias / Configuración | Editor | General | Iconos de canalones .

Aprendizaje automático para ordenar la lista de complementos


Clasificación agregada de opciones de autocompletado basada en aprendizaje automático.

¿Cómo ver ML en acción?

La finalización automática con ML está deshabilitada de forma predeterminada. ¡No queremos que los robots nos roben nuestro trabajo! Para habilitarlo, vaya a Preferencias / Configuración | Editor | General | Completar código y habilitar las opciones Sugerencias de finalización de rango basadas en Machine Learning y PHP .

Si también habilita la opción Mostrar cambios de posición en la ventana emergente de finalización , la lista de finalización automática mostrará cómo ha cambiado el orden de los elementos.



Planeamos evitar el levantamiento de automóviles para continuar trabajando en esta dirección en futuras versiones.

Nuevas inspecciones


Una propiedad privada puede ser una variable local.

Una definición de propiedad se resaltará si se usa en un solo método y se sobrescribe de inmediato. Para solucionarlo, puede llamar a la solución rápida Alt(⌥)+Enter "Reemplazar propiedad con variable local" .



Inicialización de propiedad adicional

Suponga que una propiedad privada tiene un valor predeterminado en una clase, pero en el constructor se sobrescribe inmediatamente con otro valor. En este caso, el valor predeterminado es redundante y solo agrega ruido.

Se resaltará un inicializador no utilizado, y se puede eliminar con una solución rápida Alt(⌥)+Enter "Eliminar inicializador redundante" .



Cambiar el tipo de propiedad en PHP 7.4 al valor predeterminado



Operador ternario redundante

PhpStorm resaltará expresiones triviales ternarias y con una solución rápida Alt(⌥)+Enterpuede reemplazarlas por otras más simples:



Transferencia redundante por referencia El

uso de transferencia por referencia puede tener consecuencias inesperadas, y esta es una de las razones por las que Nikita Popov sugirió permitir la transferencia explícita por referencia cuando se llama funciona en PHP.

Mientras tanto, PhpStorm 2020.1 resaltará los parámetros declarados como aprobados por referencia, pero no utilizados como tales. Se pueden quitar de forma segura con una solución rápida Alt(⌥)+Enter.



Lo mismo funcionará para las matrices con un enlace en el bucle foreach: elimine



el PHPDoc adicional , en el que solo la declaración de tipo ahora también es bastante simple gracias a la corrección rápida correspondiente.



Es cierto que, por defecto, la inspección está en el nivel de Información , es decir, no se resaltará. Si desea que se resalten los bloques redundantes de PHPDoc, entonces inspeccione el comentario redundante de PHPDoc en Preferencias | Editor | Inspecciones, establezca el nivel de Advertencia débil o superior.

Refactorización actualizada "Método de movimiento"


A veces puede ser necesario transferir un método a otra clase. Si este método se usa muchas veces en el código del proyecto, PhpStorm puede ayudarlo aquí.

Anteriormente, primero tenía que hacer que el método fuera estático y luego llamar a otra acción para transferirlo. En PhpStorm 2020.1, la refactorización del "Método de movimiento" se ha rediseñado en una sola acción atómica. Se eliminaron pasos adicionales y ventanas emergentes, y todo se hace de una vez.

Desplácese sobre un método y presione F6(o Ctrl+T, 3). Luego seleccione la clase de destino y ya está.



Para ver todas las refactorizaciones disponibles , puede hacer clic Ctrl+Ten cualquier parte del código.

PHP Debug en HTTP Client


Ahora, para habilitar selectivamente la depuración, no necesita preocuparse por los parámetros de solicitud o instalar la extensión en el navegador. Es suficiente crear una solicitud HTTP en un archivo .httpy enviarla con el comando PHP Debug , que está disponible en el menú Alt(⌥)+Entero haciendo clic en el icono. Como resultado, una cookie se agregará automáticamente a la solicitud XDEBUG_SESSION.



Y algunas cositas más para PHP


@ los elementos en desuso se muestran tachados en la vista de estructura del árbol
Ctrl(⌘)+F12



Resaltando etiquetas coincidentes <? php /?>



Salte al corchete de apertura / cierre

Shift+Ctrl+M (⌃+M)



Personalización de Lexer para Twig

A veces puede necesitar cambiar los caracteres de etiqueta para las plantillas de Twig, por ejemplo, si también usa Angular, que tiene misma sintaxis
Puede hacer esto en Preferencias / Configuración | Idiomas y marcos | PHP | Ramita .

IDE


Grazie Ortografía y gramática avanzadas


El complemento Grazie se incluye en PhpStorm fuera de la caja, que verifica el texto no solo por errores ortográficos, sino también por gramática y estilo. Además, se admiten 16 idiomas y todas las comprobaciones se realizan localmente sin enviar sus datos a ninguna parte.



Por defecto, las comprobaciones están habilitadas para archivos Markdown.
También puede incluirlos para todos los literales de cadena, comentarios, bloques PHPDoc y mensajes de confirmación.

Para PHP, puede habilitarlo en Configuración / Preferencias | Editor | Corrección de textos | Gramática .

Modo LightEdit


A veces necesita buscar / corregir rápidamente el archivo y abrir un IDE completo para esto, parece demasiado, pero desea tener la luz de fondo y las funciones habituales. Es para tales casos que estamos trabajando en el modo ligero LightEdit.

Funciona así: si abre el archivo desde la línea de comandos o el menú contextual del sistema operativo, mientras PhpStorm no se está ejecutando, el archivo se abrirá en LightEdit. Bueno, si un PhpStorm completo ya está funcionando, entonces el archivo simplemente se abrirá en él.



JetBrains Mono - fuente predeterminada




Modo zen


El nuevo modo combina Distraction Free y Fullscreen para una inmersión profunda en el código.
Ver | Apariencia | Ingrese al modo Zen



Interfaz


Ventana de terminal dividida


En lugar de abrir nuevas pestañas y cambiar entre ellas, ahora puede dividir la pantalla y abrir varias sesiones en una sola pestaña. Para hacer esto, seleccione Dividir horizontal / verticalmente en el menú contextual del terminal . Tema



IntelliJ Light

El tema light se ha actualizado y unificado ligeramente para que tenga el mismo aspecto en todos los sistemas operativos, y su nombre ha cambiado a IntelliJ Light .

Personalización de la barra de estado

En el menú contextual, puede elegir qué información se mostrará en ella.



Configuración


Configuración SSH unificada


Anteriormente, si una conexión SSH se reutilizaba en una implementación, un intérprete remoto o un terminal SSH, tenía que reconfigurarse cada vez.

Ahora todas las conexiones SSH se pueden agregar / editar en Preferencias / Configuración | Herramientas | Configuración SSH , y luego úselas repetidamente donde sea necesario.



La ruta a las configuraciones IDE ha cambiado


Por ejemplo, en macOS:
- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1


Más en la ayuda .

Ruta personalizada para guardar configuraciones de ejecución


Anteriormente, las configuraciones de ejecución se almacenaban en una carpeta .ideaque muchos agregan completamente a .gitignore (mejor así ). Ahora puede elegir cualquier ruta y compartir la configuración de ejecución con colegas a través del sistema de control de versiones.

Puede ser especialmente conveniente cuando se incorporan nuevos empleados: se realizó un proyecto, se abrió en PhpStorm y se lanzó con un solo botón.

Para hacer esto, en el cuadro de diálogo de configuración Ejecutar / Depurar debe seleccionar la opción Almacenar como archivo de proyecto , y al hacer clic en el engranaje puede seleccionar la ruta deseada en el proyecto.



Control de versiones


New Commit


La ventana Confirmar está disponible en modo no modal y se muestra a la izquierda. Por lo tanto, no bloquea el trabajo en otros archivos durante la preparación de la confirmación, y se muestra más información sobre los cambios en la pantalla.

El nuevo commit está activado de forma predeterminada para los nuevos usuarios y desactivado para aquellos que ya tienen instalado PhpStorm.

Habilitado por la opción Usar interfaz de confirmación no modal en Preferencias / Configuración | Control de versiones | Comprometerse .



Mejoras de Git Branch


En la esquina inferior derecha de la ventana IDE, se indica la rama actual de Git. Si hace clic en él, el VCS | Git | A ramas .
Aquí agregamos un campo de búsqueda. El botón Actualizar actualiza la lista de ramas remotas. Y para cada confirmación, se agrega un indicador: entrante (azul) o saliente (verde).



Rebase interactiva rediseñada


Git Rebase te permite reescribir el historial de confirmaciones. Ahora puede deshacerse rápidamente de las confirmaciones "temporales", corregir el mensaje o el orden de las confirmaciones. Por supuesto, todo esto se puede hacer desde la consola manualmente, pero PhpStorm le permite ver de inmediato lo que se ha cambiado en una confirmación particular.

Para comenzar, en el historial de confirmaciones, debe seleccionar la confirmación básica deseada y seleccionar Reorganizar interactivamente desde aquí en el menú contextual .



Herramientas DB


PhpStorm incluye casi todas las características de DataGrip listas para usar , por lo que puede ver la revisión de la versión DataGrip 2020.1 de nuestros colegas.

Web


Y, como siempre, todas las actualizaciones de WebStorm 2020.1 también se incluyen en PhpStorm.

Se puede encontrar una lista completa de los cambios en las notas de lanzamiento muy grandes .

También puede ver la descripción general de la versión en la página " Novedades " y, si solo tiene unos minutos, aquí hay un breve video (en inglés) con una demostración de las características principales de la versión:



Y eso es todo este tiempo. ¡Gracias por leer hasta el final! Estaremos encantados de preguntas, deseos, informes de errores y solo pensamientos en los comentarios.

¡Cuídate!
Su equipo de JetBrains PhpStorm

All Articles