Novedades de ReSharper 2023.2

ReSharper 2023.2 ofrece una compatibilidad mejorada con C#, con nuevas inspecciones para trabajar con funciones locales, cadenas sin procesar, y para resolver problemas comunes de Entity Framework. Esta versión también ofrece compatibilidad con la refactorización de C++ y más funciones de C++20 y C++23. Entre las funcionalidades que hacen su debut en ReSharper 2023.2 se encuentra la capacidad de crear y navegar fácilmente a través de pruebas de unidad, el modo de depurador predictivo y el nuevo AI Assistant.

Descargar

Prueba gratuita de 30 días disponible

Novedades principales

Compatibilidad mejorada con C#

Compatibilidad mejorada con C#

ReSharper 2023.2 incorpora nuevas inspecciones de código y arreglos rápidos para trabajar con literales de cadena sin formato y funciones locales, así como para gestionar incidencias comunes de Entity Framework y directivas «nullable» redundantes. La compatibilidad inicial con C# 12 abarca los constructores primarios y las expresiones lambda con parámetros opcionales. También hemos mejorado la compatibilidad de ReSharper con descartes y recursos desechables y hemos añadido nuevas sugerencias en línea e interlínea.

Saber más

Navegación y creación de pruebas de unidad

¡Las pruebas de unidad de ReSharper reciben una importante actualización con la incorporación de una funcionalidad que le permite navegar y crear pruebas para su código de producción!

Para crear una prueba, basta con invocar la acción Generate Code y elegir Unit Test o pulsar Ctrl+U,C. ReSharper le permite elegir el nombre de la clase de prueba e incluso creará un nuevo proyecto con su marco de pruebas preferido (si no existe todavía). Una vez creada la prueba, puede navegar entre su implementación y el código de prueba utilizando la acción Navigate to o pulsando Ctrl+U,F.

Más información

AI Assistant

AI Assistant Acceso limitado

Las versiones 2023.2 de los IDE basados en IntelliJ y las herramientas .NET introducen una nueva funcionalidad importante: AI Assistant. El conjunto inicial de funciones basadas en IA ofrece un chat de IA integrado y se entrelaza de forma natural con algunos de los flujos de trabajo de desarrollo principales mediante acciones contextuales, lo que permite que AI Assistant le explique fragmentos de código seleccionados, elimine posibles problemas y genere documentación XML por usted.

Más información

Compatibilidad con C#

Compatibilidad mejorada con cadenas sin formato

Hemos añadido nuevas inspecciones de C# y acciones contextuales para trabajar con cadenas sin formato, así como asistencia mejorada para la escritura y nuevas opciones de formato:

  • Una inspección Use raw string para transformar cadenas literales de varias líneas en sus representaciones sin formato.
  • Una inspección Simplify raw string para eliminar algunas de las comillas y símbolos del dólar que se vuelven redundantes.
  • Varias acciones contextuales para añadir o eliminar comillas, llaves de interpolación y símbolos del dólar, así como para alternar entre la representación en una o varias líneas.
  • Varias opciones de formateador de código, que le permiten alinear o sangrar el contenido dentro de cadenas sin formato.
  • Mejora de la asistencia a la escritura al pulsar las teclas Intro, Supr o Retroceso.

Consulte el artículo del blog correspondiente para obtener más información sobre nuestra compatibilidad mejorada con cadenas sin formato.

Inspecciones de problemas comunes de Entity Framework

Inspecciones de problemas comunes de Entity Framework

Hemos añadido varias inspecciones nuevas, arreglos rápidos y opciones de navegación contextual para problemas comunes que puede sufrir al trabajar con bases de datos que utilizan un marco de asignación objeto-relacional (ORM) como Entity Framework.

  • Para ayudarle con un posible problema «N+1», existen las inspecciones Possible multiple queries to the database for related entities (N+1 problem) y Possible multiple queries to the database (N+1 problem), un arreglo rápido correspondiente y una navegación contextual de ida y vuelta para investigar los lugares de su código en los que tiene un posible problema «N+1».
  • Además de detectar los problemas «N+1», introducimos una inspección más útil cuando se trabaja con Entity Framework: Query can return incomplete data for related entities. Ahora también tenemos un arreglo rápido y una navegación contextual de ida y vuelta para ayudarle a investigar este problema.

Más información sobre las nuevas inspecciones relacionadas con Entity Framework en el artículo del blog.

Inspecciones para trabajar con funciones locales

ReSharper 2023.2 incorpora dos nuevas inspecciones y sus correspondientes arreglos rápidos destinados a mejorar la legibilidad del código con funciones locales:

  • Una recomendación para poner un return o continue explícito antes de las funciones locales al final de un método.
  • Una sugerencia para mover las funciones locales al final de un método o bloque y separarlas del código ejecutable con un return o continue explícito u otra instrucción de salto de flujo de control.

Para los casos en los que no desee o no se le permita cambiar el código, ReSharper 2023.2 mostrará un consejo entre líneas con las instrucciones return; o continue; antes de las funciones locales para ayudarle a entender el código sin necesidad de cambiarlo.

Consulte este artículo del blog con más detalles sobre las nuevas inspecciones.

Inspecciones para directivas #nullable y anotaciones NRT

Inspecciones para directivas #nullable y anotaciones NRT

Ya están disponibles varias inspecciones nuevas para las directivas #nullable y las anotaciones NRT:

  • Una inspección Redundant nullable directive.
  • Una inspección Unused nullable directive.
  • Una inspección para alertarle de los casos en los que las anotaciones de tipo de referencia anulable (NRT) contradicen los atributos JetBrains.Annotations de un miembro base.

Para saber más sobre estas inspecciones, visite este artículo del blog.

Navegación mejorada desde declaraciones var

Navegación mejorada desde declaraciones var

Ahora, todas las acciones de navegación (Go to…, Find Usages, etc.) sugieren tipos subyacentes cuando se navega desde var para tipos comunes usados para contener otros tipos. Por ejemplo, ReSharper sugerirá navegar a Person si se utiliza la acción Go to declaration desde la palabra clave var de una variable con el tipo ImmutableArray<Person>?.

Puede obtener más información en el siguiente artículo del blog.

Constructores primarios Versión preliminar de C# 12

En la versión 2023.2, hemos introducido la compatibilidad con constructores primarios para clases y structs que no son registros a partir de la versión preliminar de C# 12. Existen varias inspecciones que detectan aquellos tipos en los que la inicialización puede expresarse con nuevos constructores primarios y sugieren aplicar un arreglo rápido para reducir en gran medida la cantidad de repeticiones de código.

A veces, la inicialización del tipo debe hacerse menos trivial y ya no puede expresarse mediante un constructor primario. Para estos casos, hemos introducido un par de acciones contextuales para invertir el reemplazo de los parámetros primarios del constructor por constructores y campos ordinarios.

Para ver todas estas y muchas más funcionalidades de los constructores primarios en acción, consulte este otro artículo del blog.

Compatibilidad con valores de parámetros predeterminados en lambdas

Compatibilidad con valores de parámetros predeterminados en lambdas Versión preliminar de C# 12

Como parte de nuestro trabajo en pro de la compatibilidad con las actualizaciones del lenguaje C# 12, vamos a introducir la compatibilidad con valores de parámetros predeterminados en las expresiones lambda. Además del conjunto estándar de mensajes de advertencia asociados al reconocimiento de esta sintaxis, también hemos modificado una inspección existente, The parameter has the same default value, para tener en cuenta los valores predeterminados de los parámetros en las lambdas. Puede obtener más información aquí.

Mejor compatibilidad con los recursos eliminables

ReSharper 2023.2 introduce dos nuevas inspecciones de código diseñadas para controlar mejor la eliminación de un objeto:

  • La inspección Return of a variable captured by ‘using’ statement le avisa cuando el objeto devuelto se desecha inmediatamente.
  • La inspección Return of a task produced by ‘using’-captured object identifica los escenarios en los que una Task es producida por un objeto capturado por una instrucción using y luego devuelta inmediatamente.

También hemos mejorado la funcionalidad Generate dispose pattern para que admita la interfaz IAsyncDisposable y pueda generar un método asíncrono para liberar los recursos.

Encontrará más detalles sobre estas incorporaciones aquí.

Mejor compatibilidad con descartes en C#

El análisis de código ha recibido nuevas y útiles adiciones a la compatibilidad con descartes de C#:

  • Ahora puede comprobar rápidamente los nombres y tipos de los valores descartados con la funcionalidad Push-to-Hint.
  • Hay una advertencia The _ name is typically reserved for local parameters without usages que advierte sobre variables y parámetros con nombre _ que se están utilizando realmente. Parecen un valor «descartado», pero en realidad representan todo lo contrario.
  • Dispone de una inspección Use discard assignment para sustituir una variable y un parámetro no utilizados por un descarte.

Eche un vistazo a el artículo del blog para obtener más información sobre la compatibilidad mejorada con los descartes.

Consejos de inserción

Nuevos consejos de inserción para mejorar la legibilidad del código

Consejos de inserción con nombres de componentes de tupla

Al pasar un valor a un argumento de tupla o tipo de retorno, C# le permite omitir los nombres de los componentes. Sin embargo, sin los nombres, resulta más difícil saber el significado de cada componente sin mirar su tipo de destino. Por ejemplo, muchos desarrolladores de software tendrán que comprobar dónde se asigna una tupla (null, false) para entender qué significan sus componentes.

¡Ahí es donde los consejos de inserción pueden ayudarle! ReSharper 2023.2 mostrará consejos de inserción con nombres de componentes de tupla cuando esos nombres no se desprendan ya de la expresión del componente, lo que hará que su código sea mucho más fácil de leer y comprender de un vistazo.

Para los componentes nulos y predeterminados, ReSharper 2023.2 mostrará consejos sobre sus tipos de destino incluso si el componente de destino no tiene un nombre explícito. Hará una excepción con los tipos cadena y objeto, ya que estos no suelen ser muy informativos.

Otra situación común en la que los nombres pueden mejorar la legibilidad son los patrones de deconstrucción en los que se conoce un nombre explícito, ya sea por el método Deconstruct o por los componentes de la tupla fuente. Estos consejos se han desarrollado para proporcionarle un contexto adicional cuando un patrón en sí no contiene suficientes datos para entender qué coincide, como value is ({ }, true, null).

Compatibilidad con las directivas #pragma warning mejorada

Compatibilidad con las directivas #pragma warning mejorada

Las directivas «pragma» permiten deshabilitar o restaurar fácilmente las advertencias del compilador mediante sus ID. Sin embargo, aunque estos ID son una buena forma de comunicarse con el compilador, es posible que a los desarrolladores humanos les cueste entenderlos. Sin conocimientos avanzados, puede no estar claro a qué se refiere un ID como CS0168 o CS0618, o qué requiere atención.

Optimización de LINQ

Optimización de LINQ

Las consultas LINQ pueden ser complejas e implicar varias transformaciones y proyecciones. Depurar consultas LINQ complejas puede llevar mucho tiempo, especialmente cuando se trata de grandes conjuntos de datos. Para ayudarle a inspeccionar fácilmente el resultado de cada paso de la consulta, ReSharper mostrará ahora los resultados intermedios como consejos de inserción durante la depuración.

Con la optimización del editor que muestra los resultados intermedios, ahora debería ser capaz de identificar rápidamente si hay algún valor inesperado o transformaciones incorrectas en el camino.

Compatibilidad con C++

Safe Delete (Eliminación segura)

Safe Delete (Eliminación segura)

ReSharper C++ introduce la refactorización Safe Delete para permitirle eliminar símbolos del código fuente de forma segura. Esta refactorización está disponible para clases, funciones, variables, enumeradores, espacios de nombres e incluso conceptos.

Antes de eliminar un símbolo, ReSharper C++ busca sus usos y le permite previsualizar los cambios en el código fuente, para que pueda asegurarse de que todas las eliminaciones son intencionadas. Si intenta eliminar una entidad compleja como una clase o un espacio de nombres, ReSharper C++ comprobará recursivamente los usos de todos sus miembros.

Más funcionalidades de C++20 y C++23

Más funcionalidades de C++20 y C++23

Esta versión incorpora compatibilidad con varias funcionalidades nuevas del lenguaje, como if consteval, los módulos de la biblioteca estándar C++23, el atributo [[no_unique_address]] y operator()/operator[] estático.

Novedades de ReSharper C++ 2023.2

Formateo de código

Optimización de LINQ

Formateo de llamadas a API fluidas

ReSharper 2023.2 añade un par de nuevas opciones para el formateo de código C#, diseñadas para mejorar la legibilidad de las llamadas a métodos encadenados.

La primera opción de formato de código controla si se produce un salto de línea antes de la primera llamada al método. La segunda opción es para situaciones en las que se combinan invocaciones de métodos y propiedades, y determina si debe insertarse un salto de línea tras la invocación de la propiedad.

AI Assistant Acceso limitado

AI Assistant no se incluye con ReSharper y debe instalarse por separado. Por el momento, existe una lista de espera para acceder a la funcionalidad de AI Assistant.

Obtenga más información sobre AI Assistant y cómo instalarlo mediante Toolbox App o el instalador de dotUltimate en nuestra ayuda web.

Chatee con AI Assistant

Chatee con AI Assistant

De forma predeterminada, AI Assistant dentro de ReSharper conoce su entorno de desarrollo: los lenguajes de programación, los marcos de trabajo, las bibliotecas y las tecnologías utilizadas en la solución. Este conocimiento permite a la IA generar respuestas más precisas y específicas a sus consultas.

La opción Smart chat permite a AI Assistant hacer referencia a archivos y símbolos específicos, recuperar fragmentos de código o los últimos cambios y buscar usos de métodos concretos. Como resultado, puede ofrecer sugerencias aún más precisas.

Acciones contextuales

Acciones contextuales

Con el complemento AI Assistant instalado, las acciones contextuales de ReSharper ofrecerán una serie de opciones basadas en la IA. AI Assistant puede ayudarle a lo siguiente:

  • Explicar el código seleccionado
  • Identificar posibles problemas
  • Crear código para los métodos no implementados
  • Generar documentación XML

Depurador predictivo Beta Visual Studio 2022

El modo de depurador predictivo que estamos introduciendo en ReSharper 2023.2 es capaz de prever todos los posibles estados desencadenados por la ejecución de un programa sin tener que ejecutarlo realmente, lo que le permite:

  • Mostrar los valores esperados de las variables.
  • «Silenciar» visualmente las partes del programa que no se ejecutarán.
  • Identificar los casos en los que la ejecución posterior terminará con una excepción.

El depurador predictivo le ofrecerá un nuevo nivel de comprensión de la ejecución de su programa. También le permitirá experimentar con diferentes valores y solucionar los problemas de su código sin tener que reiniciar el proceso de depuración para cada cambio.

Puede activar el depurador predictivo accediendo a ReSharper | Options | Tools | Debugger | Editor Integration | Predictive debugger | Show predicted values (beta).

Más información

Este depurador se encuentra actualmente en estado Beta, lo que significa que sus comentarios son cruciales para que alcance todo su potencial. Asegúrese de informar de cualquier error que encuentre a nuestro sistema de seguimiento de incidencias, junto con cualquier sugerencia o petición.

Decompilador

Diff entre agrupaciones

ReSharper 2023.2 proporciona un modo de realizar una comparación detallada entre dos agrupaciones. Esta funcionalidad es especialmente útil cuando se examinan las diferencias entre dos versiones de una agrupación específica y se buscan posibles vulnerabilidades que puedan haberse introducido en una versión más reciente.

Para comparar agrupaciones, haga clic en Compare Two Assemblies en la ventana de herramientas Assembly Explorer. Pueden seleccionarse para la comparación tanto aplicaciones de un solo archivo como archivos .exe o .dll.

Haga clic aquí para obtener más información sobre esta funcionalidad.

Rendimiento

Con ReSharper 2023.2, hemos revisado nuestro enfoque del almacenamiento en caché de los datos que necesita el IDE para que funcionen sus sistemas. Esta revisión, respaldada por innumerables pruebas de rendimiento, se tradujo en una notable reducción del consumo de espacio en disco por cada solución que abre. En términos prácticos, significa en general menos tiempo dedicado a la entrada/salida de disco y tiempos de carga más rápidos para las soluciones.

Otro cambio que permitió mejorar la velocidad de carga de las soluciones fue la refactorización de la lógica interna de construcción de componentes de ReSharper. Más información.

Miscelánea

Dynamic Program Analysis

  • Anteriormente, DPA en ocasiones contabilizaba erróneamente el tiempo de depuración en pausa como tiempo de ejecución de código, lo que provocaba falsos positivos en la base de datos. Este problema se ha solucionado en la versión 2023.2.
  • Anteriormente, DPA podía resaltar grandes bloques de código si la pila de llamadas correspondiente contenía asignaciones de memoria por funciones lambda. Ahora, el resaltado es más específico.
Descargar

Prueba gratuita de 30 días disponible