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.
Prueba gratuita de 30 días disponible
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:
Contains(item)
antes de añadir el elemento a HashSet
u otras colecciones que implementen la interfaz ISet
. ContainsKey(key)
antes de añadir el elemento a Dictionary
u otras colecciones que implementen la interfaz IDictionary
. TryAdd(key, value)
para colecciones Dictionary
o colecciones heredadas de Dictionary
cuando sea posible. TryGetValue(key, out value)
para colecciones IDictionary
cuando sea posible. 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
.
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.
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.
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.
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».
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.
Prueba gratuita de 30 días disponible