Novedades en ReSharper 2021.2

ReSharper 2021.2 ofrece nuevas inspecciones con arreglos rápidos para el análisis de código C# y la compatibilidad con tipos de referencia que aceptan valores null, y muchas de las funciones disponibles para los archivos de código escritos manualmente están ahora disponibles para los archivos generados por fuente. ReSharper 2021.2 también ofrece compatibilidad con aplicaciones de un solo archivo en Assembly Explorer, una gestión de incidencias mejorada en el Análisis Dinámico de Programas y reglas de nomenclatura avanzadas para registros, métodos de extensión y variables de captura.

Descargar

Prueba gratuita de 30 días disponible

Análisis de código C#

¿Utiliza variables temporales para intercambiar los valores de las variables? ¡Ahora hay una forma más elegante de hacerlo! ReSharper 2021.2 le ayudará a modernizar su código con el nuevo arreglo rápido Swap via deconstruction

Reduzca el número de asignaciones en su código y aumente el rendimiento. Reemplace la creación de vectores vacíos con Array.Empty<T>.

Si está asignando un nuevo Type[0], ReSharper le sugerirá que utilice Type.EmptyTypes para hacer más eficiente el uso de la memoria.

Si no se requieren EventArgs específicos, ReSharper le hará saber que puede reemplazar new EventArgs() con EventArgs.Empty.

Otras mejoras:

  • Utilice la propiedad generated_code de .editorconfig para marcar archivos o carpetas como código generado y excluirlos del procesamiento.
  • El análisis del código es ahora más rápido para los miembros con muchas funciones locales y cierres.
  • Disfrute de las mejoras de rendimiento en Find similar issues y en el análisis del código para declaraciones switch grandes y complejas y expresiones switch.

Tipos de referencias que aceptan valores null (NRT)

¿Tiene muchas supresiones de advertencia de nulables en su base de código después de habilitar los tipos de referencia que aceptan valores null?

ReSharper indica las supresiones (!) que ya no son necesarias y que pueden ser eliminadas con seguridad.

Una nueva acción de contexto le permite buscar todas las supresiones de advertencia nulables en el ámbito. Desde la ventana de herramientas Find Results, puede volver a evaluar si las supresiones son necesarias o no.

Hemos introducido una nueva refactorización para cambiar la nulabilidad. Está disponible a través de un arreglo rápido, a través de la acción Refactor This, o a través de una refactorización in situ al añadir o eliminar la anotación nulable (?).

ReSharper actualizará las anotaciones de nulabilidad y sugerirá la propagación de los cambios a través de su base de código.

Varias inspecciones nuevas con los correspondientes arreglos rápidos están disponibles para cuando se utilizan atributos JetBrains.Anotations y están habilitados los tipos de referencia que aceptan valores null.

Actualice los atributos de JetBrains.Annotations a la sintaxis NRT y a los atributos compatibles con el compilador Por ejemplo, ReSharper puede actualizar [CanBeNull] string a string?.

ReSharper le informará sobre los atributos redundantes de JetBrains.Annotations, como [NotNull] string o [ItemCanBeNull] List<string?>. Y, por supuesto, ofrecerá un arreglo rápido para actualizar su código.

Cuando la sintaxis de las anotaciones de tipo no está permitida, una nueva inspección con un arreglo rápido añade anotaciones compatibles con el compilador, por ejemplo:

  • [JetBrains.Annotations.NotNull] T param a [DisallowNull] T param (where T: class?)
  • [JetBrains.Annotations.CanBeNull] T a [System.Diagnostics.MaybeNull] T (en C# 8, donde la sintaxis T? no está permitida)

ReSharper añade nuevas inspecciones y arreglos rápidos para ayudarle a utilizar anotaciones compatibles con el compilador como [DisallowNull], [AllowNull], [MaybeNull] y [NotNull].

Una nueva inspección detecta las anotaciones redundantes del compilador, como cuando se aplica [AllowNull] a un tipo que acepte valores null, y un arreglo rápido las elimina.

Cuando se puede utilizar la sintaxis de tipos de referencia que aceptan valores null, ReSharper sugerirá hacerlo.

Y todavía hay más mejoras que también son dignas de mención:

  • ReSharper comprueba si las variables deben ser nulables y produce tipos más estrictos cuando es posible.
  • Se han actualizado muchas acciones contextuales, arreglos rápidos y plantillas de Postfix para que funcionen mejor con las supresiones de advertencia nulables. Estas, o bien conservan las supresiones de advertencia nulables, o bien las producen para el código introducido si el código original suprimía la advertencia.
  • Hemos mejorado la compatibilidad con el uso de genéricos con tipos de referencia que aceptan valores null.

Compatibilidad con generadores de código fuente

Los generadores de código fuente pueden utilizarse para reducir el trabajo de desarrollo tedioso y repetitivo, y para generar código en tiempo de compilación. En ReSharper 2021.2, muchas de las funciones disponibles para los archivos de código escrito manualmente están disponibles también para los archivos generados por fuente. Hemos mejorado la compatibilidad con el editor, hemos mejorado el depurador y hemos añadido compatibilidad con el análisis de errores entre soluciones (SWEA) y las refactorizaciones.

Para el código generado, las advertencias y los errores se muestran en el editor y en la barra de marcadores.

El análisis de errores entre soluciones (SWEA) incluye ahora los archivos generados por los generadores de código fuente. Si hay un error en un archivo generado en su proyecto, podrá detectarlo inmediatamente y navegar hasta él.

Puede modificar este comportamiento utilizando la nueva opción de incluir los archivos generados por fuente, que está habilitada de forma predeterminada y se encuentra en ReSharper | Options | Code Inspection | Settings | Enable solution-wide analysis.

Las refactorizaciones ahora se pueden desencadenar desde archivos generados por fuente. Utilice la refactorización Rename para renombrar una propiedad generada. ¡ReSharper también cambiará el nombre del símbolo relacionado en el código escrito manualmente!

Del mismo modo, Change Signature le permite verificar si el código que se generará después del cambio puede seguir siendo compilado.

Ahora puede utilizar Find Usages, buscar herederos, navegar desde el código generado hasta el código escrito manualmente con Ctrl+Click y Navegate To, y mucho más.

El resaltado semántico está habilitado para que los miembros de la clase como los eventos, los campos y las propiedades se resalten correctamente. Todos los consejos insertados se muestran cuando corresponde.

Lostips de datos propios de ReSharper se muestran durante la depuración. Esto proporciona una asistencia de depuración más potente con capacidad de búsqueda, resaltado de propiedades, y más.

ReSharper admite ahora el código generado por generadores de código fuente en VB.NET.

Compatibilidad con HttpClient URI

En la versión anterior, implementamos la compatibilidad con las plantillas de ruta ASP.NET. En la versión v2021.2, hemos continuado en esta dirección y hemos incorporado una mejor compatibilidad con las cadenas URI de HttpClient:

  • Cuando se utiliza HttpClient, la finalización del código sugerirá todos los URI que puedan resolverse a acciones en controladores anotados con atributos [Route], [Http{Method}] o [AcceptVerbs].
  • Puede navegar fácilmente entre los atributos de la ruta dentro de los controladores y estos URI usando Go to Declaration y Find Usages
  • Renombrar una ruta de atributos en un controlador afecta a sus usos en URI, e incluso se puede renombrar una ruta directamente desde la cadena URI.

Navegación

Se han añadido funciones útiles para la navegación:

  • Mientras se depura, ReSharper entiende aún más sobre su código. Por lo tanto, si se llama a Go To Declaration (o Ctrl+Click) en las referencias de la interfaz, se accede directamente a sus implementaciones.
  • La lista Go To Base/Inheritors ahora también muestra las anulaciones ocultas.

Estilo y formateo de código

A veces puede resultar útil especificar reglas de nomenclatura avanzadas para los registros, los métodos de extensión y las variables de captura. A partir de esta versión, es posible configurar estas reglas.

Si prefiere utilizar un estilo de corchete Pico (sangría), estamos aquí para usted. El estilo Pico ha sido añadido como una opción a la pestaña Brace Layout en la página ReSharper | Options | Code Editing | C# | Formatting Style | Braces Layout.

Hemos cambiado las preferencias de formateo predeterminadas en un par de casos para alinearlas con los valores predeterminados de Visual Studio.

Refactorización de Inline Function C++

La nueva refactorización de la función en línea o Inline Function puede sustituir rápidamente una llamada a una función por el cuerpo de la misma. ReSharper C++ realizará las transformaciones necesarias, manejará todos los conflictos de nombres y reformateará el código resultante.

Consejos sobre conversión de tipos C++

ReSharper C++ 2021.2 introduce consejos insertados para las conversiones de tipo implícitas, que podrían provocar pérdidas de datos involuntarias o problemas de rendimiento. ReSharper C++ ahora indica dónde ocurren las conversiones implícitas en su código.

Novedades de ReSharper C++ 2021.2

Dynamic Program Analysis (DPA)

Gestión de problemas mejorada

DPA almacena ahora dos valores para cada incidencia: el valor máximo y el valor actual. Así se evitan los falsos negativos, ya que antes era posible que las incidencias quedaran por debajo del umbral y desaparecieran de la lista de incidencias, no porque se hubieran solucionado, sino porque sus condiciones de lanzamiento habían cambiado (el programa se ejecutaba durante menos tiempo, la funcionalidad requerida no se ejecutaba, etc.)

Otras actualizaciones

  • DPA se desactiva automáticamente cuando se inicia la generación de perfiles de rendimiento.
  • La ventana Dynamic Program Analysis permite ahora seleccionar varias incidencias.
  • La supresión de incidencias con el atributo SuppressMessage ahora funciona para los métodos asíncronos.

Explorador de ensambles

The embedded decompiler can now decompile single-file apps. Es compatible con los formatos de archivo único para los SDK .NET Core 3.1, .NET 5 y el próximo .NET 6. Utilizando Assembly Explorer puede navegar por las agrupaciones incluidas dentro de una aplicación de un solo archivo, tal como acostumbra a hacerlo.

Mejora del rendimiento de la cobertura dotUltimate

Mejora del rendimiento de la cobertura
  • Ahora, dotCover puede ejecutar el análisis de cobertura de las clases de prueba en paralelo dentro de una agrupación. En ciertos escenarios, esto puede dar lugar a un análisis de cobertura más rápido.
  • Ahora se pueden precargar los ejecutores de pruebas de unidades para los proyectos .NET Core y .NET (esto permite que el análisis de cobertura comience más rápidamente, ya que los ejecutores de pruebas de unidades ya están cargados en la memoria).

Novedades de dotCover 2021.2

Análisis de asignación de memoria dotUltimate

En esta versión, hemos seguido mejorando la forma de analizar la asignación de memoria. Se han añadido dos nuevas pestañas a la vista de asignación de memoria:

  • La pestaña Methods le permite analizar una lista simple de métodos que tienen memoria asignada.
  • La pestaña Call Tree le permite analizar el árbol de llamadas de asignación. Cada nodo del árbol muestra no solo el método llamado sino también los objetos asignados por la llamada.

Novedades de dotMemory 2021.2

Generación de perfiles nativa dotUltimate

Ahora es posible generar perfiles para aplicaciones nativas en Windows. Al iniciar una sesión de generación de perfiles, tiene la opción de descargar archivos de símbolos de fuentes nativas desde servidores remotos. La generación de perfiles nativa solo está disponible para el tipo de generación Timeline.

Otros

Razor

Los desarrolladores de Razor que trabajen en vistas grandes pueden desactivar la asistencia y las sugerencias automáticas, que consumen mucha CPU, si su editor comienza a sufrir retrasos. Puede encontrar los ajustes aquí: ReSharper | Options | Environment | Editor | Behavior | Razor | Allow CPU-intensive typing assist.

Herramientas de línea de comandos ReSharper

Hemos introducido un cambio innovador en la herramienta InspectCode. A partir de 2021.2, InspectCode restaura automáticamente los paquetes NuGet y compila una solución antes de iniciar su análisis. Si este comportamiento no es deseado, utilice la opción --no-build para desactivar la restauración de paquetes NuGet y la compilación de la solución.

Descargar

Prueba gratuita de 30 días disponible