Novedades de ReSharper 2023.1

ReSharper 2023.1 mejora la compatibilidad con C# e incluye un conjunto de inspecciones para optimizar y acelerar el trabajo con diferentes tipos de colecciones, así como formas más regulables de introducir comprobaciones null en el código. Este build también incluye actualizaciones para módulos C++20, el primer lote de compatibilidad con funcionalidades de C++23 y vistas previas de sustitución de macros y rastreo de llamadas para C++. También incluye mejoras en las pruebas de unidad y en la limpieza de código.

Descargar

Prueba gratuita de 30 días disponible

Compatibilidad con C#

Reducir el número de búsquedas en las colecciones

Hemos introducido un conjunto de inspecciones con sus correspondientes arreglos rápidos para optimizar y acelerar el trabajo con distintos tipos de colecciones reduciendo el número de búsquedas en estas:

  • Para eliminar una comprobación Contains(item) antes de añadir el elemento a HashSet u otras colecciones que implementen la interfaz ISet.
  • Para eliminar una comprobación ContainsKey(key) antes de añadir el elemento a Dictionary u otras colecciones que implementen la interfaz IDictionary.
  • Para utilizar TryAdd(key, value) para colecciones Dictionary o colecciones heredadas de Dictionary cuando sea posible.
  • Para utilizar TryGetValue(key, out value) para colecciones IDictionary cuando sea posible.

Syntax style para el patrón de comprobación null

Hemos incluido el ajuste Syntax style para que pueda aplicar un estilo coherente de comprobación not null dentro de los patrones. Consta de dos opciones: sintaxis de patrones recursivos vacíos { } y patrones negados not null, con esta última como opción predeterminada. Puede ajustar el comportamiento en cualquier momento desde la página ReSharper | Options | Code Editing | C# | Syntax Style.

Utilizar el patrón not null tiene una desventaja, ya que no permite introducir nombres de variables para el valor comprobado como sí puede hacer el patrón recursivo { LastName: { } lastName }. Hemos añadido la acción contextual Add pattern variable sobre el patrón not null para buscar expresiones que accedan al mismo valor (ya que estamos introduciendo un nombre de variable) y reemplazarlas por el nuevo nombre introducido para consolidar todos los accesos en el mismo valor.

Estilo de comprobaciones null ArgumentNullException.ThrowIfNull

El SDK de .NET 6.0 introdujo una nueva API para la comprobación null: ArgumentNullException.ThrowIfNull. Desde entonces, nuestro motor de análisis del código reconoce este enfoque de comprobación, pero no había ninguna opción para utilizar esta API como estilo predeterminado de las comprobaciones null producidas por ReSharper. En la versión 2023.1, hemos añadido un patrón ArgumentNullException.ThrowIfNull a ReSharper | Options | Code Editing | C# | Null checking.

Extracción de patrones de propiedades comunes

Si utiliza mucho la concordancia de patrones de propiedades, pruebe nuestra nueva inspección con una corrección rápida para extraer elementos comunes de varios patrones de propiedades cuando se juntan en el flujo de código. El código generado por la corrección rápida Extract common property pattern le ayuda a reducir la repetición de código trasladando los patrones de propiedad comunes a un patrón de nivel superior.

Eliminar regiones vacías

Los desarrolladores de C# suelen confiar en la directiva #region y en el plegado de código en el IDE para estructurar el código. La refactorización puede dejar algunas directivas #region vacías, de modo que el código puede llevar a confusión cuando se contrae. Con esta nueva inspección de código, podrá identificar las directivas #region vacías en su estado colapsado y limpiar el código con la correspondiente corrección rápida.

Remplazar span.SequenceEqual(“str”)

El análisis del código dispone de una inspección de código que sugerirá sustituir span.SequenceEqual("stringLiteral") por span is "stringLiteral", una sintaxis de C# más limpia y cómoda que llamar a una función.

Insertar una especificación de tipo de retorno para lambdas

Las expresiones lambda en C# pueden tener parámetros de tipo implícito y tipos de retorno inferidos, aunque se pueden añadir tipos explícitos para aclarar el código en escenarios complejos de resolución de sobrecargas. A partir de C# 11, también es posible añadir una especificación de tipo de retorno para las expresiones lambda. Para ello, en ReSharper 2023.1 hemos introducido la acción contextual Insert return type specification, que puede aplicarse a todos los ámbitos, entre los que se incluyen el método, la clase, el archivo, el proyecto o toda la solución.

Inspección Pattern is redundant

Los patrones or/and/not de C# son útiles para comprobaciones de valor compactas, pero pueden ser menos reconocibles que las expresiones tradicionales, como ||/&&/!. También pueden crear errores difíciles de encontrar si se omiten los paréntesis. Para que esto no suceda, hemos introducido un nuevo análisis de código en la versión 2023.1 que advierte sobre comprobaciones «muertas» en los patrones complejos.

Acción contextual Convert to list pattern

Seguimos mejorando la compatibilidad con los patrones de lista de C# 11. Con la nueva acción contextual Convert to list pattern, puede convertir las comprobaciones de longitud de colección en una sintaxis de patrón de lista, que funciona en cualquier contexto en el que se pueda realizar una comprobación de la longitud de una colección.

Compatibilidad con C++

Vista previa de la sustitución de macros

Vista previa de la sustitución de macros

Ahora, al pasar el ratón por encima de una macro, puede ver la expansión de la macro en la información sobre herramientas, con el resaltado de sintaxis completo y el formato de código adecuado. Puede seguir utilizando la acción contextual Substitute macro call para comprobar la expansión de la macro directamente en el código, pero la vista previa instantánea facilita el trabajo con macros. Además, la ventana emergente Quick Documentation (Ctrl+Mayús+F1) permite hacer clic en cualquier entidad de la vista previa de sustitución para consultar la documentación.

Rastreo de llamadas

Rastreo de llamadas

Por fin, la funcionalidad Call tracking ha llegado a ReSharper C++. Ahora, puede ver y navegar por las cadenas de llamadas en la jerarquía de llamadas entrantes. En la ventana de resultados del rastreo de llamadas, puede hacer doble clic en la entrada de la jerarquía para navegar a la llamada correspondiente en el editor o expandir cualquier nodo para comprobar sus llamadas entrantes.

Novedades de ReSharper C++ 2023.1

Cambios en la experiencia y la inferfaz de usuario

El cuadro de diálogo de actualización

ReSharper 2023.1 incluye un cuadro de diálogo de actualización renovado que contiene notas sobre los cambios realizados en la última versión disponible, para que pueda tomar una decisión más informada sobre si desea descargar u omitir la actualización.

Nuevo cuadro de diálogo de accesos directos

A partir de la versión 2023.1, al iniciar ReSharper por primera vez, aparecerá una pantalla de atajos de teclado en la que podrá elegir el esquema de accesos directos que quiere utilizar.

Limpieza de código

Reformat inactive preprocessor branches in file es un nuevo tipo de tarea que hemos incluido en ReSharper 2023.1. La tarea permite reformatear ramas inactivas del preprocesador. Solo puede aplicarse a todo el archivo a la vez y solo funciona con fuentes C#.

Esta tarea no puede reformatear código oculto tras una directiva del preprocesador #if que sea siempre falsa. Los dos ejemplos más obvios de esta limitación son las construcciones #if false ... #endif y #define A #if !A ... #endif.

Pruebas de unidad

Ahora, se tienen en cuenta los filtros de búsqueda de texto aplicados a los árboles de pruebas de unidad, dentro de las ventanas de herramientas Session y Explorer, al ejecutar pruebas con los botones «Run» de la barra de herramientas. Solo los nodos que cumplan con los criterios de búsqueda permanecerán en la lista y se ejecutarán.

Refactorización Rename

Hemos mejorado la forma en que ReSharper maneja el renombrado de archivos en un proyecto. A partir de esta versión, cada vez que renombre un archivo dentro de la solución, aparecerá un cuadro de diálogo con la opción de renombrar todos los símbolos relevantes (clases, interfaces, etc.) para que coincidan con el cambio.

dotTrace en macOS y Linux Beta dotUltimate

Ya está disponible en Linux y macOS la versión independiente de dotTrace. Ahora, puede llevar a cabo el flujo de trabajo de generación de perfiles completo en estos sistemas operativos, incluidas la recopilación y el análisis de instantáneas de rendimiento.

Migración de complementos

Siempre que las API a las que hacen referencia sigan siendo válidas y no cambien, los complementos de ReSharper migrarán de forma automática de una versión a la siguiente.

Un verificador de API integrado comprobará la compatibilidad binaria de los complementos instalados y migrará los que sean viables. Los autores de complementos también recibirán notificaciones automáticas a través de JetBrains Marketplace cuando las API utilizadas por sus complementos ya no estén presentes en el SDK.

Miscelánea

Compatibilidad con CSS desactivada de forma predeterminada

Dada la poca demanda de CSS en ReSharper, cada vez nos resultaba más difícil dar prioridad a mantenernos al día con las últimas versiones del lenguaje, de modo que hemos decidido pausar la compatibilidad con CSS hasta encontrar una mejor manera de que este lenguaje sea compatible.

A partir de ReSharper 2023.1, la compatibilidad con CSS estará deshabilitada de forma predeterminada. Si quiere seguir utilizando este lenguaje, puede volver a habilitarlo aquí: ReSharper | Options | Environment | Products & Features | casilla de verificación «CSS».

Finalización del desarrollo para Visual Studio 2010 y 2012

Actualmente, ReSharper y .NET Tools son compatibles con siete versiones principales de Visual Studio, desde la 2010 hasta la más reciente, la 2022. A partir de la versión 2023.1, reduciremos la lista, ya que eliminaremos la compatibilidad con las dos versiones más antiguas, Visual Studio 2010 y Visual Studio 2012.

Más información

Descargar

Prueba gratuita de 30 días disponible