ReSharper 2021.1 incluye actualizaciones en el análisis de código, compatibilidad con plantillas de ruta ASP.NET, cambio de nombre para componentes de tuplas, y más.
Prueba gratuita de 30 días disponible
La inspección Merge into pattern ahora es capaz de trabajar con muchos más patrones de código. Fusione comprobaciones de valores null con otras comprobaciones en una sola comprobación de patrón:
Reescriba comprobaciones desde expresiones conditional?.Access
a concordancia de patrones anidada:
Reduzca el anidado de instrucciones if
fusionando las comprobaciones entre sí:
Por último, puede combinar patrones dentro de un patrón de deconstrucción simple var (a,b)
expandiéndolos en formularios completos:
Hemos añadido más compatibilidad con registros C# 9.0. Las refactorizaciones Extract interface y Extract superclass ahora funcionan con declaraciones de registro
, al igual que File Layout y las funcionalidades relacionadas con documentación XML.
Hemos incorporado una serie de inspecciones y acciones nuevas. Redundant explicit property declaration para propiedades en declaraciones de registro
puede resultar de ayuda al migrar su código para utilizar registros con parámetros posicionales y declaraciones de propiedad implícitas. Se incluye el arreglo rápido correspondiente, Remove explicit property.
Si decide convertir un registro
en una clase
, la acción To class se encargará de los parámetros posicionales y del constructor primario. También cuenta con una acción To record que funciona en dirección contraria.
Cuando necesite reescribir parámetros posicionales y un constructor primario en propiedades ordinarias, constructor y un método Deconstruct()
explícito, plantéese utilizar la acción contextual To explicit constructor.
También le ayudamos a mantenerlo todo en orden: la inspección Redundant 'record' type declaration body y el arreglo rápido correspondiente sustituirán al cuerpo de la declaración de tipo de registro
vacío con un punto y coma.
Find usages ahora busca los usos del constructor primario de un registro y los usos de un método Deconstruct()
implícito.
Nos complace presentar una nueva inspección, Inline temporary variable. A veces utiliza el mismo valor una y otra vez con diferentes nombres en su programa. ¿Ese código podría ser más transparente? ¡Claro! Y ReSharper está aquí para ayudarle.
Puede incluso ayudarle a encontrar errores si se supone que la variable temporal se va a inicializar como algún otro valor o se va a mutar más adelante en código.
Los patrones not
lógicos pueden ayudarle a que sus comprobaciones de tipo sean mucho más fáciles de leer. ReSharper le ofrece la posibilidad de olvidarse de la sintaxis !()
en favor de un patrón "not".
ReSharper ahora sugiere utilizar el operador de rango en lugar de Slice
y Substring
, si así se simplifica el código.
La inspección Namespace does not correspond to file location se ha eliminado ahora en archivos con código de nivel superior.
Dispone de otra nueva inspección que comprueba si una propiedad automática se puede sustituir por una propiedad computada, junto con un arreglo rápido para realizar la sustitución.
Para la compatibilidad con C# 10.0, hemos dado unos primeros pasos enseñando a ReSharper a trabajar con la función Constant string interpolation.
¡No se pierda el artículo del blog en el que le contaremos todos los detalles del análisis de código de la versión 2021.1!
Las plantillas de ruta se usan mucho en aplicaciones MVC para configurar cómo se asignarán las solicitudes HTTP con los extremos ejecutables de la aplicación. En la versión 2021.1 introducimos compatibilidad con las plantillas de ruta: ReSharper ahora ofrece navegación estructural, inspecciones y arreglos rápidos. Veamos algunos ejemplos.
Las inspecciones más básicas comprueban errores de sintaxis en plantillas de ruta: situar accidentalmente una ruta a parámetro "catch all" en medio de una plantilla, declarar el parámetro "catch all" como opcional, añadir un valor predeterminado al parámetro opcional, etc.
Los parámetros de ruta son la fuente de casos interesantes. ¿Qué sucede si declara un parámetro con el mismo nombre en el controlador y en la acción? ReSharper le avisará.
Por otro lado, pueden faltar parámetros. En este caso, ReSharper le sugerirá que los añada, ya sea desde el atributo del controlador o desde la acción. Si existe una restricción de tipo, se utilizará para inferir el tipo del parámetro.
Hablando de restricciones, son un buen terreno para el análisis de código. ReSharper comprueba si la propia restricción aplicada es correcta, y si el parámetro realmente satisface la restricción.
ReSharper también trata de analizar si el tipo de parámetro puede ser más estricto (basado en la restricción) y puede sugerir cambiar el tipo. Si ha utilizado intencionadamente el tipo distinto para el parámetro, solo tiene que ignorar la sugerencia.
ReSharper también tiene en cuenta las restricciones personalizadas. Si en algunos casos no se reconoce, anote su clase de restricción con el atributo [RouteParameterConstraint]
que le ofrece JetBrains.Annotations.
Otras funcionalidades de nuestro paquete estándar son la finalización de código, la navegación estructural y la reorganización del código.
Renombrar los parámetros de ruta ya no tiene que ser un proceso manual: ha llegado la refactorización Rename.
Todo lo anterior funciona por ahora con enrutado basado en atributos. Estamos deseando obtener su feedback sobre estas novedades.
Si quiere obtener más información sobre las plantillas de ruta de ASP.NET Core, consulte esta entrada del blog.
Las tuplas con nombre nos acompañan desde C# 7, pero cambiar el nombre de los componentes era una operación manual. Esto ha terminado; ya puede recurrir a la refactorización.
Ahora dispone de una nueva acción de navegación: Navigate to Windows Explorer. La encontrará en el menú Navigate | Navigate to o pulsando Ctrl+Mayús+A y escribiendo su nombre. Esto puede resultarle útil si está haciendo algo con el propio archivo, como copiarlo o copiar la ruta en el interior del repositorio, o si prefiere ver el historial VCS del archivo utilizando extensiones Git para Windows Explorer.
Aunque todavía estamos desmontando ReSharper para el modo 'out of process' y montándolo de nuevo, nunca dejamos de resolver incidencias relacionadas con el rendimiento siempre que sea posible. Estos son algunos puntos destacables.
Hemos añadido un par de ajustes nuevos:
new()
. Para reglas de nomenclatura personalizada, hemos actualizado la orden en la que se aplican: las más específicas ahora van delante.
Por último, hemos añadido una nueva acción para la selección de formato. Ahora puede decirle a ReSharper que solo ajuste las sangrías del código seleccionado, en lugar de llevar a cabo el proceso de reformateo completo.
También hemos solucionado una serie de errores; encontrará los detalles en nuestro sistema de seguimiento de incidencias.
EditorConfig se está convirtiendo en una herramienta popular entre la comunidad .NET, y mejoramos continuamente su integración con ReSharper. Esto es lo que hemos modificado:
csharp_indent_case_contents_when_block
en EditorConfig. [InlineAutoData]
y le avisa si no hay ningún atributo [TestFixture]
o [Test]
en la clase de prueba o método. ReSharper C++ 2021.1 incorpora compatibilidad con varias nuevas funcionalidades para los lenguajes C++20 y C++17: tipos de clase en parámetros de plantilla que no sean de tipo, reglas de deducción de argumentos de plantilla de clase C++20, y noexcept
como parte del tipo de función. También cuenta con nuevos elementos de finalización de código para corrutinas disponibles tanto en finalización de código básica como en plantillas de finalización postfix: co_await
, co_yield
y co_return
.
Hemos incorporado una colección de ajustes de estilo de sintaxis que puede utilizar para aplicar el estilo de código seleccionado para las construcciones de sintaxis. Con las inspecciones compatibles, los arreglos rápidos y las acciones contextuales Apply Syntax Style y Cleanup selection, puede aplicar fácilmente el nuevo estilo a la base de código y mantener la coherencia del código nuevo.
Prueba gratuita de 30 días disponible