Novedades de Rider

Rider 2020.1 ahora ejecuta el backend en el tiempo de ejecución .NET Core de forma predeterminada en macOS y Linux y entrega Xamarin Hot Reload y Dynamic Program Analysis. Introduce un modo sencillo de configurar la severidad del editor, y añade un análisis del flujo de datos para valores enteros y una finalización de código más rápida. Se ha rediseñado la ventana Debug, y ahora están disponibles la refactorización Extract Class y Coverage Filters.

El backend se ejecuta en tiempo de ejecución .NET Core en macOS y Linux

El backend se ejecuta en tiempo de ejecución .NET Core

¡Dele la bienvenida a la editión .NET Core de Rider! El backend por fin se ejecuta en tiempo de ejecución .NET Core de forma predeterminada en macOS y Linux, en vez del tiempo de ejecución Mono. Notará al instante lo siguiente:

  • Mejor rendimiento.
  • Un menor uso de la memoria.
  • La restauración de NuGet ahora es multiproceso (y no uniproceso como en Mono). Esto significa que es 4 veces más rápido si tiene una CPU con 4 núcleos lógicos u, otro ejemplo, 8 veces más rápido si tiene una CPU con 8 núcleos lógicos.
  • Y la eliminación de muchas otras limitaciones de Mono.

A propósito, la versión actual de .NET Core es la nueva y estupenda 3.1, que incluye muchas mejoras de rendimiento en comparación con la versión 3.0

Tenga en cuenta que por ahora no es compatible con Windows, solo con macOS y Linux. Planeamos añadir la compatibilidad con Windows próximamente este año.

¿Quiere obtener más información acerca de la transición de Mono a .NET Core y ver los gráficos de rendimiento? ¡Eche un vistazo a esta publicación del blog

Si está experimentando algún problema con el backend de Rider al ejecutarlo en .NET Core y quiere volver al tiempo de ejecución Mono, seleccione Help | Switch IDE runtime to Mono. Y si sufre cualquier problema, no dude en contárnoslo.

Xamarin Hot Reload

Xamarin Hot Reload

¡Ya está aquí la compatibilidad inicial con Xamarin Hot Reload! Ahora Rider aplica automáticamente los cambios realizados en Xamarin Forms XAML a la aplicación en depuración en un dispositivo o simulador, sin tener que volver a compilar y desplegar toda la aplicación.

Tenga en cuenta que existe una limitación: Si un ordenador portátil/de escritorio con Rider y un dispositivo iOS no están en la misma red Wi-Fi, Hot Reload no funcionará, ni siquiera aunque el dispositivo iOS esté conectado al ordenador portátil/de escritorio mediante USB.

Aparte de eso, hay una corrección importante en la compatibilidad con Xamarin: ya no aparecerá el error “Invalid target architecture 'arm64e'” al ejecutar proyectos Xamarin.iOS en un dispositivo iPhone XS Max.

Eche un vistazo a la publicación del blog para saber más sobre las novedades.

Dynamic Program Analysis (DPA)

Dynamic Program Analysis (DPA) solo en Windows

Estamos muy contentos de introducir Dynamic Program Analysis. Cada vez que ejecute su proyecto en Rider, DPA empezará a recopilar datos de la memoria asignada. Una vez que cierre la aplicación, DPA le mostrará una lista de los problemas detectados: clausuras y asignaciones a los montones de objetos grandes y pequeños. Lo mejor de esto es que no necesita empezar ninguna “sesión de perfilado” y obtener instantáneas. Solo tiene que trabajar como siempre y todos los datos se recopilarán en segundo plano, con prácticamente cero sobrecarga. La prueba de DPA en diferentes soluciones reales ha demostrado una ralentización de solo entre un 0 y un 2 por ciento.

Atención: DPA solo está disponible en Windows y no necesita una licencia distinta para activarlo.

Más información: Problemas en la memoria de autodetección en su aplicación con Dynamic Program Analysis

Análisis de flujo de datos de los valores enteros

Análisis de flujo de datos de los valores enteros

Esta versión de of Rider introduce un nuevo tipo de análisis del código para hacer un seguimiento de la utilización de valores enteros en su aplicación. Este nuevo tipo de análisis hace un seguimiento de la variación de los valores de todas las variables locales int, y comprueba la exactitud de todas las operaciones comunes en dichas variables para detectar trozos de código inútiles o que puedan ser erróneos. En concreto, le avisa de lo siguiente:

  • Operadores relacionales y de igualdad que siempre den resultados true o false.
  • Casos switch inalcanzables heurísticamente que comprueban valores int.
  • Operaciones aritméticas sin sentido, como la multiplicación por 1, la suma de 0, etc.
  • Posibles desbordamientos de int.
  • Posible división por 0.

Para mejorar la precisión del análisis, también hemos añadido dos nuevos atributos de JetBrains.Annotations para utilizarlos con miembros de tipo y parámetros del tipo int: [NonNegativeValue] y [ValueRange(from, to)]. Estos atributos especifican cómo pueden variar los valores de los miembros int concretos.

Compatibilidad con Unity

Compatibilidad con Unity

  • Hemos realizado mejoras considerables en la utilización de la memoria y en la velocidad de indexación de recursos. Ahora, Rider indexará todo su código antes de mirar sus recursos, por lo que todas las funcionalidades de productividad, como la finalización de código, el resaltado y las inspecciones, estarán disponibles para su uso mucho más rápido que antes. La indexación de recursos continuará después de que se haya cargado la solución, mientras usted sigue trabajando, y Rider encontrará las utilizaciones e incluso renombrará dentro de los recursos una vez que se haya completado la indexación. Por supuesto, cuando se haya terminado, el índice se mantendrá actualizado incrementalmente, y solo buscará los archivos modificados recientemente.
  • La indexación de recursos ahora es más inteligente, también. Comprende las utilizaciones de su código en los prefabs Nested y Variant, y muestra las utilizaciones de ScriptableObjects y los valores de campos en serie.
  • El descubrimiento de pruebas de unidades ahora funciona mejor con los proyectos de Unity, y Rider encuentra todas las pruebas del modo Edit y el modo Play en su proyecto de forma automática.
  • Hemos añadido una nueva inspección de rendimiento, “Prefer jagged arrays to multidimensional arrays”, que demuestra un mejor rendimiento en rutas de acceso activas. Se trata de una microoptimización, por lo que solo se sugiere en contextos críticos de rendimiento, como el método Update o cualquier cosa que se llame desde Update.
  • Rider ya no sugerirá Boo.Lang.List o System.Diagnostics.Debug en su finalización de código para proyectos de Unity.
  • Hemos ajustado orden de las funciones de evento en el cuadro de diálogo Generate para situar primero los métodos más importantes. Y al generar funciones desde el menú Alt+Intro, también se generarán en la ubicación correcta.
  • Para obtener más detalles sobre las actualizaciones y correcciones, consulte el repositorio en GitHub.
Compatibilidad con C#

Compatibilidad con C#

Seguimos mejorando nuestra compatibilidad con funcionalidades del lenguaje C# 8. Hemos refactorizado muchos aspectos de la compatibilidad con el lenguaje C# para preparar el análisis del código y otras funcionalidades, como las refactorizaciones y ReSharper Build, con el fin de admitir tipos de referencias que aceptan valores null (NRT). En Rider 2020.1, el análisis del código informa de las advertencias de compilación relacionadas con los tipos de referencias que aceptan valores null y proporcionan arreglos rápidos para la mayoría de ellas.

También hay varias nuevas inspecciones y arreglos rápidos:

  • Para detectar restricciones de parámetro de tipo redundante con respecto a los tipos de referencias que aceptan valores null.
  • Para detectar y utilizar sobrecargas asincrónicas de métodos cuando estén disponibles en lugar de sobrecargas sincronizadas.
  • Para utilizar la expresión nameof en lugar de utilizar la construcción typeof(SomeType).Name para obtener el nombre del tipo actual.
Finalización de código

Finalización de código

Durante el año pasado, recibimos informes que decían que la ventana emergente de finalización de código tardaba demasiado en aparecer. Nos lo hemos tomado en serio y ahora la ventana emergente de finalización de código se muestra mucho más rápido una vez que empieza a escribir, especialmente en soluciones grandes.

Otra funcionalidad muy útil que llega con esta versión es que ahora es posible ocultar a los miembros marcados como Obsolete de la finalización de código si no quiere verlos.

Por último, al finalizar un elemento desde la ventana emergente de finalización de código ahora se mantiene su configuración de estilo de código.

Ventana de depuración rediseñada

Ventana de depuración rediseñada

Hemos rediseñado completamente la interfaz de usuario de la ventana de herramientas Debug para que tenga el aspecto más limpio y ordenado posible. Cuando solo se está ejecutando una sesión de depuración, el diseño de pestañas se ha simplificado, y todas las pestañas aparecen en un solo nivel. Los títulos de las pestañas ocupan menos espacio, por lo que cabe más contenido del depurador. Y cuando hay varias sesiones, se añade una capa de pestañas adicional para separar las sesiones.

Al mismo tiempo, hemos combinado las vistas Threads y Frames. Si no necesita la vista Threads en el momento, puede ocultarla haciendo clic en el icono “Hide threads view”.

Actualizaciones en el motor del depurador

Actualizaciones en el motor del depurador

También hemos actualizado el motor del depurador para mejorar aún más su experiencia en la depuración:

  • Ahora puede desasociarse de un proceso empezado inicialmente en el depurador sin tener que detener la aplicación.
  • Smart Step Into está habilitado de forma predeterminada para la acción Step Into (Preferences/Settings | Build, Execution, Deployment | Debugger | Stepping | .NET Languages | Always do Smart Step Into).
  • El depurador es compatible con el tiempo de ejecución .NET Core x86.
  • El nombre del subproceso ahora se muestra en la línea de ejecución para ayudarle a comprender dónde se encuentra la ejecución de la aplicación actualmente.
  • Puede saltar a un punto específico con Skip to Here/Cursor después de detener la sesión de depuración en una excepción.
  • Ahora tiene un mayor control de la ventana Debug Output y puede deshabilitar los mensajes de servicio en Debug Output.
Un modo sencillo de configurar la severidad del editor

Un modo sencillo de configurar la severidad del editor

Esta nueva funcionalidad le permite cambiar fácilmente los niveles de resaltado del editor. Con solo un clic en una ventana emergente, puede habilitar o deshabilitar Code Vision, Parameter Hints, Unity Performance Hints, Errors, Warnings, Suggestions, Context actions y otros elementos. Busque el icono de lápices en la esquina inferior derecha de la pestaña del editor de código.

Actualizaciones de las pruebas de unidades

Actualizaciones de las pruebas de unidades

Hemos modificado las barras de herramientas de las ventanas Unit Test Session y Unit Test Explorer. 

  • Hemos desplazado varios iconos de la barra de herramientas de la izquierda a la superior.
  • Ahora es posible filtrar el árbol de pruebas de unidades con la búsqueda de texto, empleando el nuevo cuadro de texto de la barra de herramientas superior.
  • Los estados "Failed", "Aborted" y "Inconclusive" se han combinado en un único estado “Broken” de forma predeterminada. Si prefiere que estén por separado, haga clic en el icono de rueda dentada de la barra de herramientas superior.

Además, hemos añadido tres funcionalidades importantes:

  • Puede utilizar la nueva funcionalidad avanzada Group by en las ventanas de herramientas Unit Test Explorer y Unit Test Session para crear un grupo personalizado. Con el elemento añadido Duration, ahora es posible agrupar pruebas de unidades según el tiempo que tardan en ejecutarse.
  • Puede filtrar las pruebas de unidades según el marco de trabajo objetivo en la ventana de herramientas Unit Test Session, en caso de que tenga más de una (algo bastante común en la actualidad) y no quiera ver algunas.
  • Puede exportar e importar cualquiera de sus sesiones de pruebas de unidad. Esto le permite compartirlas con su equipo, entre sus ordenadores o entre ramas cuando realiza algún cambio en el código y quiere ejecutar/cubrir el mismo conjunto de pruebas de unidad para las dos ramas. Además, el archivo exportado es totalmente compatible con ReSharper, para que pueda compartir las sesiones de pruebas de unidad que tenga en Rider con compañeros que utilicen ReSharper, y viceversa.

Más información: Actualizaciones del ejecutor de pruebas en Rider 2020.1

El cliente de TFS reactivo llega a RTM

El cliente de TFS reactivo llega a RTM

En Rider 2019.3, hemos añadido un cliente de TFS experimental que proporciona una mejora espectacular en la velocidad de la acción "Checking for changes". En el ciclo de lanzamiento actual, seguimos haciendo grandes esfuerzos por el cliente. 

Finalmente, nuestro cliente de TFS lanza su primera versión y aporta numerosas mejoras. Mencionemos las dos más significativas. En primer lugar, la activación de Version Control Integration ahora funciona para los espacios de trabajo de TFS creados de manera local con Visual Studio. Esto significa que ya no necesita volver a crear un espacio de trabajo local desde cero en Rider. En segundo lugar, hemos aumentado considerablemente el rendimiento de las operaciones Delete y Rollback.

Para empezar a utilizar el cliente de TFS, vaya a Settings | Version Control | TFVC y habilítelo.

Actualizaciones del editor de código

Actualizaciones del editor de código

Rider, como todos los IDE de JetBrains, ahora emplea JetBrains Mono como fuente predeterminada en todos los temas. ¡Esperamos que le guste!

También se añade por fin otra funcionalidad de ReSharper que faltaba en Rider: los espacios de nombres se pueden importar automáticamente cuando se pega el código desde un archivo en la solución.

Si edita archivos asociados a NuGet manualmente, creemos que le gustará obtener asistencia de Rider, ya que ahora ofrece una compatibilidad inicial con la edición de archivos NuGet.Config, packages.config y *.nuspec, incluidas la finalización de código, la validación de sintaxis y la ventana emergente de documentación rápida.

También merece la pena mencionar estas mejoras más pequeñas: 

  • Hay disponibles separadores de métodos en C# para separar visualmente las interfaces, clases, métodos, etc.
  • Los accesos directos Alt+Mayús+Flecha arriba/abajo/derecha/izquierda ejecutarán una selección de bloques del mismo modo que hacen en Visual Studio.
  • Dos pares de acciones, "Move Caret To Code Block Start"/"Move Caret To Code Block End" y "Move Caret To Code Block Start with selection"/"Move Caret To Code Block End with selection", ahora son compatibles con C# y siguen el mismo comportamiento que en otros IDE de JetBrains.
  • Las descripciones emergentes de documentación se muestran al pasar el ratón por encima para los símbolos de código resaltados como errores.
Refactorización Extract Class

Refactorización Extract Class

Una refactorización muy demandada y esperada disponible en ReSharper por fin llega también a Rider: Extract Class.

¿Se pregunta para qué la necesita? Imagínese que tiene una clase que hace un trabajo que realmente deberían hacer dos clases distintas. La utilización de esta refactorización es el modo más seguro y eficaz de descomponer esa clase compleja en dos clases de una sola responsabilidad. Extract Class le ayudará a elegir métodos y campos para pasar de la clase antigua a la nueva. También le advertirá sobre cualquier dependencia rota y problemas de accesibilidad, y sugerirá opciones de resolución de conflicto.

Vista Solution Explorer

Actualizaciones de Solution Explorer

La vista Solution Explorer introduce dos nuevas y útiles carpetas que le proporcionan más información sobre su proyecto: Implicit references, como subcarpeta de la carpeta Assemblies, y MSBuild import targets.

Además, hay muchas actualizaciones menores:

  • Hemos añadido una nueva funcionalidad al cuadro de diálogo Add References denominada Recent Assemblies.
  • Hemos introducido un diseñador más sencillo para los archivos de configuración de la aplicación (*.settings).
  • Las propiedades de los archivos están disponibles para todos los archivos en la vista Solution Explorer (en View | Appearance | Details in Tree Views).
  • La generación de código Resx ahora funciona mejor para los proyectos .NET Standard en macOS y Linux.
Actualizaciones en la cobertura de código y el perfilado de rendimiento

Actualizaciones en la cobertura de código y el perfilado de rendimiento

Para ofrecerle un mayor control de los resultados de cobertura de las pruebas de unidad que obtiene en Rider, hemos añadido los filtros de cobertura. Puede especificarlos en Preferences/Settings | Build, Execution, Deployment | dotCover | Filtering.

Si realiza el perfilado de rendimiento en Linux o macOS, tenemos buenas noticias para usted: las aplicaciones .NET Core por fin se pueden perfilar en el modo Tracing en estos sistemas operativos. Además, ahora puede integrar el perfilador en aplicaciones .NET Core en Linux.

Configuraciones de ejecución y build

Configuraciones de ejecución y build

  • Hemos añadido una acción muy práctica: Cancel build.
  • Existen tareas "Build/Clean Project" para todas las configuraciones de ejecución. Estas tareas le permiten seleccionar qué proyectos crear o limpiar antes de lanzar una configuración de ejecución.
  • Ahora está disponible la compatibilidad con la propiedad MSBuild UpToDateCheckInput
  • La interfaz de usuario de las configuraciones de ejecución “Publish to folder” ahora es compatible con los identificadores “ARM” y cualquier identificador “target runtime” personalizado.
  • El MSBuild integrado se ha actualizado a la versión 16.5
Decompilador e IL Viewer

Decompilador e IL Viewer

Hemos añadido varias nuevas funcionalidades al decompilador de Rider e IL Viewer

  • La compatibilidad con las referencias que aceptan valores null (NRT) está disponible en el decompilador. Tenga en cuenta que actualmente solo funciona en las declaraciones, pero no en los cuerpos de los métodos.
  • Compatibilidad para decompilar los miembros predeterminados de las interfaces.
  • Se ha mejorado la compatibilidad para decompilar nombres de componentes de tupla.
  • Code Vision de "IL viewer" ahora está disponible en los archivos de origen externos después de la decompilación.
Compatibilidad con el control de versiones

Compatibilidad con el control de versiones

  • Code Vision ahora puede mostrar el historial de un método. Esta funcionalidad está habilitada de forma predeterminada en lugar de VCS Annotate (se puede modificar en Preferences | Editor | Code Vision | VCS Actions).
  • La ventana emergente Git Branches gana un campo de búsqueda explícito y un botón Refresh rediseñado.
  • Se han añadido a la barra de estado los indicadores de confirmación entrante (azul) y saliente (verde).
  • Eche un vistazo al nuevo cuadro de diálogo, “Interactively Rebase from Here”.
  • La ventana de herramientas Repositories ahora se denomina Git, Subversion, Mercurial o Perforce, en función del VCS que utilice.
  • Las vistas Diff y Merge ahora admiten el resaltado de código.
  • Si no tiene Git en su máquina, Rider se ofrecerá a descargarlo e instalarlo por usted.
Nuevas sorpresas para los desarrolladores F#

Nuevas sorpresas para los desarrolladores F#

Con el fin de mejorar la compatibilidad con F# en Rider, hemos realizado multitud de mejoras y correcciones que le ayudarán en su rutina diaria:

  • La acción Send project references to F# Interactive está disponible.
  • La descripción emergente de evaluación que se muestra al pasar el ratón funciona con más expresiones cuando está depurando: los calificadores autoreferentes en métodos y tipos (this.Property) y las expresiones indexadoras ("foo".[1]).
  • Se ha añadido una plantilla de archivo Type.
  • Los analizadores de código ahora se ejecutan en paralelo.
  • Numerosos arreglos rápidos nuevos para inspecciones de código ya existentes; p. ej., el arreglo rápido Make field mutable para la inspección FS0005: Field not mutable.
  • Un par de nuevas inspecciones de código con arreglos rápidos adecuados; p. ej., la inspección “Redundant Attribute suffix”.
  • Dos nuevas intenciones de código: Elif to If/If to Elif y Negate If expression condition.
  • Code Vision tiene una nueva acción Copy Inferred Type y ya no muestra espacios de nombres primarios para los tipos con el fin de acortar la información mostrada.
  • Extend Selection puede seleccionar toda la expresión dentro de ().

Para obtener más detalles sobre las actualizaciones y correcciones, consulte el repositorio de GitHub.

Desarrollo web

Desarrollo web

  • Nuevas intenciones para convertir a encadenamiento opcional y/o fusión nula y para inferir parámetros desde las utilizaciones.
  • La ventana emergente de documentación se puede mostrar al pasar el ratón.
  • Compatibilidad con Vuex y la API de Composition.
  • Ejecución del formato Prettier al guardar.
  • Rutas de archivo completas en la ventana emergente Go to.
  • Compatibilidad con Yarn 2 para los proyectos TypeScript.
  • Para obtener más información sobre las actualizaciones del desarrollo web, consulte Novedades de WebStorm 2020.1.
Compatibilidad con bases de datos

Compatibilidad con bases de datos

  • Exportación a Excel.
  • Compatibilidad con los marcos de trabajo de pruebas utPLSQL y Tsqlt.
  • Vea los resultados en el editor de código (deshabilitado de forma predeterminada).
  • Nuevas opciones de autenticación.
  • Configuración de SSH compartida.
  • Mejor filtrado de datos en MongoDB.
  • Y muchas más funcionalidades relacionadas con las bases de datos, que puede consultar en Novedades de DataGrip 2020.1.
Otras funcionalidades y mejoras

Otras funcionalidades y mejoras

  • ¡La compatibilidad con los proyectos WIX (Windows Installer XML Toolset) llega por fin a Rider! 
  • Hay un nuevo complemento compatible con el motor de juegos Godot disponible para Rider 2020.1+. Está disponible en código abierto en GitHub
  • Ahora puede realizar búsquedas en la configuración de estilo de código C#.
  • Rider puede utilizar el mismo archivo de configuración (global) a nivel de máquina que ReSharper para sincronizar la configuración de las dos herramientas (ajuste este comportamiento en File | Settings | Tools | ReSharper | Synchronize machine-wide Rider and ReSharper settings).
  • El formateo de código ofrece nuevas configuraciones que incluyen la coma final para los estilos de código C#. Puede encontrarlos en Preferences | Editor | Code Style | C# | Syntax Style | Trailing comma, y también son compatibles con la inspección StyleCop SA1413 (excepto en unos pocos casos especiales).
Aún más funcionalidades

Aún más funcionalidades

  • El nuevo modo Zen combina el modo sin distracciones y el modo en pantalla completa.
  • Divida la ventana de herramientas Terminal vertical u horizontalmente si quiere ejecutar sesiones de terminal en paralelo. Puede invocar el menú contextual desde el Terminal para crear, navegar y cerrar una sesión de terminal dividida.
  • Hay muchas mejoras en el Cliente HTTP. Puede autocompletar las URL y navegar a los extremos relacionados directamente desde los archivos de solicitud HTTP; puede generar solicitudes HTTP desde la vista Endpoints; y el cliente HTTP ahora completa automáticamente las variables de la ruta de forma correcta.
  • Ahora hay disponible un tema IntelliJ Light para todos los sistemas operativos.
  • El borde de la ventana superior en Windows 10 ahora tiene un aspecto mucho mejor en el modo sin bordes.

Novedades en IntelliJ IDEA 2020.1