Novedades de Rider

Rider 2022.3 es compatible con el SDK de .NET 7, que incluye las últimas funcionalidades de C# 11. En esta versión se ha mejorado bastante el rendimiento, en especial en lo que respecta al tiempo de inicialización y la capacidad de ejecutar Rider en WSL 2 (Subsistema de Windows para Linux 2) mediante desarrollo remoto. También hemos introducido varios cambios importantes en la experiencia y la interfaz de usuario, como la posibilidad de anclar las ventanas de herramientas en configuraciones multimonitor. Por último, pero no por ello menos importante, esta versión profundiza en la integración con los editores de Unity y Unreal.

Rendimiento

Rendimiento

Hemos realizado varios cambios para aumentar la velocidad de inicio de Rider y reducir el tiempo que tarda en abrir una solución y ponerse a trabajar:

  • Ahora, el instalador de Rider puede añadir archivos ejecutables a la lista de exclusión de Windows Defender, lo que mejora bastante la velocidad de inicialización.
  • Ahora Rider puede cargar un archivo de solución y mostrar el árbol de proyectos al instante, sin tener que esperar a que el backend se inicialice.
  • Hemos eliminado todas las barras de carga del explorador de soluciones para que la interfaz de usuario sea más sencilla. A partir de ahora, todas las barras de progreso de carga se mostrarán en la barra de estado del IDE.
  • Hemos incluido un nuevo analizador de C#, que ofrece un resaltado de sintaxis básico durante el inicio y la experiencia completa cuando Rider se inicia y su solución se carga por completo.
  • También hemos introducido varias mejoras en el rendimiento del backend de Rider. We’ve enabled server garbage collection (GC) to get better memory throughput for the backend process. Además, hemos actualizado a la última versión el entorno de ejecución del servicio de lenguajes del backend de Rider, es decir, de .NET 6 a .NET 7, la versión más reciente. Y por último, pero no por ello menos importante, ahora las construcciones se ejecutan en paralelo cuando los proyectos no tienen interdependencias. Todos estos cambios hacen que cargar una solución con muchos proyectos sea bastante más rápido.

Obtenga más información acerca de las mejoras de rendimiento de Rider aquí.

Compatibilidad con WSL 2

Ahora Rider es compatible con WSL 2 (Subsistema de Windows para Linux 2) gracias a la funcionalidad de desarrollo remoto del IDE. Esto significa que puede utilizar Rider en una instancia de WSL 2 para navegar por sus soluciones y fuentes, así como para crear, depurar y ejecutar aplicaciones como si estuvieran almacenadas de forma local.

Se puede iniciar un proceso de configuración sencillo desde la pantalla de bienvenida de Rider. La interfaz de usuario se mostrará a través de la funcionalidad de desarrollo remoto, lo que significa que no hará falta recurrir a WSLg y se instalará de forma automática un cliente local RemoteDev. Para obtener más información, consulte la documentación de desarrollo remoto.

Interfaz/experiencia de usuario

Acoplar las ventanas de herramientas

Ya está aquí la esperada opción de anclar las ventanas de herramientas a las pestañas flotantes del editor. Para que la organización del espacio de trabajo y la interacción con Rider en varios monitores sea más cómoda, hemos implementado la opción de arrastrar las ventanas de herramientas fuera de la ventana principal y anclarlas a las pestañas flotantes del editor.

Actualización de Search Everywhere

Hemos perfeccionado el algoritmo que hay detrás de la lista de resultados de Search Everywhere para que su comportamiento sea más predecible y la selección de los elementos que se buscan, más precisa. Ahora, cuando empiece a escribir la consulta, el IDE retendrá los primeros resultados de búsqueda que aparecen y no los reordenará cuando se encuentren más opciones (como ocurría en las versiones anteriores).

Nuevo cuadro de diálogo Attach to process

Hemos incluido el cuadro de diálogo Attach to process para mejorar la experiencia de usuario, en especial al vincularse a un proceso con SSH. Nuestro objetivo es ayudarle a encontrar y seleccionar el proceso correcto más rápidamente, y hacer que el IDE recuerde el depurador elegido.

Mejora de la acción de pegar

Mejora de la acción de pegar

Hemos mejorado la experiencia de edición modificando el comportamiento de la acción de pegar (⌘V / Ctrl+V). Ahora cuando copie (⌘C /Ctrl+C) o corte (⌘X /Ctrl+X) una línea sin ningún código seleccionado, la acción de pegar añadirá el contenido del portapapeles por encima de la línea actual, y no en su signo de intercalación, como hacía en versiones anteriores.

Pegar JSON como clases

Pegar JSON como clases

Ahora, la acción Edit | Paste Special: JSON as Classes le permite pegar objetos «de forma inteligente». Por ejemplo, si copiara un JSON y lo pegara utilizando esta acción, se generarían clases C# de forma automática basadas en ese JSON.

Nueva interfaz de usuario Avance anticipado

Le invitamos a que cambie a la nueva interfaz de usuario para los IDE basados en IntelliJ desde Preferences/Settings | Appearance & Behavior | New UI Preview. La nueva interfaz de usuario sigue trabajando en reducir la complejidad visual del IDE para que pueda centrarse en su trabajo.

Otros

Además, seguimos añadiendo pequeñas mejoras en la experiencia y la interfaz de usuario de Rider para que sea más relevante y útil:

  • Hemos limpiado el menú Add para que solo incluya elementos relevantes para la solución o el proyecto actuales.
  • Ahora, la acción Open in Terminal está en el menú contextual de Solution Explorer.
  • Se ha cambiado el nombre de la sección File | New del menú principal por File | New Solution para que refleje mejor la acción real que ejecutará.
  • Hemos añadido una acción para alternar entre soluciones dentro de Solution Explorer. Ahora, al hacer clic con el botón derecho del ratón en una solución distinta de aquella en la que está trabajando, se activará un menú contextual, en el que podrá seleccionar Open para cerrar de forma simultánea la solución activa al alternar.

Compatibilidad con el SDK .NET 7

Compatibilidad con SDK .NET 7

Rider 2022.3 ofrece oficialmente compatibilidad con el SDK .NET 7, incluido lo siguiente:

  • Plantillas de proyecto actualizadas.
  • Gestión centralizada de paquetes NuGet.
  • Compatibilidad con los grupos de rutas de la API mínima de ASP.NET en la ventana de herramientas Endpoints.
  • Nuevas funcionalidades de C# 11, entre las que se incluyen tipos locales de archivo, literales UTF-8, campos ref y la palabra clave scoped.
  • La posibilidad de crear, ejecutar y depurar proyectos destinados al nuevo SDK.

Compatibilidad con C#

C# 11

Literales UTF-8

Literales UTF-8

Hemos añadido compatibilidad básica con literales UTF-8. Ahora, el análisis de código propone usar un sufijo u8 para un literal en lugar del método System.Text.Encoding.UTF8.GetBytes() o una matriz de bytes con los símbolos UTF8 adecuados. También hemos añadido una serie de advertencias y errores del compilador para los literales UTF-8.

Tipos de archivo local

La compatibilidad básica con los tipos de archivo local permite entender la nueva sintaxis, e incluye un modificador de accesibilidad de file para los tipos, y advertencias y errores del compilador con las correspondientes soluciones rápidas, como Move class to outer scope cuando se especifica el modificador file para una clase anidada. También hay una acción contextual muy útil para convertir un tipo general en uno de archivo.

Cadenas sin formato

Cadenas sin formato

Ahora, Rider puede convertir cadenas regulares y literales en cadenas sin formato. Esto también significa que ahora hay muchas funcionalidades para las cadenas que están disponibles para las cadenas sin formato.

Sugerencias de patrones de lista

Sugerencias de patrones de lista

En esta versión, hemos introducido sugerencias para utilizar la nueva sintaxis de patrón de lista de C# 11 (en lugar de las comprobaciones convencionales de la longitud de la colección con la consiguiente expresión de acceso al indexador) para comprobar los elementos correspondientes de la colección.

Miembros virtuales estáticos

A partir de C# 11, puede utilizar modificadores abstract y virtual para los miembros static de las interfaces y utilizar dichos miembros en el código genérico con parámetros de tipo limitados por esta interfaz. Rider se ha actualizado para manejar los miembros polimórficos de tipo static de la misma manera que se manejan los ordinarios:

  • Marcas de herencia en el medianil.
  • Navegación para los miembros de implementación o supermiembros.
  • Generación de implementaciones que faltan.
  • Las sugerencias de finalización de código después de la palabra clave override también incluyen a los miembros de la interfaz, por lo que ahora puede implementar fácilmente miembros abstractos o virtual static.
Operador de desplazamiento a la derecha sin signo (>>>)

Operador de desplazamiento a la derecha sin signo (>>>)

Ahora, Rider reconoce el engorroso patrón de código que tienen que escribir los desarrolladores de C# para desplazarse a la derecha sin signo para los tipos de datos con signo y propone utilizar el operador de desplazamiento a la derecha sin signo (>>>) en C# 11.

Coincidencia de patrones sobre spans

Coincidencia de patrones sobre spans

Si analiza Spans de caracteres, probablemente utilice mucho el método MemoryExtensions.SequenceEqual. C# 11 incluye un atajo para este tipo de comprobación. Ahora puede, simplemente, comparar los patrones de los Spans de caracteres con los literales de cadena con las expresiones is o switch.

Rider propone usar las expresiones is o switch en lugar de muchas declaraciones if.

Campos ref y palabra clave scoped

A partir de C#11, se permite declarar campos ref dentro de las estructuras ref. Rider admite esta nueva regla sintáctica, proporciona todos los errores y advertencias del compilador, muestra la palabra clave ref en la finalización del código y permite que dichos campos se inicialicen en un constructor.

Rider también conoce la nueva palabra clave scoped, que puede utilizar en argumentos ref o ref struct y en variables locales. La compatibilidad incluye el análisis correcto de la nueva sintaxis, la palabra clave scoped en la finalización del código y la preservación de la palabra clave scoped al generar anulaciones de métodos. También verifica la compatibilidad de los modificadores scoped y ofrece arreglos rápidos para los parámetros scoped que no coincidan en las anulaciones, las implementaciones de interfaces y las conversiones de delegados.

C# 11 y .NET 7 también han introducido cambios en las reglas de seguridad ref del lenguaje. Los cambios regulan las operaciones disponibles para las variables ref y ref struct con el fin de proporcionar seguridad ref en el código gestionado con la introducción de los campos ref. Rider conoce los cambios y le ayudará a encontrar las partes de su proyecto que necesitan actualizarse y anotarse con la nueva palabra clave scoped para adecuarse a los cambios al migrar a C# 11 o .NET 7.

Inyecciones de lenguaje

Este build incorpora una serie de mejoras en la inyección de lenguaje:

Hemos añadido la compatibilidad con inyecciones de lenguaje utilizando los atributos [StringSyntax] (de .NET 7) y [LanguageInjection] (de JetBrains.Annotations), así como compatibilidad para el comentario de instrucción de inyecciones de lenguaje // lang=<language_name>.

Ahora es posible realizar inyecciones de lenguaje en cadenas interpoladas y concatenaciones de cadenas en cualquier lenguaje, mientras que antes solo estaba disponible para SQL. Tenga en cuenta que los errores de sintaxis se suprimen cuando se utiliza la interpolación de cadenas o la concatenación con expresiones arbitrarias. También se admiten las inyecciones de lenguaje dentro de las cadenas sin formato de C# 11.

Ahora se muestra una guía de sangría que separa la sangría del valor real en las cadenas sin formato.

Actualizaciones generales de C#

Marca Global imports en el medianil

Marca Global imports en el medianil

Hay un nuevo icono de marca de medianil para notificar a los usuarios las importaciones implícitas de espacios de nombres en C# y los archivos Razor.

Al pulsar Alt+Intro en la línea correspondiente, verá la lista completa de importaciones implícitas y la información sobre el archivo fuente donde se encuentran las correspondientes directivas global using. Si selecciona un espacio de nombres importado, Rider puede navegar hasta donde está declarado, además de a las etiquetas <Using Include="Some.NameSpace" /> en el archivo de proyecto .csproj.

Marca Global imports en el medianil

Rider también presenta las importaciones generales de _Imports.razor y permite la navegación a las definiciones de importación correspondientes.

Finalización de código con aprendizaje automático para C#

Finalización asistida por aprendizaje automático para C#

Para agilizar y acelerar su proceso de desarrollo, hemos introducido la clasificación de elementos asistida por aprendizaje automático para las opciones de finalización de código en C#.

Para mejorar su experiencia en el uso de esta función, hay dos opciones que puede habilitar en Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion:

  • Marcar los cambios de posición en la ventana emergente de finalización
  • Marcar el elemento más relevante en la ventana emergente de finalización
Finalización del formato de la cadena

Finalización del formato de la cadena

Con la incorporación de los tipos numéricos Int128 y UInt128 en .NET 7, hemos actualizado nuestras sugerencias de especificación de formato de finalización de código.

También hemos añadido la compatibilidad que faltaba con los tipos de fecha y hora DateOnly y TimeOnly de .NET 6, así como con el tipo numérico de coma flotante de precisión media Half introducido en .NET 5.

Transformación de patrones triviales en expresiones

Transformación de patrones triviales en expresiones

A veces, después de la refactorización, las expresiones de coincidencia de patrones pueden convertirse en patrones recursivos triviales. En este punto puede que no merezca la pena utilizar la sintaxis de los patrones recursivos, por lo que ahora Rider puede convertir los patrones en expresiones más sencillas conservando la semántica original de la concordancia de patrones.

Consejos de finalización de código para una expresión void

Consejos de finalización de código para una expresión void

A veces, al escribir después de una invocación, apenas se ven sugerencias significativas. Esto puede ocurrir si la invocación no produjo ningún valor al llamar al método que devolvía un void. Normalmente, se necesitan algunas acciones del IDE para darse cuenta de ello (volver atrás y navegar hasta la declaración del método, o pasar el ratón por encima de la invocación). En esta versión, hemos introducido el consejo void para este tipo de invocación que devuelve void para informarle de inmediato sobre el tipo resultante de la invocación. Al aceptar este elemento void, se añadirá un punto y coma después de la invocación si este falta.

Desarrollo web

Blazor

Blazor

Rider 2022.3 introduce Hot Reload para las aplicaciones de Blazor Server. Al modificar el código fuente en la aplicación Blazor Server mientras esta se está ejecutando, Rider le preguntará si desea aplicar este cambio a la aplicación en ejecución sin reiniciarla. Busque la barra amarilla de notificación de Sources are modified en la parte superior del editor de texto. Si acepta el cambio, su aplicación se actualizará sobre la marcha y podrá seguir trabajando con la aplicación actualizada.

Pantalla de bienvenida

Internet Information Services (IIS)

En respuesta a una petición popular de nuestra comunidad, hemos añadido la nueva configuración de ejecución IIS Application para ejecutar y depurar aplicaciones ASP.NET clásicas en un servidor IIS. También hemos introducido compatibilidad con el nombre del comando IIS desde el archivo launchSettings.json para aplicaciones ASP.NET Core.

Puntos de conexión

Puntos de conexión

Seguimos mejorando la compatibilidad con los puntos de conexión y el visor de puntos de conexión Endpoint Viewer. Ahora, el visor reconoce y recoge correctamente los puntos de conexión para los grupos de rutas de la API mínima de ASP.NET Core 7. Esto significa que puede buscar, navegar y utilizar la finalización de código inteligente en los puntos de conexión declarados con la API MapGroup(), además de las funcionalidades que ya estaban disponibles.

Acción .NET User Secrets

Acción .NET User Secrets

Se ha añadido la acción .NET User Secrets en los proyectos ASP.NET.

Proyectos web JavaScript/TypeScript

Proyectos web JavaScript/TypeScript

Rider ahora genera de forma automática una configuración de ejecución npm para los proyectos web JavaScript y TypeScript (.esproj) referenciados por la solución (.sln).

Code Vision para JavaScript y TypeScript

Code Vision para JavaScript y TypeScript

Los consejos de inserción de Code Vision ahora también funcionan para JavaScript y TypeScript. Estos consejos facilitarán el seguimiento de los usos de varias clases, métodos, alias de tipos e interfaces en su código.

Compatibilidad con CSS

Compatibilidad con CSS

El IDE ahora entiende la regla «at» @supports, que asocia un bloque de declaraciones con una condición @supports. This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.

Actualizaciones de Angular

Actualizaciones de Angular

Hemos añadido la compatibilidad con el acotado de tipos en las plantillas de Angular, lo que proporcionará una información más precisa sobre los tipos y mejores sugerencias de finalización de código.

Además, Rider ahora excluye la carpeta de caché .angular de las búsquedas globales para ayudar a lograr mejores resultados de búsqueda.

Desarrollo de juegos

Compatibilidad con Unity

Estamos actualizando la compatibilidad con Unity en Rider, con algunas nuevas funcionalidades, mejoras en la funcionalidad existente y algunas correcciones.

Hemos añadido la compatibilidad con el nuevo paquete Input System de Unity. Rider reconocerá si los métodos se utilizan como controladores de eventos para las entradas y no los mostrará como no usados. Find Usages también funciona en estos métodos, mostrando dónde se usan en el código o en el archivo .inputactions.

Es genial poder cargar los recursos del juego durante la ejecución, y ahora Rider le ayuda a asegurarse de que está usando la ruta correcta en los métodos Resources.Load. Muestra la finalización del código mientras escribe y resalta cualquier recurso desconocido con una advertencia.

Rider ha ofrecido la finalización y la verificación de los nombres de las etiquetas durante varias versiones, pero la versión 2022.3 también es compatible con el grupo de métodos GameObject.FindWithTag. Ofrece finalización de código mientras escribe y le avisa si intenta usar una etiqueta que no existe en el proyecto.

En los proyectos de Unity, es muy importante tener los archivos meta sincronizados con los archivos y las carpetas. Rider 2022.3 le advertirá si intenta confirmar un archivo meta para una carpeta vacía en el control de fuentes. Y eso no es todo: si el editor de Unity está abierto, Rider le avisará si hay escenas o activos sin guardar, lo que le garantizará que no se perderán los cambios cuando confirme.

Por supuesto, también hay muchas mejoras y correcciones menores. Hemos reducido el tiempo que se tarda en cargar proyectos particularmente grandes, hemos añadido una notificación que aparece al intentar editar un archivo de paquete de solo lectura, y hemos mejorado Find Usages para que pueda utilizarse con métodos en prefabricados anidados y matrices de controladores de eventos.

Con la compatibilidad con DOTS, ahora Rider sabe que no debe marcar las clases que implementan IBaker o IAspect como no utilizadas.

Puede desactivar las inspecciones de nombres para los campos serializados y hacer que se traten igual que los campos normales, y ahora los enlaces a la documentación en línea apuntan a los lugares correctos.

También nos gustaría dar las gracias a Unity por proporcionar una corrección que ayude a depurar los jugadores en Nintendo Switch.

Compatibilidad con Unreal Engine

Rename con CoreRedirects

Rider ya ofrece la opción de añadir CoreRedirects al renombrar las clases o propiedades de Unreal a través de la refactorización Rename. Ahora, esto también funciona para renombrar:

  • UFUNCTION()
  • USTRUCT()
  • UENUM

Al ejecutar la refactorización Rename, ahora Rider propone añadir CoreRedirects en estos casos.

Si está de acuerdo, el archivo .ini correspondiente se actualizará de forma automática.

Ahora es mucho más difícil estropear el juego sin querer por haber cambiado el nombre de algo.

Actualización de Code Vision para Blueprints

Rider 2022.3 introduce una nueva métrica de Code Vision específica para Blueprints. Ahora puede comprobar rápidamente cuántos Blueprints utilizan la función BlueprintCallable y obtener una lista de todos los usos desde el menú contextual de Code Vision.

Herramienta Generate GUID

Ahora la herramienta Generate GUID es compatible con el formato GUID de Unreal Engine. Cuando necesite generar rápidamente un GUID, solo tiene que elegir Tools | Generate GUID... en el menú, y se preseleccionará el formato hexadecimal preferido.

Importación automática

La funcionalidad de importación automática tras la finalización puede ahorrarle mucho tiempo. Sin embargo, si añade una directiva #include incorrecta, el problema puede ser difícil de detectar. Hemos trabajado duro para pulir esta funcionalidad y asegurarnos de que no sugiere entidades no deseadas procedentes de los encabezados del sistema en la importación automática. De forma predeterminada, los encabezados del sistema no se sugieren, pero si quiere que lo hagan, puede habilitarlos en Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine.

Registro de UnrealBuildTool

Hemos mejorado la presentación de los registros de UnrealBuildTool. Para que no se pierda ninguna advertencia o error relacionado con las configuraciones del proyecto, ahora el panel de registro incluye marcas de tiempo y conserva los registros de las ejecuciones anteriores de UnrealBuildTool.

Compatibilidad nativa con .uproject

En el caso de los proyectos basados en Unreal Engine, Rider funciona con proyectos .sln y .uproject. Seguimos mejorando la compatibilidad del modelo nativo .uproject para que sea más preciso y ergonómico:

  • Rider 2022.3 respeta las ubicaciones de origen adicionales especificadas en .project, en concreto AdditionalRootDirectories y AdditionalPluginDirectories.
  • También es compatible con programas personalizados colocados en la ubicación del juego y genera correctamente todos los archivos de proyecto de los programas.
  • Rider ahora es compatible con módulos con varios archivos .Build.cs para los módulos específicos de la plataforma.
  • Ahora, la finalización y las inspecciones en los archivos .uplugin y .uproject son compatibles si utiliza el modelo de proyecto .uproject.
  • Ahora, las configuraciones de ejecución se generan de forma automática para los programas C++ siempre que se utilice el modelo .uproject.

Acción Attach to Unreal Editor

Hemos implementado la acción Attach to Unreal Editor para los proyectos de Unreal Engine. Permite unirse rápidamente a un proceso de Unreal Engine en lugar de tener que buscar manualmente el correcto. Actualmente, solo es posible unirse al proceso al que está conectado UnrealLink, lo que significa que el proyecto que se ejecuta en Unreal Editor y aquel en el que está trabajando en Rider deben coincidir. Estamos trabajando para mejorar este flujo de trabajo en futuras versiones.

Compatibilidad con ARM64 Avance anticipado

Acceso anticipado a la compatibilidad con ARM64

Ahora Rider 2022.3 puede ejecutarse en Windows y Linux ARM64. Todos los flujos de trabajo de desarrollo básicos son compatibles, incluidas la ejecución y la depuración de sus aplicaciones .NET y la ejecución de pruebas de unidad. Sin embargo, mientras seguimos trabajando y realizando pruebas para asegurarnos de que Rider funcione sin problemas con los procesadores ARM64, nos gustaría que tuviera en cuenta las siguientes limitaciones:

  • Actualmente, no tenemos pensado hacer que el desarrollo de Unreal Engine sea compatible con Windows ARM64, ya que Epic Games no es compatible con Unreal Engine en esta arquitectura.
  • Todavía estamos desarrollando la compatibilidad de Unreal Engine con Linux ARM64.
  • Hay compatibilidad básica para proyectos de Visual C++ en Windows ARM64, aunque todavía no incluye la depuración de aplicaciones desarrolladas de forma nativa. Puede seguir el progreso de este tema aquí.

Complementos

Generador de perfiles de memoria en macOS y Linux dotUltimate

Además de en Windows, dotMemory ya está disponible para JetBrains Rider en Linux y macOS. Hay dos nuevos modos de generación de perfiles disponibles en el widget Run y en el menú Run | Switch profiler configuration: Memory (sampled allocations) y Memory (full allocations). Puede obtener más información acerca de las diferencias entre estos en la ayuda de dotMemory.

Puede adjuntar el generador de perfiles a un proceso en ejecución desde el menú Run y ver el Timeline Graph desplegarse en tiempo real. Seleccione un intervalo para abrir la vista Memory Allocations, que es la misma que en dotMemory Standalone. Le permite analizar los objetos asignados y el árbol de llamadas de asignación para un periodo de tiempo específico.

Por desgracia, en esta versión todavía no es posible recopilar instantáneas de memoria.

Dynamic Program Analysis

Dynamic Program Analysis

El análisis dinámico de programas (Dynamic Program Analysis - DPA) cuenta con nuevas inspecciones que permiten encontrar incidencias relacionadas con el uso de la base de datos, por ejemplo cuando:

  • La ejecución de comandos tarda mucho
  • Hay demasiadas conexiones a la base de datos
  • Se están ejecutando a la vez demasiados comandos de base de datos
  • Hay comandos que devuelven demasiados registros

Las nuevas inspecciones están disponibles para todas las aplicaciones que utilizan Entity Framework Core y un proveedor de datos .NET para SQL Server.

dotCover dotUltimate

Dynamic Program Analysis

Navegación más sencilla hacia las pruebas

Hemos añadido la acción Show Covering Tests a los menús contextuales de dotCover tanto en el editor de código como en la ventana Unit Test Coverage. Esta acción muestra una ventana emergente que contiene todas las pruebas de cobertura. La ventana emergente también permite crear una nueva sesión de cobertura.

Instantáneas más rápidas

Ahora dotCover solo copia los grupos y los archivos de símbolos necesarios para las pruebas continuas en JetBrains Rider. Esto mejora el rendimiento general de dotCover, especialmente en proyectos grandes, ya que no necesita copiar todo el directorio de trabajo. Si es necesario, puede ajustar el filtro de archivos de instantáneas en la configuración de dotCover.

Compatibilidad mejorada con Unity

Antes, para analizar la cobertura de las pruebas de Unity había que reiniciar Unity con la compatibilidad con la cobertura activada. A partir de esta versión, ya no es necesario reiniciar Unity y la compatibilidad con las pruebas está garantizada.

Compatibilidad con NuGet

La gestión centralizada de paquetes (CPM, por sus siglas en inglés, y también conocida como archivo Directory.Packages.props) es una funcionalidad evolutiva de la pila de tecnología de .NET y, a medida que va mejorando, facilita la gestión de soluciones en el futuro. Con la incorporación de CPM en Rider, los desarrolladores deberían tener más control sobre sus dependencias.

En este artículo del blog, podrá aprender todo sobre la gestión centralizada de paquetes, incluidos consejos y advertencias.

Siempre que utilice paquetes NuGet de código abierto en sus soluciones, se arriesga a exponer su proyecto a vulnerabilidades de seguridad. Para mitigar este riesgo, hemos introducido la detección de dependencias vulnerables en Rider. El IDE le avisará de las dependencias vulnerables asociadas al uso de paquetes NuGet con ventanas emergentes de notificación, que pueden investigarse más a fondo en la sección Security de la vista Problems. La información sobre las dependencias vulnerables asociadas a los paquetes incluidos en la solución también se puede encontrar en la ventana NuGet Package Management si selecciona un paquete concreto.

También hemos mejorado la experiencia de desplazamiento dentro de la lista Packages en la ventana de herramientas NuGet.

Compatibilidad con F#

Rider 2022.3 es compatible con F# 7, incluye varias correcciones de pequeños problemas y añade algunas mejoras ergonómicas.

Mejora de la compatibilidad de la documentación en XML

Mejora de la compatibilidad de la documentación en XML

Si escribe < dentro de un comentario, se añadirá una plantilla de documentación. Además, el resaltado de sintaxis y la finalización de código facilitan la edición de los comentarios de la documentación.

Finalización de código para los registros

Finalización de código para los registros

Una nueva regla de finalización de código simplifica la escritura de expresiones record, ya que hace hincapié en los campos del tipo record inferido, oculta los que ya se utilizan y soluciona varios casos en los que antes no se mostraban sugerencias.

Archivos de firmas

Archivos de firmas

Hemos añadido los arreglos rápidos Update parameter name y Update record field, que actualizan los archivos de firma, con lo que es más fácil usarlos al cambiar el código. A huge thanks goes to Florian Verdonck for implementing them!

Estos son solo los aspectos más destacados de las mejoras de la compatibilidad con F#. You can find the full list of F# features included in the 2022.3 release here.

Compatibilidad con bases de datos

A continuación presentamos algunas de funcionalidades nuevas de Rider 2022.3 para trabajar con bases de datos:

  • Filtro rápido: puede filtrar los resultados y ocultar los objetos que no coincidan al utilizar la búsqueda rápida.
  • Filtrado de esquemas basado en patrones: ahora puede elegir bases de datos o esquemas para la introspección basada en patrones de expresiones regulares.
  • Formatos para los campos de fecha y hora: puede personalizar cómo se mostrarán los campos de tipo fecha y hora en el editor de datos.
  • Ediciones múltiples en la ventana Modify: ahora puede editar varios objetos a la vez.

Más información: Novedades de DataGrip 2022.3

Miscelánea

IL Viewer

IL Viewer

Ahora, la ventana de herramientas IL Viewer puede descompilar código en diferentes niveles de conceptos del lenguaje C#. Hay dos niveles de C# disponibles: el nivel alto, con ciertas construcciones sintácticas simplificadas utilizando las últimas funcionalidades del lenguaje, y el nivel bajo, para los casos en los que desee saber cuál es el estado bruto de estas construcciones sintácticas.

Resaltado de código

Resaltado de código

Se han revisado los resaltados y los subrayados ondulados del código en Rider 2022.3. Debido a una diferencia en la lógica interna, Rider entraba en conflicto con los analizadores de estilo de código de Microsoft Roslyn, haciendo que mostrara resaltados superpuestos, que dibujara el mismo resaltado en diferentes puntos o que duplicara los subrayados ondulados. Se han resuelto las diferencias en la lógica que hay detrás de la mayoría de estos casos y, para las raras excepciones, los errores se acompañan con sugerencias claras sobre cómo resolver el conflicto.

Además, ahora Rider mostrará la información relativa a Roslyn Analyzer ID y URL Reference en la ventana emergente Quick Documentation para las inspecciones producidas por los analizadores de Roslyn.

Formateo de C++

Formateo de C++

Hemos implementado la opción de ejecutar un archivo binario con formato clang directamente, en lugar de usar el motor formateador de Rider, lo que garantiza que sea totalmente compatible con el formateador estándar del sector, y que tenga un rendimiento mejor y una gama más amplia de opciones de formateo. Puede alternar entre las opciones de formato clang integrado y externo yendo a Settings | Editor | Code Style | C++ y seleccionando la opción de Clang-format.

Depurador

Hemos mejorado drásticamente el rendimiento del depurador con la opción Allow property evaluations and other implicit function calls desactivada. Ahora puede evaluar muchas más expresiones en modo sin efectos secundarios para proyectos .NET, .NET Framework y .NET Core.

Pruebas de unidad

Hemos hecho que el árbol del explorador de pruebas de unidad sea «perezoso» para que vaya más rápido y sea menos exigente con la memoria. Antes, todos los nodos se creaban de forma automática junto con el árbol de pruebas de unidad, lo que ralentizaba la exploración y consumía demasiada memoria. Ahora, solo se crearán los nodos que pertenezcan a las partes expandidas del árbol, lo que mejorará notablemente el rendimiento.

MSBuild

  • Hemos habilitado la recogida de basura del servidor de forma predeterminada para los MSBuilds de .NET Core 17+.
  • Ahora Rider puede detectar si la versión de 32 bits de MSBuild se queda sin memoria y pasar a utilizar la versión de 64 bits desde Visual Studio.

Rendimiento

Se han refactorizado la opción Solution Wide Analysis y el comando Find usages. Según las pruebas internas, su rendimiento medio es entre un 20 % y un 40 % más rápido que antes.