ReSharper 2022.3 incorpora la compatibilidad básica con las últimas funciones de C# 11, como los literales UTF-8, los tipos locales de archivo, los miembros virtuales estáticos, la coincidencia de patrones en tramos y otras. Para esta versión, hemos revisado el resaltado de código, hemos introducido la detección de dependencias vulnerables para los paquetes NuGet y hemos habilitado la importación y exportación de diagramas de dependencias de tipos y proyectos en el formato GraphML. Esta versión también incluye la compatibilidad temprana con Microsoft Visual Studio que se ejecuta en ARM64.
Prueba gratuita de 30 días disponible
Estamos ultimando la compatibilidad básica con las funcionalidades más recientes de C# 11:
Hemos añadido compatibilidad básica con literales UTF-8
. Ahora, el análisis de código propone usar un sufijo u8
para un literal en lugar del método System.Text.Encoding.UTF8.GetBytes()
o una matriz de bytes con los símbolos UTF8
adecuados. También hemos añadido una serie de advertencias y errores del compilador para los literales UTF-8
.
La compatibilidad básica con los tipos de archivo local permite entender la nueva sintaxis, e incluye un modificador de accesibilidad de file
para los tipos, y advertencias y errores del compilador con las correspondientes soluciones rápidas, como Move class to outer scope cuando se especifica el modificador file
para una clase anidada. También hay una acción contextual muy útil para convertir un tipo general en uno de archivo.
Ahora, Rider puede convertir cadenas regulares y literales en cadenas sin formato. Esto también significa que ahora hay muchas funcionalidades para las cadenas que están disponibles para las cadenas sin formato.
En esta versión, hemos introducido sugerencias para utilizar la nueva sintaxis de patrón de lista de C# 11 (en lugar de las comprobaciones convencionales de la longitud de la colección con la consiguiente expresión de acceso al indexador) para comprobar los elementos correspondientes de la colección.
A partir de C# 11, puede utilizar modificadores abstract
y virtual
para los miembros static
de las interfaces y utilizar dichos miembros en el código genérico con parámetros de tipo limitados por esta interfaz. ReSharper se ha actualizado para manejar los miembros polimórficos de tipo static
de la misma manera que se manejan los ordinarios:
override
también incluyen a los miembros de la interfaz, por lo que ahora puede implementar fácilmente miembros abstractos o virtual static
. >>>
) Ahora, ReSharper reconoce el engorroso patrón de código que tienen que escribir los desarrolladores de C# para desplazarse a la derecha sin signo para los tipos de datos con signo y propone utilizar el operador de desplazamiento a la derecha sin signo (>>>
) en C# 11.
Si analiza Spans de caracteres, probablemente utilice mucho el método MemoryExtensions.SequenceEqual
. C# 11 incluye un atajo para este tipo de comprobación. Ahora puede, simplemente, comparar los patrones de los Spans de caracteres con los literales de cadena con las expresiones is
o switch
.
ReSharper propone usar las expresiones is
o switch
en lugar de muchas declaraciones if
.
ref
y palabra clave scoped
A partir de C#11, se permite declarar campos ref
dentro de las estructuras ref
. ReSharper admite esta nueva regla sintáctica, proporciona todos los errores y advertencias del compilador, muestra la palabra clave ref
en la finalización del código y permite que dichos campos se inicialicen en un constructor.
ReSharper también conoce la nueva palabra clave scoped
, que puede utilizar en argumentos ref
o <0>ref struct0> y en variables locales. La compatibilidad incluye el análisis correcto de la nueva sintaxis, la palabra clave scoped
en la finalización del código y la preservación de la palabra clave scoped
al generar anulaciones de métodos. También verifica la compatibilidad de los modificadores scoped
y ofrece arreglos rápidos para los parámetros scoped
que no coincidan en las anulaciones, las implementaciones de interfaces y las conversiones de delegados.
C# 11 y .NET 7 también han introducido cambios en las reglas de seguridad ref
del lenguaje. Los cambios regulan las operaciones disponibles para las variables ref
y ref struct
con el fin de proporcionar seguridad ref
en el código gestionado con la introducción de los campos ref
. ReSharper conoce los cambios y le ayudará a encontrar las partes de su proyecto que necesitan actualizarse y anotarse con la nueva palabra clave scoped
para adecuarse a los cambios al migrar a C# 11 o .NET 7.
Con la versión 2022.3, introducimos un par de cambios en la compatibilidad con las inyecciones de lenguaje:
Las inyecciones del lenguaje ahora funcionan dentro de los literales de cadena sin formato de C# 11.
ReSharper admite el atributo
[StringSyntax] de .NET 7, junto con sus diferentes sintaxis para la inyección de lenguaje y la finalización de código.
Hay un nuevo icono de marca de medianil para notificar a los usuarios las importaciones implícitas de espacios de nombres en C# y los archivos Razor.
Al pulsar Alt+Intro en la línea correspondiente, verá la lista completa de importaciones implícitas y la información sobre el archivo fuente donde se encuentran las correspondientes directivas global using. Si selecciona un espacio de nombres importado, ReSharper puede navegar hasta donde está declarado, además de a las etiquetas <Using Include="Some.NameSpace" />
en el archivo de proyecto .csproj
.
ReSharper también presenta las importaciones generales de _Imports.razor
y permite la navegación a las definiciones de importación correspondientes.
Con la incorporación de los tipos numéricos Int128
y UInt128
en .NET 7, hemos actualizado nuestras sugerencias de especificación de formato de finalización de código.
También hemos añadido la compatibilidad que faltaba con los tipos de fecha y hora DateOnly
y TimeOnly
de .NET 6, así como con el tipo numérico de coma flotante de precisión media Half
introducido en .NET 5.
A veces, después de la refactorización, las expresiones de coincidencia de patrones pueden convertirse en patrones recursivos triviales. En este punto puede que no merezca la pena utilizar la sintaxis de los patrones recursivos, por lo que ahora ReSharper puede convertir los patrones en expresiones más sencillas conservando la semántica original de la concordancia de patrones.
A veces, al escribir después de una invocación, apenas se ven sugerencias significativas. Esto puede ocurrir si la invocación no produjo ningún valor al llamar al método que devolvía un void
. Normalmente, se necesitan algunas acciones del IDE para darse cuenta de ello (volver atrás y navegar hasta la declaración del método, o pasar el ratón por encima de la invocación). En esta versión, hemos introducido el consejo void
para este tipo de invocación que devuelve void
para informarle de inmediato sobre el tipo resultante de la invocación. Al aceptar este elemento void
, se añadirá un punto y coma después de la invocación si este falta.
Se han revisado los resaltados y los subrayados ondulados del código en Rider 2022.3. Debido a una diferencia en la lógica interna, ReSharper entraba en conflicto con los analizadores de estilo de código de Microsoft Roslyn, haciendo que mostrara resaltados superpuestos, que dibujara el mismo resaltado en diferentes puntos o que duplicara los subrayados ondulados. Se han resuelto las diferencias en la lógica que hay detrás de la mayoría de estos casos y, para las raras excepciones, los errores se acompañan con sugerencias claras sobre cómo resolver el conflicto.
Siempre que utilice paquetes NuGet de código abierto en sus soluciones, existe el riesgo de abrir su proyecto a vulnerabilidades de seguridad. Si bien NuGet proporciona herramientas externas para detectar tales amenazas, es infinitamente más conveniente contar una herramienta así directamente en su IDE para detectar cualquier vulnerabilidad durante el tiempo de diseño. Por ello, estamos introduciendo la detección de dependencias vulnerables en ReSharper. A partir de esta versión, las dependencias afectadas se resaltarán en los archivos .csproj
y .vbproj
.
ReSharper puede integrarse en Visual Studio de Microsoft en dispositivos con tecnología ARM. Proporcionamos apoyo inicial para todos los flujos de trabajo de desarrollo básicos, excepto la corrección ortográfica con ReSpeller.
El instalador se ha actualizado para incluir compatibilidad con x64 y ARM64. La versión correcta se instalará automáticamente de acuerdo con la arquitectura del procesador de su máquina.
dotPeek, dotMemory, dotTrace y dotCover, así como las herramientas de línea de comandos de ReSharper, ahora son compatibles con Windows ARM64.
El decompilador integrado en ReSharper 2022.3 incorpora la compatibilidad con:
static abstract
y static virtual
en las interfaces; checked
definidos por el usuario; Ahora, la ventana de herramientas IL Viewer puede descompilar código en diferentes niveles de construcciones del lenguaje C#. Hay dos niveles de C# disponibles: el nivel alto, con ciertas construcciones sintácticas simplificadas utilizando las últimas funcionalidades del lenguaje, y el nivel bajo, para los casos en los que desee saber cuál es el estado bruto de estas construcciones sintácticas.
ReSharper ahora le permite guardar e importar diagramas de dependencias de tipos y proyectos en el formato GraphML, conservando la capacidad de utilizar el diagrama como mapa de código y de navegar por las dependencias rápidamente.
El análisis dinámico de programas (Dynamic Program Analysis - DPA) cuenta con nuevas inspecciones que permiten encontrar incidencias relacionadas con el uso de la base de datos, por ejemplo cuando:
Las nuevas inspecciones están disponibles para todas las aplicaciones que utilizan Entity Framework Core y un proveedor de datos .NET para SQL Server.
ReSharper C++ 2022.3 incorpora la compatibilidad experimental con módulos C++20. Hemos actualizado el motor del lenguaje y muchas de las funciones de ReSharper C++ para que funcionen con el nuevo modelo de compilación, para admitir tanto módulos con nombre como unidades de encabezado.
ReSharper C++ 2022.3 ofrece integración con clang-format. Ahora puede cambiar entre el motor de formateo propio de ReSharper y el incorporado o un binario personalizado de clang-format para formatear archivos. ReSharper C++ ejecuta clang-format en un proceso por separado, lo que garantiza la plena compatibilidad con el formateador estándar del sector, así como un mejor rendimiento y una gama más amplia de opciones de formateo.
Prueba gratuita de 30 días disponible