ReSharper 2020.2 incluye nuevas inspecciones y arreglos rápidos para C#8 y tipos de referencia anulables, la esperada limpieza de código al guardar, un ejecutor de pruebas de unidades renovado y mejoras de accesibilidad. ReSharper C++ también le lleva al siguiente nivel de desarrollo con Unreal Engine, e incluye numerosas mejoras de compatibilidad con C++/CLI, navegación y análisis de código.
Prueba gratuita de 30 días disponible
El análisis de código que podría ser nulo ahora detecta más casos y puede efectuar un seguimiento de la posibilidad de nulidad incorrecta a través de la deconstrucción y del ciclo foreach
. También ofrece el arreglo rápido correspondiente.
El análisis de código ahora tiene en cuenta los atributos JetBrains.Annotations (NotNull
y CanBeNull
) para la API, incluso en código donde los tipos de referencia anulables están deshabilitados (#nullable disable
).
También dispone de acciones contextuales para convertir foreach
a LINQ y LINQ a código en IAsyncEnumerable<T>
si tiene instalado el paquete System.Linq.Async
NuGet para su proyecto.
Ahora es posible generar fácilmente implementaciones IEqualityComparer<T>
y IComparer<T>
con los arreglos rápidos correspondientes.
Ahora, el análisis de código tiene en cuenta las anotaciones del compilador (como AllowNull
y DisallowNull
) al verificar la nulabilidad de miembros implementados o anulados.
Cuenta con nuevas inspecciones y arreglos rápidos para hacer que las variables y los tipos de retorno sean "not nullable" si nunca han tenido o devuelto valores que acepten null.
El análisis de código ahora puede seguir las reglas dotnet_diagnostic desde el archivo .editorconfig. Especifique la gravedad de las inspecciones en el archivo .editorconfig, p. ej. dotnet_diagnostic.CS1058.severity = hint
, y ReSharper mostrará las inspecciones correspondientes.
En esta versión se ha mejorado la compatibilidad con las implementaciones predeterminadas en la funcionalidad de interfaces. El medianil izquierdo del editor de código muestra que se ha implementado o anulado un método, y nuestras refactorizaciones y navegación son conscientes de esta funcionalidad del lenguaje C#.
Ahora los consejos de inserciones están disponibles en código XAML. Ofrecemos consejos para nombres de propiedades de marcado y DataContext
, así como para márgenes y caracteres de relleno, lo cual resulta práctico si no desea memorizar sus órdenes.
El arreglo rápido Suppress nullable warning with ! se puede deshabilitar para una solución con el menú Alt+Enter.
Ahora puede configurar ReSharper para ejecutar la limpieza de código de forma automática al guardar un archivo. ¡Por fin!
Ya no se necesitan complementos de terceros para esta funcionalidad. Se puede habilitar desde la página de opciones ReSharper | Options | Code Editing | Code Cleanup
.
Hay nuevos ámbitos más precisos para ejecutar la limpieza de código, como recently modified files (archivos modificados recientemente) y recently opened files (archivos abiertos recientemente), lo cual puede reducir significativamente el tiempo que se tarda en obtener un resultado, puesto que Code Cleanup no tiene que recorrer la solución al completo. Para un ajuste más preciso, puede especificar qué califica como "recientemente".
Guarde automáticamente los archivos una vez finalizada la limpieza de código. Esta funcionalidad se puede habilitar desde la página de opciones ReSharper | Options | Code Editing | Code Cleanup
.
Se han incluido un par de mejoras para reducir el tiempo de ejecución de la limpieza de código:
Hemos renovado por completo nuestro ejecutor de pruebas de unidades .NET Framework y .NET Core para utilizar el mismo ejecutor para ambos tiempos de ejecución que se llevan a cabo con el proceso de Visual Studio. Esto nos ayuda a resolver una gran cantidad de problemas al descubrir, ejecutar y depurar pruebas de unidades, y nos da un control total de las jerarquías de pruebas de unidades para pruebas de .NET Core.
El nuevo ejecutor de pruebas cuenta con compatibilidad integrada para:
Una de las cosas que más llama la atención de la IU es que ahora ReSharper es compatible con el atributo DisplayName
en las pruebas de .NET Core para marcos de trabajo xUnit y NUnit.
Al aplicar filtros al árbol de pruebas de unidades, por ejemplo, Passed/Failed/etc., los contadores indicarán dos números por separado: el número total de todas las pruebas, y el número de pruebas que cumplen los criterios del filtro.
El menú Navigate To cuenta con dos nuevas acciones:
Hemos añadido compatibilidad con el método NUnit's Assert.Multiple
, que hace posible comprobar numerosas aserciones sin que el código salga tras el primer error.
Los intervalos de tiempo para agrupar por duración pueden editarse directamente en las opciones.
Esta versión incluye compatibilidad mejorada con lectores de pantalla como JAWS, NVDA y Microsoft Narrator. Estos lectores de pantalla ahora cuentan con mejor acceso a:
Tenemos buenas noticias para los desarrolladores de UWP: ¡por fin tenemos compatibilidad con vinculaciones compiladas con x:Bind
!
ReSharper resuelve código x:Bind
correctamente y ofrece varias inspecciones y los arreglos rápidos correspondientes. Le avisa acerca de setters de propiedades que faltan, atributos BindBack
, y cuando hay colisiones de sobrecarga. Además, existe un conjunto de arreglos rápidos Create from Usage para generar un campo correcto, una propiedad o un método dentro del código detrás del modelo C#.
Cuenta con finalización de código e información de parámetros para atributos propertyPath
, BindBack
y UpdateSourceTrigger
dentro de una expresión x:Bind.
Las refactorizaciones Change Signature y Safe Delete ahora conocen la utilización de métodos en código XAML y los actualizan según corresponda. Del mismo modo, las refactorizaciones Make Static/Const y Encapsulate Field funcionan directamente desde el código XAML y actualizan las utilizaciones de XAML correctamente si las llama desde el código detrás del modelo C#.
La detección de código que podría ser nulo está integrada en el análisis de código x:Bind
. ReSharper ahora muestra las inspecciones relacionadas con nulo directamente dentro del código XAML si hay atributos CanBeNull
y NotNull
en código C#, por ejemplo, “Possible System.NullReferenceException
” y “Possible null
assignment to non-nullable entity” para argumentos en un método utilizando en un propertyPath
.
Otras funcionalidades de ReSharper como Find Usages y Go to Declaration también reconocen las vinculaciones x:Bind
.
En 2020.1, Rider migró de Mono a .NET Core en macOS y Linux. En esta versión, las herramientas de línea de comandos de ReSharper se ejecutan en .NET Core en Windows, Linux y macOS.
Por favor, tenga en cuenta que las herramientas de línea de comandos de ReSharper ya no van en un paquete con Mono, y las herramientas para macOS y Linux ahora requieren .NET Core 3.1.
Otra ventaja de utilizar .NET Core como herramienta de tiempo de ejecución en lugar de Mono es que las herramientas de línea de comando de ReSharper pueden instalarse como herramienta global de .NET Core. Ejecute el comando siguiente para instalarlas:
dotnet tool install -g JetBrains.ReSharper.GlobalTools --version 2020.2.0-*
Y ejecute la herramienta con jb tool_name [options]
, por ejemplo:
jb inspectcode yourSolution.sln -o=<pathToOutputFile>
En esta versión, el motor yFiles que se utiliza para dibujar el gráfico se ha actualizado a la versión más reciente. Esta nueva versión de yFiles, además de nuestras optimizaciones, mejora significativamente el rendimiento en la creación del gráfico resultante.
Ahora es posible exportar el gráfico resultante a nuevos formatos:
La ventana de herramientas de diagramas por fin es compatible con el tema oscuro de Visual Studio.
Navegar a las utilizaciones de tipos desde agrupaciones externas en el código es ahora mucho más sencillo. ReSharper puede navegar directamente desde los resultados de búsqueda de Go to Type a Find Usages. Para probarlo, busque un tipo, resáltelo en la lista con el teclado y pasando por encima con el ratón, y llame a Find Usages o Go to Usage utilizando los atajos correspondientes.
Desde la versión v2020.2, se puede llamar a varias acciones de ReSharper, como llamar directamente a documentación rápida desde los diálogos Go to Symbol y Go to File Member, utilizando atajos asignados a estas acciones en su esquema de mapa de teclas favorito.
Se ha añadido un conjunto de acciones de Peek nuevas para mostrar el resultado de algunas acciones comunes de ReSharper en una vista de Peek Definition.
Llame a la acción Peek Implementation para abrir una Peek view de la implementación haciendo clic en la rueda del ratón mientras mantiene pulsado Ctrl+Alt, o pulse Ctrl+Alt+Q con el signo de intercalación en un símbolo.
Llame a la acción Peek Base Symbols para observar todos los símbolos de base dentro de una vista Peek View. Solo tiene que pulsar Mayús+Alt+Q en un símbolo para ejecutarlo.
En esta versión, el diálogo Conflicts se ha rediseñado como paso por separado en la interfaz de Refactorings. La lista simple de antes se ha sustituido por un árbol agrupado por archivo.
Al llamar a las refactorizaciones Introduce parameter o Introduce field en una expresión, ReSharper pregunta a qué parte de la expresión se debería aplicar la refactorización.
ReSharper C++ 2020.2 incorpora compatibilidad con el modelo de proyectos Unreal Engine indicando sugerencias de autoimportación más inteligentes para directivas include
y compatibilidad para diferentes configuraciones de solución. ReSharper C++ también cumple mejor las directrices de Unreal Engine ajustando la gravedad de la inspección y las acciones de generación de código.
Para una navegación más sencilla, Search Everywhere/Go To ahora trata los símbolos de las fuentes del motor como símbolos de biblioteca. También hay varias inspecciones nuevas que aplican las directrices de Unreal Engine y le recuerdan que refresque los archivos del proyecto en Unreal Editor.
Como la licencia de ReSharper ahora incluye ambos productos, ReSharper y ReSharper C++, la compatibilidad con C++/CLI –un puente entre ambos lenguajes– está disfrutando de muchas actualizaciones y de interoperabilidad mejorada entre C++/CLI y C#.
ReSharper C++ encontrará símbolos derivados en código C#, mientras que Go to Base Symbols y Go to Derived Symbols ahora funcionan con entidades CLR importadas.
ReSharper C++ ahora inspecciona el modo en que asigna memoria y sugiere un arreglo rápido para sustituir gcnew
por new
(y viceversa) cuando el tipo de destino no es válido. Otra inspección le avisa cuando trata de utilizar el especificador de C++ final
en una interfaz o clase gestionada, y le propone un arreglo rápido para convertirla en sealed
. Además, ahora puede utilizar un arreglo rápido para convertir un cast de estilo C en un safe_cast
.
ReSharper ahora alinea columnas de código similar correctamente, incluso cuando la única parte del grupo alineado se está formateando, de modo que añadir un punto y coma o una llave ya no interrumpa la alineación.
Se han introducido algunas mejoras en el ejecutor de consola dotCover:
--reportype=SummaryXml
le permite crear un nuevo tipo de informe de resumen, que incluye datos sobre cuántas clases, métodos e instrucciones se abordan en total. --reporttype=HTML,SummaryXml
--output=report.html;summary.xml
Tanto dotTrace independiente como dotTrace en Rider son capaces de perfilar la parte nativa de las aplicaciones Mono/Unity en Windows. Solo tiene que iniciar una sesión con la opción 'Enable native profiling' y verá tanto las pilas de llamadas nativas como las gestionadas en instantáneas de rendimiento. Esta funcionalidad podría resultar útil para analizar cuellos de botella en el rendimiento en juegos Unity.
También hay un par de mejoras en el perfilador de consola dotTrace:
Ahora puede abrir objetos anclados como un conjunto de objetos por separado, y puede abrir objetos a los que no existe acceso desde raíces GC como conjunto de objetos por separado.
Las mejoras en el perfilador de línea de comandos dotMemory incluyen:
dotPeek continúa mejorando su compatibilidad con las versiones más recientes de C#, y la nueva versión incluye:
Throw
.NullablePublicOnly
.Prueba gratuita de 30 días disponible