Novedades de ReSharper 2022.1

2022.1 se centra en la calidad y trae muchas mejoras y correcciones de errores, concretamente para el desarrollo de Blazor y la compatibilidad con C#.

Descargar

Prueba gratuita de 30 días disponible

Compatibilidad con C#

Seguimos mejorando la compatibilidad con C# 10, en particular las instrucciones using globales. Hemos implementado dos nuevas refactorizaciones que también están disponibles como acciones contextuales.

Extract Global Using puede ayudarle a introducir el concepto de usos globales en su proyecto. Puede invocarlo en una directiva using normal, y ReSharper le sugerirá que lo extraiga a un archivo GlobalUsings.cs designado (si aún no existe tal archivo en su proyecto, se creará). El using normal que ya no es necesario se eliminará de los archivos de su proyecto.

Si decide refactorizar un using global en un using normal, la refactorización Inline Global Using también puede ayudarle. Cuando se llama a un using global, lo elimina del archivo GlobalUsings.cs y añade la correspondiente declaración using a los archivos de su proyecto donde sea necesario.

La funcionalidad using global es compatible con Find Usages y el análisis de código para los métodos de extensión.

Hemos investigado el C# 11 por venir y hemos creado compatibilidad con los atributos genéricos.

Tipos de referencias que aceptan valores null

  • Hemos dividido las advertencias de comprobación de nulos en expresiones que nunca deberían ser nulas en dos categorías. La primera advertencia es para las expresiones que nunca son nulas porque así lo dice una anotación NRT. La segunda advertencia es para las expresiones en las que hay una comprobación de los nulos en tiempo de ejecución.
  • Hemos añadido un nuevo ajuste para cambiar al modo Runtime enforced not null warnings only. Es accesible desde el grupo de elementos de configuración del menú Alt+Intro para las advertencias basadas en anotaciones.
  • Las anotaciones[MemberNotNull] y [MemberNotNullWhen] ahora son compatibles con los proyectos que no utilizan tipos de referencias que aceptan valores null.

Puntos de conexión

Ahora la compatibilidad con Endpoints funciona para las API mínimas de ASP.NET Core 6 y el enrutamiento basado en convenciones. Incluye navegación, análisis del código y finalización de código.

Razor y Blazor

Estas son algunas de las funcionalidades y correcciones más notables que hemos realizado para Razor y Blazor:

  • Hemos añadido compatibilidad con el nuevo atributo [EditorRequired] de .NET 6. La inspección correspondiente y el arreglo rápido también están disponibles si intenta utilizar un componente de Blazor sin especificar los parámetros necesarios.
  • Hemos implementado la tan esperada compatibilidad con las funciones locales de C# dentro de la sintaxis de Razor.
  • Hemos mejorado la limpieza de código en archivos .razor con componentes Blazor. Ya no elimina todas las declaraciones @using.
  • También hemos arreglado las acciones contextuales If To Switch e Invert If en el código Razor con referencias a los componentes Blazor.
  • ReSharper ahora utiliza el estilo de nomenclatura correcto para las propiedades inyectadas de Blazor.
  • La acción Comment with Line Comment ahora comenta solo la parte del código Razor que se espera.
  • Hemos añadido la navegación a través de la jerarquía de herencia al código Razor. Ahora se muestran las marcas del medianil correspondientes para los símbolos base y derivados. Puede hacer clic en ellos para navegar hasta el código.

Limpieza y formateo de código

Hemos reorganizado todos los elementos del menú Alt+Intro relacionados con Code Cleanup y Formatting. Format selection, Cleanup selection y Apply syntax style se han combinado en un elemento denominado Reformat and Cleanup para proporcionar un único punto de entrada.

Además de estos cambios, los ajustes de estilo de sintaxis están ahora disponibles en las acciones Configure code style y Autodetect code style settings. El panel Preview code style muestra también los cambios en el estilo de la sintaxis.

Pruebas de unidad de Unreal Engine

Ahora, el marco de trabajo de prueba de Unreal Engine es compatible. ReSharper C++ introduce las pruebas de unidad de Unreal Engine y añade los indicadores de acción correspondientes junto a cada prueba en el editor para ejecutar o depurar la prueba o todo el conjunto de pruebas. En la ventana Unit Test Sessions, puede revisar los resultados de las pruebas y volver a ejecutarlas todas, las fallidas o solo algunas.

Novedades de ReSharper C++ 2022.1

Mejor compatibilidad incluso con C++

Ahora, ReSharper C++ es mejor para gestionar las llamadas a constructores implícitos, lo que le permite encontrar usos y navegar al constructor llamado en más casos, entre los que se encuentran los siguientes:

  • funciones de creación de punteros inteligentes estándar (make_unique/make_shared) y específicas de Unreal (MakeShared/MakeUnique).
  • métodos contenedores tipo emplace.
  • static_cast y expresiones de conversión de tipo C.

ReSharper C++ 2022.1 también muestra una advertencia de sobrecarga cuando se llama a una función tipo emplace con argumentos incorrectos.

Novedades de ReSharper C++ 2022.1

Generadores de código fuente

Tras analizar el rendimiento de la compatibilidad de los generadores de fuentes, hemos decidido aumentar el retraso entre las solicitudes cuando se obtienen los documentos generados por las fuentes del compilador.

Así, los generadores de fuentes no se ejecutan antes que el compilador y se reduce la cantidad total de trabajo de la CPU. La ganancia exacta de rendimiento depende de si otras funcionalidades también activan los generadores, como la finalización de línea completa de Visual Studio.

Rendimiento

Ya hemos solucionado unos cuantos problemas de rendimiento y sentado las bases para seguir trabajando. Aquí se incluye la gestión de instantáneas de rendimiento de nuestros clientes, sesiones internas de generación de perfiles y la recopilación de datos para poder implementar comprobaciones automáticas de las degradaciones de rendimiento en el futuro.

En cuanto al modo «fuera de proceso», el trabajo está en curso. Consulte la última actualización en nuestro sistema de seguimiento de incidencias.

Herramientas de línea de comandos ReSharper

Las herramientas de InspectCode pueden generar archivos de salida compatibles con Static Analysis Results Interchange Format (SARIF).

Ahora las herramientas de línea de comandos son compatibles con Alpine Linux.

Decompilador

  • Ahora el decompilador integrado muestra los comentarios de la documentación XML para las agrupaciones de la plataforma, incluidas aquellas cuyos nombres difieren de los nombres de los archivos de documentación XML, como System.Private.CoreLib. Ahora la ruta de acceso a la documentación XML se muestra en el encabezado del archivo descompilado.
  • Hemos desactivado la redestinación de la navegación en la vista Metadata.
  • Hemos añadido presentaciones de blob decodificadas/brutas en las propiedades de los nodos blob.
  • Ahora Assembly Explorer es compatible con los tipos reenviados (los atributos [TypeForwardedTo]). La acción Locate in Metadata también funciona para los tipos reenviados, las referencias a agrupaciones y módulos, y los recursos.
  • Hemos mejorado la navegación en PDB para los tipos sin puntos de secuencia, por ejemplo, las interfaces y las enumeraciones.

Novedades de dotPeek 2022.1

Mayor compatibilidad con eventos de SQL Server dotUltimate

Ahora dotTrace es compatible con eventos de SQL Server desde el proveedor Microsoft.Data.SqlClient en Windows (.NET Core, .NET 5+), así como en macOS y Linux (.NET Core 3.0+, .NET 5+).

Novedades de dotTrace 2022.1

Adjuntar a las aplicaciones usando arrastrar y soltar dotUltimate

Ahora puede adjuntar el generador de perfiles a una aplicación que esté en ejecución arrastrando el icono especial a la ventana de la aplicación.

Novedades de dotMemory 2022.1

Exclusión de código del análisis de cobertura mediante comentarios dotUltimate

Ahora puede utilizar comentarios para excluir determinadas líneas o bloques de código del análisis de cobertura. Hay varias opciones disponibles para ello:

// dotcover disable
var i = 1;
var j = 10;
// dotcover enable

/* dotcover disable */ var i = 1; /* dotcover enable */

var i = 1; // dotCover disable this line

// dotcover disable next line
var j = 100;

Para que estas opciones funcionen, debe hacer referencia al paquete JetBrains.dotCover.MSBuild NuGet. Se trata de una dependencia solo de desarrollo que no se incluirá como dependencia de tiempo de ejecución en su proyecto.

Novedades de dotCover 2022.1

Otras actualizaciones

  • Hemos mejorado la refactorización de Move type to file, que también incluye una acción contextual y un arreglo rápido. Ahora las directivas del preprocesador se mueven junto con el tipo en casos comunes.
  • Hemos arreglado el problema del «cambio masivo del sistema de archivos». Resultó ser un desbordamiento del buffer de eventos que hacía que ReSharper revisara todos los archivos de la solución sin ninguna justificación real, lo cual provocaba un alto uso de la CPU y, en algunos casos graves, que la interfaz de usuario se congelase.
  • Hemos solucionado el problema que alteraba la funcionalidad de ReSharper en archivos .sqlproj en Visual Studio localizados.
  • Hemos añadido la vista de árbol Metadata en ReSharper (solo para Visual Studio 2022), que le permite navegar por todos los elementos dentro de los metadatos de agrupación, y ofrece búsqueda y navegación a las fuentes, entre otras cosas. Para una lista completa de las características, consulte la descripción en la documentación de dotPeek; el descompilador fue el primer producto en tenerlo.
  • Hemos abordado varios problemas de larga duración con «ReSharper muestra código rojo al cambiar de rama Git». Hemos identificado varios escenarios particulares en los que esto ocurre y los hemos corregido.
Descargar

Prueba gratuita de 30 días disponible