ReSharper 2022.2 es compatible con las funcionalidades de C# 11, como los miembros obligatorios, los operadores checked definidos por el usuario, las cadenas sin procesar y los patrones list. El análisis de la solución completa ha optimizado mucho el consumo de memoria. Además, esta versión también incluye Virtual Formatter, que le permite ver el código en su formato preferido sin reformatear el código fuente en el disco, y una herramienta de limpieza de disco para eliminar los archivos temporales generados por ReSharper mientras trabaja en su código.
Prueba gratuita de 30 días disponible
Esta versión es compatible con varias funcionalidades más de la versión preliminar de C# 11.
En C# 11, ahora los tipos class
, struct
y record
pueden declarar una lista de miembros requeridos. Esta es la lista de todas las propiedades y campos que se consideran necesarios y deben inicializarse a la vez que la instancia de un tipo. Los tipos heredan estas listas de sus tipos base de forma automática, por lo que el código duplicado y repetitivo se elimina sin problemas.
Además de conocer la palabra clave required
para los miembros dentro de un tipo class
, struct
o record
, ReSharper también es compatible con la palabra clave required
:
required
a Modifiers order en la página ReSharper | Options | Code Editing | C# | Syntax Style
. Hemos añadido Add initializer for required members, una nueva solución rápida para los casos en los que se ha creado un objeto de tipo, pero no se han inicializado los miembros todavía. Esta genera de forma automática todos los miembros «required» que faltan para el objeto; solo tiene que rellenar los valores de los miembros con los datos correspondientes.
Los operadores checked
definidos por el usuario ayudan a los desarrolladores a crear operadores definidos por el usuario que operan en tipos donde el desbordamiento aritmético es un concepto válido. ReSharper muestra todos los errores y advertencias del compilador. Para ser totalmente compatible con los operadores checked
definidos por el usuario, ReSharper tiene un par de inspecciones más y una acción contextual.
Hemos actualizado la inspección Unchecked/checked context is redundant para tener en cuenta los operadores checked
cuando se utilizan en este contexto.
Si tiene un conjunto de operadores definidos por el usuario y algunos de ellos ya tienen una versión checked
, ReSharper le ayudará a propagar los operadores checked
a todo el conjunto. Una nueva inspección llamada The operator does not have a matching checked
operator while other operators do le informará de los operadores que no tienen todavía un operador checked y le propondrá una solución rápida para generar las versiones checked
de forma automática.
Si todavía no ha utilizado operadores checked
en su código base, pero quiere empezar a utilizarlos, la nueva acción contextual Create matching checked operator le resultará muy útil. Está disponible en todos los operadores definidos por el usuario y genera una versión checked de un operador directamente desde el menú que se abre con Alt+Intro.
C# 11 mejora la capacidad de incrustar otros lenguajes o formatos de texto en el código C# gracias al concepto de cadenas «sin formato».
ReSharper es compatible a nivel básico con cadenas «sin formato», entre las que se incluyen errores de compilación, y análisis correcto y resaltado de colores para la sintaxis """
, pares de comillas dobles y marcadores de posición dentro de cadenas interpoladas (sintaxis {{...}}
).
C# 11 sigue ampliando los patrones de lista disponibles en el lenguaje. En esta ocasión, C# permite hacer coincidir estructuras tipo lista, como vectores, cadenas y colecciones tipo List<T>
.
ReSharper 2022.2 es totalmente compatible con los patrones de lista, con comprobación de errores, finalización de código y análisis del código. Todavía estamos trabajando para añadir inspecciones de código para sugerir el uso de los patrones de lista en el código existente y acciones adicionales de refactorización.
>>>
) e incluye compatibilidad con la sobrecarga del operador definido por el usuario >>>
. Span<char>
como reemplazo de las instancias de cadena, ya que en C# 11 es posible comparar directamente las constantes de cadena con los valores de tipo Span<char>
y ReadOnlySpan<char>
. En esta versión, hemos optimizado en gran medida el uso de memoria de ReSharper con el modo Análisis de la solución completa activado, tanto en términos de tráfico de memoria (número de asignaciones de memoria) como en términos de consumo de memoria.
El motor Análisis de la solución completa utiliza la memoria para almacenar la lista de problemas en la solución y para almacenar la información de uso de tipos/miembros para realizar informes de uso de toda la solución (inspecciones de código tales como «el miembro público nunca se utiliza»). Los datos de uso están «activos», lo que significa que deben actualizarse constantemente al editar el código y no pueden descargarse en el disco. Esto puede consumir una cantidad considerable de memoria si la solución contiene muchos tipos y miembros de tipo. Hemos revisado los datos almacenados en la memoria y hemos encontrado patrones que nos han permitido desduplicar/normalizar los datos. También hemos utilizado tipos de colección especializados para reducir aún más el espacio de trabajo. Estas optimizaciones han mejorado el consumo de memoria de 5 a 10 veces y han acelerado la carga del Análisis de la solución completa.
.NET 6 ha introducido nuevas plantillas de proyecto con el uso de declaraciones de C# 9 de nivel superior. Las declaraciones de nivel superior simplifican la declaración de una clase Program
o del método public static void Main(string[] args)
, aunque a veces es necesario o preferible utilizar la declaración explícita class Program
. ReSharper 2022.2 incluye la nueva acción contextual To explicit 'Program' class para ejecutar una transformación al estilo antiguo.
Además, si ya tiene una clase de inicio Program
y desea migrar a declaraciones de nivel superior, podrá hacerlo con la nueva acción contextual Convert to top-level code.
INotifyPropertyChanged
En esta versión, hemos modificado la compatibilidad con INotifyPropertyChanged
. Ya no depende de anotaciones externas para detectar las API comunes INotifyPropertyChanged
, lo que nos ha permitido ser compatibles con más marcos MVVM y clases base INotifyPropertyChanged
de forma automática. Ahora utilizamos un método SetField
cuya sintaxis es más concisa para las notificaciones INotifyPropertyChanged
.
Ahora también puede añadir notificaciones property change para todas las propiedades del tipo o del archivo.
Para aumentar la visibilidad de las refactorizaciones, hemos revisado las refactorizaciones más utilizadas y hemos introducido acciones contextuales relacionadas en el menú que se abre con Alt+Intro que dependen del contexto actual.
Hemos añadido la acción contextual Extract method al acceder al menú que se abre con Alt+Intro en un trozo de código seleccionado.
Ahora, las refactorizaciones Change Signature, Transform Parameters, Convert to extension method y Convert Property To Method están disponibles como acciones contextuales para las firmas de los miembros.
nameof
ReSharper 2022.2 reconoce los registros de DependencyProperty
en los proyectos WPF y sugiere el uso de un operador nameof
para capturar el nombre de la propiedad CLR correspondiente. Las plantillas activas integradas también se han actualizado para emitir nameof
en lugar de literales de cadena.
ReSharper no suele reconocer en el código el significado especial de un literal de cadena concreto que se utiliza para especificar el nombre de alguna entidad de código, como un miembro o un nombre de tipo. Para estos casos, hemos introducido la nueva acción contextual Capture element name para los literales de cadena con identificadores que pueden hacer referencia a una entidad de código en el contexto que contiene el literal de cadena.
Las correcciones rápidas que provienen de los patrones Structural Search And Replace (SSR) pueden aplicarse en el ámbito de un archivo, una carpeta, un proyecto o una solución completa. Afecta a los patrones personalizados del usuario creados en la página ReSharper | Options | Code Inspection | Custom Patterns
, a las inspecciones de código integradas en ReSharper y a las correspondientes correcciones basadas en el SSR.
Ahora, ReSharper 2022.2 detecta algunos patrones de asignación en el código y le sugiere un código C# más idiomático con concordancia de patrones.
ReSharper 2022.2 puede reemplazar algunos patrones is
en las expresiones ?:
por la versión más concisa de as
en la expresión ??
, con lo que se elimina de forma efectiva una variable temporal.
Hemos incluido Virtual Formatter, una manera de ver el código con el formato deseado sin tener que reformatear el código fuente en el disco. Por ejemplo, ahora puede alinear de forma virtual los parámetros en columnas o aumentar las sangrías. El objetivo de esta funcionalidad es mejorar la legibilidad y el mantenimiento del código, y hacerlo más accesible para los desarrolladores con discapacidades visuales y neurodivergentes. Para activar Virtual Formatter con ajustes predefinidos, vaya a ReSharper | Options | Environment | Inlay Hints | General
. Para adaptar aún más el formato a las especificaciones exactas, marque la casilla Use dedicated Virtual Formatter style settings y haga clic en C#.
Ahora puede eliminar los archivos temporales generados por ReSharper mientras trabaja en su código. Hemos añadido una nueva página en la sección Options, donde puede:
Como muchos de ustedes habrán notado, la compatibilidad con JavaScript y TypeScript en ReSharper está obsoleta y es lenta. En la implementación actual, es difícil seguir los cambios del lenguaje TS y que las nuevas versiones sean compatibles rápidamente, por lo que estamos buscando la mejor forma de hacerlo. Después de discutirlo internamente largo y tendido, hemos decidido dejar en espera la compatibilidad actual con JS y TS. Por ello, hemos deshabilitado la compatibilidad con TS/JS de forma predeterminada en esta versión. Si quere seguir utilizándola, puede volver a habilitarla aquí: ReSharper | Options | Environment | Products & Features | casilla de verificación «JavaScript and TypeScript»
.
ReSharper C++ introduce consejos insertados específicos de Blueprint y le permite ver el panorama general tras su código:
UFunction
tiene implementaciones en Blueprints y busque todos esos casos. UProperty
, incluyendo si ha sido anulada y qué valor está establecido en el archivo Blueprint. También hemos agregado inspecciones para avisarle si hay incoherencias entre los especificadores de función específicos de Blueprint utilizados en el código y los propios Blueprints.
ReSharper puede detectar si el paquete StyleCop.Analyzers está referenciado por un proyecto y leer su configuración desde los archivos stylecop.json
y .ruleset
. Los encabezados de los archivos y la configuración de la sangría se obtienen de stylecop.json
, mientras que las reglas de StyleCop se aplican de acuerdo con la configuración del archivo .ruleset
activo.
ngen
o R2R
junto al nombre de cada agrupación. Prueba gratuita de 30 días disponible