Novedades de ReSharper 2024.1

En ReSharper 2024.1, hemos mejorado aún más la compatibilidad con C# para incluir más sugerencias para convertir código a expresiones de colección y advertencias al modificar una colección mientras se itera dentro de bucles foreach. Ahora, la compatibilidad con Razor resuelve referencias para las directivas @addTagHelper y @removeTagHelper, y se han mejorado considerablemente la experiencia y la interfaz de usuario para editar reglas de nomenclatura personalizadas.

Descargar

Prueba gratuita de 30 días disponible

Compatibilidad con C#

Más conversiones a expresiones de colección

Más conversiones a expresiones de colección

Ahora, obtendrá sugerencias para convertir más construcciones de código en su código fuente a expresiones de colección de C# 12, como un vector vacío o la declaración e inicialización ImmutableArray.

Análisis Collection was modified

Análisis Collection was modified

Hemos añadido la inspección Possible 'System.InvalidOperationException: Collection was modified', que le avisará cuando una colección se modifique mientras se itera dentro de bucles foreach, ya que esta modificación podría provocar una excepción en tiempo de ejecución. Este análisis tiene en cuenta los casos en los que se sale del bucle tras modificar una colección, en cuyo caso no se activará la advertencia.

La inspección viene con el correspondiente arreglo rápido para que pueda resolver este problema al instante.

Actualización de Generate | Formatting Members

Actualización de Generate | Formatting Members

Generate | Formatting Members le permite generar código reutilizable para anular el método ToString() y devolver una cadena significativa para sus tipos. A partir de la versión 2024.1, esta funcionalidad es compatible con más tipos, como ISpanFormattable, IUtf8SpanFormattable e IFormattable.

Mejora de la compatibilidad para recursos desechables en métodos asincrónicos

Mejora de la compatibilidad para recursos desechables en métodos asincrónicos

  • Mejoras en la anotación [MustDisposeResource]: ahora, el análisis del código de C# garantiza que los recursos devueltos por métodos asincrónicos, incluidos los integrados en Task<IDisposable> y ValueTask<IDisposable>, se eliminen correctamente, lo que ayuda a evitar la eliminación involuntaria de la propia tarea.
  • Valores de retorno de tipo tarea: el análisis correcto de los valores de retorno de tipo tarea en la versión 2024.1 garantiza que se compruebe el recurso esperado para su eliminación y también incluye los recursos recuperados mediante .ConfigureAwait(...), .AsTask() o .Result.
Actualizaciones de la refactorización Change Signature

Actualizaciones de la refactorización Change Signature

Estas son algunas de las mejoras que hemos introducido en la refactorización de Change Signature:

  • Ahora, la refactorización es compatible con métodos Deconstruct. Puede añadir, eliminar, reorganizar y cambiar el nombre de los parámetros, y estos cambios se reflejarán tanto en la declaración del método como en los usos de este.
  • Ahora, la finalización de código está disponible para los parámetros de tipo. Esto significa que, por ejemplo, cuando necesite especificar un tipo para una List<>, puede utilizar la finalización de código para seleccionar fácilmente el tipo deseado, como int.
  • Los espacios de nombres de tipo se acortan de forma automática al añadir o actualizar parámetros. Esto ayuda a mantener el código limpio y simplificado tras aplicar la refactorización. Por ejemplo, si especifica el tipo System.Collections.Generic.List<System.Int16> en el cuadro de diálogo Change Signature, se acortará de forma automática a List<short> en el código resultante.
  • Ahora, la refactorización es compatible con más características de las últimas versiones de C#, como los modificadores in y ref readonly y los tipos record.
Actualizaciones de la refactorización Make Static

Actualizaciones de la refactorización Make Static

En esta versión, la refactorización Make Static es compatible con los parámetros del constructor primario. Aparecen en la lista Introduce parameters y tienen un icono independiente para distinguirlos fácilmente. Esta refactorización también está disponible para las funciones locales.

Compatibilidad con la biblioteca protobuf-net

Ahora, el análisis del código es compatible con el atributo ProtoContract y la enumeración ImplicitFields de la biblioteca protobuf-net. Ambos pueden utilizarse para marcar miembros que se utilizan de forma implícita en la serialización. Como resultado de ello, dichos miembros ya no se marcan con advertencias unused members.

Compatibilidad con Razor

Resolución de referencias para las directivas @addTagHelper y @removeTagHelper

Resolución de referencias para las directivas @addTagHelper y @removeTagHelper

Ahora, ReSharper resuelve las referencias para los nombres de agrupación especificados en las directivas @addTagHelper y @removeTagHelper de las vistas de Razor. Ahora, como resultado de ello, puede aprovechar la finalización de código, la capacidad de encontrar usos y la facilidad de navegación por el código.

Ahora, ReSharper entiende los nombres de agrupaciones no resueltos como errores y los resalta en rojo para que los tenga en cuenta.

Compatibilidad con C++

Compatibilidad con C++

Entre las mejoras notables en la compatibilidad con C++ destacan las siguientes:

  • La nueva implementación de módulos C++20 mejora el rendimiento y es compatible con particiones de módulos internos.
  • Change Signature ofrece nuevas funcionalidades, entre las que se incluye la capacidad de cambiar un tipo de parámetro entre un puntero, una referencia o un tipo de valor.
  • Ahora, Call Tracking admite cadenas de llamadas salientes.
  • Ahora, puede personalizar fácilmente el estilo de los comentarios de documentación generados. Además, las inspecciones gramaticales están disponibles dentro de los comentarios de documentación.
  • Ya está disponible la compatibilidad con el marco de trabajo de la interfaz de usuario Slate de Unreal Engine.

Más información sobre las actualizaciones de C++: Novedades de ReSharper C++ 2024.1.

Rendimiento

Modo de alta utilización de recursos en el análisis de la solución completa

Modo de alta utilización de recursos en el análisis de la solución completa

Estamos trabajando en mejorar el modo de alta utilización de recursos para el análisis de la solución completa, que reducirá de forma significativa la duración del análisis al utilizar el paralelismo de la CPU de forma más eficiente. Hemos mejorado el perfil de memoria asignada del análisis del código para minimizar el tiempo empleado en la recogida de elementos no utilizados. Aunque seguimos trabajando en las mejoras, le agradeceríamos que activara este modo y nos comentara su experiencia.

Refactorización Rename más rápida

Ahora, renombrar elementos en su código es más rápido y eficaz. Este cambio también afecta a otros componentes básicos de ReSharper, lo que se traduce en mejoras de rendimiento en varias funcionalidades, incluida Find Usages.

Refactorización Move to Another Type más rápida

Hemos mejorado de forma significativa el rendimiento de la refactorización Move to Another Type para miembros estáticos para trabajar con clases de gran tamaño.

Formateo de código

Mejora de la experiencia y la interfaz de usuario para las reglas de nomenclatura personalizadas

Los cambios deberían facilitar el trabajo con reglas de nomenclatura avanzadas y la observación de las reglas importadas de los archivos EditorConfig.

Opción Remove whitespace on blank lines

Opción Remove whitespace on blank lines

Esta nueva opción de formateo permite dejar o eliminar los espacios en blanco en las líneas en blanco.

Decompilador

Una nueva ventana de herramientas Assembly Diff específica

Una nueva ventana de herramientas Assembly Diff específica

La actualización 2024.1 trae la nueva ventana de herramientas Assembly Diff a ReSharper. Hay un par de cambios asociados:

  • La posibilidad de comparar agrupaciones, paquetes NuGet, carpetas y archivos .zip se ha trasladado del Assembly Explorer a la ventana de herramientas Assembly Diff.
  • El selector Diff mode y los botones Compare y Diff Options se han reubicado en la barra Actions de la ventana de herramientas Assembly Diff.
Compatibilidad con el formato de empaquetado WebCIL

Compatibilidad con el formato de empaquetado WebCIL

El decompilador de ReSharper es compatible con el formato de empaquetado WebCIL para WebAssemblies. La compatibilidad incluye lo siguiente:

  • Decompilación para WebCIL.
  • La posibilidad de ver archivos .wasm en Assembly Explorer.
  • Subárboles de metadatos para nodos WASM en Assembly Explorer, incluidos los encabezados WASM y WebCIL.

Compatibilidad con MAUI en dotTrace, dotMemory y dotCover dotUltimate

Ya está disponible la compatibilidad con aplicaciones de escritorio MAUI también en dotTrace, dotMemory y dotCover dentro de Visual Studio.

Marcos de trabajo compatibles:

  • MAUI Windows (dentro de dotTrace, dotMemory, dotCover): net8.0-windows, net7.0-windows
  • MAUI Mac (solo dentro de dotTrace): net8.0-maccatalyst, net7.0-maccatalyst
  • Aplicaciones macOS (dentro de dotTrace y dotMemory): net8.0-macos, net7.0-macos

Haga clic aquí para obtener más información sobre la disponibilidad y las restricciones del modo de generación de perfiles.

La compatibilidad con proyectos MAUI también está disponible dentro de las versiones independientes de estas herramientas .NET.

Compatibilidad con Frozen Object Heap dotUltimate

Ahora, la herramienta independiente de generación de perfiles dotMemory es compatible con Frozen Object Heap, una funcionalidad incluida por primera vez con el SDK .NET 6 como parte de las mejoras de rendimiento para la recolección de elementos no utilizados.

FOH asigna un área de memoria específica para objetos inmutables. Estos objetos no se modifican después de asignarse y no están sujetos a la recolección de elementos no utilizados. La compatibilidad con esta tecnología permite a dotMemory realizar un análisis más detallado de la memoria utilizada por los objetos inmutables en FOH, lo que mejora la optimización del uso de la memoria.

Herramientas de línea de comando

SARIF se convierte en el formato predeterminado

SARIF se convierte en el formato predeterminado

A partir de la versión 2024.1, el formato de salida predeterminado de InspectCode es SARIF, y el formato XML pronto quedará obsoleto. En la versión actual, los resultados siguen estando disponibles en formato XML si se utiliza el parámetro -f="xml".

Otros

Refactorización fuera del proceso de Visual Studio

Hemos terminado la refactorización interna de los controles de texto. Además de ser parte de nuestro trabajo para hacer que ReSharper funcione fuera del proceso de Visual Studio, esta refactorización se ha diseñado para mejorar la tipificación y aspectos relacionados con el rendimiento del editor, tanto para ReSharper como para Rider. Puede encontrar más información sobre nuestro progreso para sacar ReSharper del proceso de Visual Studio aquí.

Administrador de extensiones

El complemento JetBrains Marketplace cuenta con un nuevo mecanismo de filtrado basado en comprobaciones de compatibilidad. Esto significa que los complementos incompatibles ya no se muestran en el administrador de extensiones de ReSharper.

Descargar

Prueba gratuita de 30 días disponible