ReSharper proporciona análisis continuo de calidad del código en C#, VB.NET, XAML, XML, ASP.NET, ASP.NET MVC, ASP.NET Core, HTML, ResX y Protobuf. Los errores y problemas se detectan instantáneamente, incluso antes de compilar.
ReSharper aplica más de 2200 inspecciones de código a su código al momento del diseño para que pueda ver instantáneamente si su archivo actual o incluso toda su solución contienen errores o problemas.
ReSharper resalta los errores y problemas detectados directamente en el editor de Visual Studio y, además, los muestra usando la Barra de marcadores a la derecha.
El Indicador de estado en la parte superior de la Barra de marcadores cambia su color e icono si el archivo contiene errores o problemas. Si hace clic derecho sobre el icono, podrá alternar rápidamente entre el analizador de código de ReSharper, el resaltado de identificadores y el análisis de código de Visual Studio, así como navegar entre incidencias de los niveles de gravedad más altos.
ReSharper detecta y resalta instantáneamente los errores directamente en el editor a medida que usted escribe.
Los errores se resaltan con fuente roja o con un subrayado curvo. Si pasa el puntero del ratón sobre un error, se mostrará su descripción en una descripción emergente.
ReSharper puede detectar errores no solo en código C# simple o VB.NET, sino también en archivos de código detrás del modelo de ASP.NET, referencias en archivos de marcado y llamadas ASP.NET MVC.
Para XAML, ReSharper verifica la sintaxis del XML y valida de forma experta la semántica XAML, incluidas las referencias entre entidades XAML.
En los scripts de compilación (NAnt y MSBuild), ReSharper analiza y resalta las propiedades, objetivos, tareas y atributos desconocidos.
También cuenta con inspecciones para HTML y XML.
Además de errores y advertencias de compilador, ReSharper muestra sus propias advertencias que no impiden que su código se compile, pero igualmente podrían presentar ineficiencias serias del código. Por ejemplo, ReSharper le informa sobre castings (conversiones entre tipos primitivos) redundantes, cadenas de formato incorrecto, variables locales declaradas pero nunca usadas, etc. Las construcciones que tienen advertencias asociadas se destacan ya sea con texto en gris o con un subrayado curvo azul.
También tendrá un nivel de análisis de código más profundo con las sugerencias de código. Las sugerencias ofrecen información sobre la estructura del código, llamando su atención sobre asuntos que no necesariamente sean problemáticos o equivocados, pero que probablemente sea útil tener en cuenta. Las sugerencias se resaltan con un subrayado curvo verde.
Por ejemplo, podría interesarle saber que cierto parámetro se puede declarar con un tipo base, lo que significa que su método solo usa miembros del tipo base del parámetro. ReSharper también puede sugerirle crear una propiedad autoimplementada a partir de una propiedad con campo de respaldo, convertir una invocación de método estático en una llamada a método de extensión o usar la palabra clave "var" cuando sea posible.
El "consejo" es el último nivel de gravedad de resaltado de código, y el menos intrusivo. A diferencia de los errores, advertencias y sugerencias, los consejos no se tienen en cuenta cuando navega al resaltado siguiente o anterior, no se muestran en la Barra de marcadores y, por lo tanto, no influyen en el color del Indicador de estado.
Un consejo simplemente llama su atención sobre un detalle particular del código y recomienda una forma de mejora. Los elementos de código que tienen consejos asociados se resaltan con un subrayado de guiones verdes.
ReSharper viene con más de 1200 arreglos rápidos que le ayudan a reparar instantáneamente la mayoría de los problemas detectados en el código en todos los lenguajes compatibles. Aplicar un arreglo rápido es tan simple como presionar Alt+Intro en un problema de código resaltado y elegir la forma adecuada para corregir el problema o mejorar el código subóptimo.
Las advertencias y sugerencias sobre la solución completa le ayudan a detectar miembros no privados no usados sobre la marcha. Estas inspecciones solo funcionan cuando le permite a ReSharper analizar su solución completa. Busque los problemas resaltados en su código y en la Barra de marcadores. Específicamente, podrá descubrir:
Además, puede realizar anotaciones dentro del código para marcar ciertos tipos y miembros no privados si se dejan intencionalmente sin uso, para evitar que ReSharper llame su atención sobre estos.
Usted puede, en cualquier momento, cambiar el nivel de gravedad de distintos elementos de análisis: por ejemplo, hacer que ReSharper muestre una inspección/notificación particular como un error, advertencia, sugerencia de código o consejo, dependiendo de su estilo de código personal o los requisitos corporativos.
Además, a veces usted sabe bien que un trozo particular de código es correcto y no necesita advertencias, por lo que puede sencillamente desactivar cierta advertencia.
Para desactivar o configurar los elementos de inspección de código, use la página Code Inspection | Inspection Severity dentro de las opciones de ReSharper. También puede configurar una advertencia, sugerencia o consejo particular usando el menú Options for inspection en la lista de acciones que invoca al presionar Alt+Intro.
Cada error, advertencia o sugerencia se representa con una franja individual en la Barra de marcadores. Hacer clic en la franja le lleva directamente a la línea de código que contiene el error o genera la advertencia/sugerencia.
Para navegar entre errores, presione Alt+Av Pág (adelante) y Alt+Re Pág (atrás). También puede navegar solo entre los errores (obviando las advertencias y sugerencias) presionando Mayús+Alt+Av Pág (ir al siguiente error) y Mayús+Alt+Re Pág (ir al error anterior). En la barra de estado se mostrará un mensaje que describe el error, advertencia o sugerencia actual.
También existe una forma alternativa de navegar entre problemas del código: puede buscar todos los problemas de código dentro de un ámbito determinado y explorarlos en una ventana de herramienta dedicada.
ReSharper proporciona Structural Search and Replace (Búsqueda y reemplazo estructural) para buscar código que coincide con cierto patrón y, opcionalmente, sustituirlo con código que coincida con otro patrón. Algo aún más increíble es que ReSharper puede supervisar continuamente su solución en busca de sus patrones de búsqueda, resaltar el código coincidente y ofrecer arreglos rápidos para sustituir el código de acuerdo con sus patrones de reemplazo.
Eso significa básicamente que puede ampliar el menú de inspecciones de código de ReSharper con sus propias inspecciones personalizadas. Por ejemplo, si va a migrar a una nueva versión de un marco de trabajo, puede crear patrones de búsqueda para encontrar usos de su API anterior y reemplazar los patrones para introducir una API actualizada.
ReSharper no solo puede analizar archivos abiertos en tiempo de diseño, sino que también puede extender sus capacidades de análisis para cubrir su solución completa.
Suponga que cambió la visibilidad de un miembro de pública a interna, porque asumió que solo se usaba dentro del ensamblado actual. En este punto, ReSharper no encuentra errores en el archivo actual. Luego, usted activa el Análisis de solución completa (Solution-Wide Analysis) y ReSharper descubre que hubo un problema. Al saltar al siguiente error en la solución, descubre que alguien usó este miembro desde fuera del proyecto actual.
Todo lo que necesita hacer es activar explícitamente el Análisis de solución completa y luego, una vez que analiza el código de su solución, ver la lista de errores en una ventana dedicada.
Incluso sin abrir esa ventana, puede navegar fácilmente entre los errores de su solución con los comandos Go to Next Error/Warning in Solution (Mayús+Alt+Av Pág) y Go to Previous Error/Warning in Solution (Mayús+Alt+F12).
Inmediatamente después de corregir el último error de la solución, el indicador rojo de la barra de estado se pone verde. Sin embargo, el análisis de solución completa puede ayudarle a seguir mejorando la calidad de su solución. Haga clic en Include Warningsen la vista de errores y ReSharper comenzará a supervisar las advertencias (tanto las advertencias del compilador como las detectadas por las inspecciones de ReSharper con nivel de gravedad Warning) en toda la solución.
Si vuelven a aparecer errores en su solución, las advertencias se ocultarán automáticamente para que pueda concentrarse en corregir los errores. Las advertencias se volverán a mostrar cuando todos los errores queden corregidos.
Anteriormente, intentar rastrear las secuencias de llamadas en el código podía generar muchas ventanas de Find Results y pérdida de contexto. Para solucionar este problema, ReSharper puede visualizar la secuencia completa de llamadas en una única ventana de herramienta. Esto se llama Rastreo de llamadas (Call Tracking) y le permite ver y navegar por las cadenas de llamadas de su código.
Gracias a que soporta eventos, interfaces y cierres, el Rastreo de llamadas de ReSharper es una mejora sustancial sobre la Jerarquía de llamadas (Cal Hierarchy) de Visual Studio.
Para ver una secuencia de llamadas, elija ReSharper | Inspect | Outgoing Calls o ReSharper | Inspect | Incoming Calls, o use la funcionalidad de acceso directo Inspect This.
ReSharper le permite buscar todos los problemas de calidad del código, redundancias, oportunidades de uso de lenguaje y sugerencias de mejora de código desde una única ventana de herramienta llamada Inspection Results.
Para encontrar los problemas de código en cierto ámbito, elija ReSharper | Inspect | Code Issues in Solution o ReSharper | Inspect | Code Issues in Current Project. Alternativamente, seleccione un nodo en Solution Explorer, hag clic derecho en el mismo y elija Find Code Issues.
La ventana Inspection Results (Resultados de inspección) le permite filtrar los problemas detectados, reagrupar los resultados por tipo de problema, nivel de gravedad, categoría y otras propiedades y exportar los resultados a un archivo.
El Rastreo de valores (Value Tracking) le proporciona información importante sobre el flujo de datos en su programa. En cualquier ubicación de su código fuente, puede apuntar a una variable, parámetro, campo o propiedad y pedir a ReSharper que lo inspeccione. Entonces verá cómo fluye su valor a través de su programa, vuelve a sus fuentes o sale directamente a los consumidores.
El Rastreo de valores le ayuda a determinar cómo cierto valor incorrecto pudo haber pasado a un punto dado de su programa, y a dónde podría pasar a continuación. Esto le ayuda a investigar posibles NullReferenceExceptions, comportamientos inapropiados y motivos por los que obtiene valores incorrectos.
Para ver el flujo de datos del que toma parte cierto valor, elija ReSharper | Inspect | Value Origin o ReSharper | Inspect | Value Destination, o use la funcionalidad de acceso directo Inspect This.
A veces, incluso un motor de análisis de código tan potente como el de ReSharper no cuenta con el conocimiento necesario para detectar ciertos problemas. Pro ejemplo, si un método está diseñado para nunca devolver null
y sus clientes están diseñados de forma acorde, ningún análisis de código encontrará un problema si alguien a cambiado el método de forma de que devuelva null
.
En este y muchos otros casos, el marco de trabajo JetBrains.Annotations
ayuda a detectar problemas que no se podrían inferir de otra forma. Los atributos declarados en este marco de trabajo pueden hacer que ReSharper analice el código de la forma en que usted lo necesita.
Para usar los atributos de anotaciones dentro del código de ReSharper en su código fuente, instale el correspondiente paquete NuGet. Para ello, tan solo añada la directiva using JetBrains.Annotations;
y ReSharper le ayudará a obtener el paquete automáticamente.
Inspect This (Ctrl+Mayús+Alt+A) es un acceso directo único a varias funcionalidades de ReSharper que combinan el análisis de código y la navegación, incluidas Rastreo de llamadas, Rastreo de valores, Jerarquía de tipos y Diagrama de dependencias de tipos.
Todos los acceso directo de teclado de esta página están disponibles en el mapa de teclas Visual Studio predeterminado de ReSharper. Para más información sobre los dos mapas de teclas de ReSharper, consulte la documentación de ReSharper.