Funcionalidades de ReSharper C++

ReSharper C++ hace que Visual Studio sea un mejor IDE para los desarrolladores de C++, proporcionando análisis de código sobre la marcha, arreglos rápidos, una potente búsqueda y navegación, finalización de código inteligente, refactorizaciones, una variedad de opciones de generación de código y otras funcionalidades para ayudar a aumentar su productividad diaria.

Análisis de código

ReSharper C++ comienza a analizar el código en cuanto usted abre su proyecto en el editor de Visual Studio, y continúa analizando los archivos nuevamente a medida que usted los edita, detectando errores y posibles problemas incluso antes de que los compile.

Arreglos rápidos

Hay disponibles más de 40 arreglos rápidos para resolver muchas de las incidencias de código detectadas instantáneamente. Siempre que vea una bombilla a la izquierda de su código, presione Alt+Intro para aplicar un arreglo rápido sugerido.

Por ejemplo, cuando se detecta una variable sin inicializar, puede inicializarla inmediatamente con el valor predeterminado. Otros arreglos rápidos le permiten agregar las directivas de #include que faltan, o eliminar calificadores redundantes en una declaración en particular, o en un ámbito más amplio como un archivo o incluso la solución completa.

Generar código a partir del uso en ReSharper C++

Crear a partir del uso

Otro beneficio de los arreglos rápidos es que puede comenzar a utilizar clases, métodos, variables, propiedades y campos antes de declararlos. Cuando ReSharper C ++ detecta un símbolo no declarado, sugiere arreglos rápidos para generar la declaración de símbolo correspondiente en función de su uso.

Buscar incidencias de código

Buscar incidencias de código

Puede decirle a ReSharper C++ que muestre todas las incidencias de código que detecta en cualquier ámbito, como un archivo, proyecto o solución, en una ventana de herramientas específica.

Buscar incidencias de código funciona en segundo plano, lo que le permite seguir editando o navegar por su código mientras ReSharper C++ ejecuta su análisis y devuelve los Resultados de la Inspección en la ventana de herramientas.

Tan pronto como los resultados estén listos, puede agruparlos por varios criterios y realizar una búsqueda para encontrar tipos específicos de incidencias. También puede guardar y cargar informes de los resultados de la Búsqueda de incidencias de código.

Análisis de código de C++ desde la línea de comando

Análisis de código de C++ desde la línea de comando

Las inspecciones de código de ReSharper C++ también están disponibles a través de InspectCode, una herramienta gratuita de línea de comando que permite ejecutar inspecciones ReSharper fuera de Visual Studio.

Para utilizar InspectCode, descargue y descomprima el paquete de herramientas de línea de comando y ejecute InspectCode.exe con su archivo de solución como parámetro. Más información sobre la utilización de InspectCode, en este artículo.

Configuración de Clang-Tidy

Clang-Tidy

ReSharper C++ se integra a la perfección con Clang-Tidy, una potente herramienta de análisis de código de código abierto basada en el compilador Clang. La integración proporciona verificaciones de código y los arreglos rápidos.

Estilo de sintaxis

ReSharper C++ incluye una serie de ajustes de estilo de sintaxis que puede utilizar para hacer que ReSharper siga el código de su elección y lo aplique en toda la base de código.

Estilo de sintaxis

Puede personalizar sus preferencias en la página Code Editing | C++ | Syntax Style. Las opciones seleccionadas se utilizarán tanto para la generación de código como para la aplicación del estilo de código.

Arreglo rápido

ReSharper C++ will highlight style violations and offer you quick-fixes to help eliminate them. Todos los arreglos rápidos de estilo de sintaxis podrán aplicarse en el ámbito, incluyendo ámbitos locales como cuerpos de función o definiciones de clases.

Aplicar estilo de sintaxis

Para aplicar el estilo de sintaxis seleccionado, puede utilizar la limpieza de código o la acción específica Apply Syntax Style, que solucionará los problemas de estilo de sintaxis en la selección, en el archivo actual al completo, o en un conjunto de archivos, dependiendo del contexto actual.

Refactorización

ReSharper C++ proporciona varias refactorizaciones generales a gran escala, como Cambiar nombre, Extraer método y Cambiar firma. Además, proporciona docenas de acciones de contexto, que son transformaciones locales de código disponibles con un solo acceso directo.

Renombrar refactorización en ReSharper C++

Rename (Cambiar nombre)

La modificación del nombre de una clase o macro puede causar muchos problemas cuando se realiza manualmente. Por eso, cuando invoca la refactorización Rename, ReSharper C++ se encarga de todas las comprobaciones necesarias.

Todas las modificaciones se realizan automáticamente o, en su defecto, se muestra una lista de conflictos que puede resolver manualmente para asegurarse de que solo se realizan los cambios necesarios y apropiados.

Junto con los símbolos de código reales a los que lo aplica, la refactorización Rename puede renombrar los archivos relacionados (tanto el archivo de origen como el de encabezado) y el texto asociado en comentarios y documentación, así como actualizar los usos en las directivas de #include.

Refactorización de Extraer Método en ReSharper C++

Extract Method (Extraer método)

La refactorización de Extract Method le ayuda a crear un nuevo método basado en un fragmento de código seleccionado. ReSharper analiza el bloque de código seleccionado y detecta variables que se pueden convertir en parámetros de método o representan su valor de retorno.

Refactorización de Cambiar Firma en C++

Change Signature

La refactorización Change Signature le permite aplicar uno o más cambios a la firma de una función. Todos los usos, implementaciones y anulaciones de la función se actualizarán en consecuencia.

Refactorización de Variable Inline en C++

Introducir variable y variable inline

La refactorización Introduce Variable le permite crear una nueva variable local basada en una expresión seleccionada, inicializarla con la expresión y, finalmente, reemplazar todas las apariciones de la expresión en el código con referencias a la variable recién introducida.

Inline Variable, a la inversa, reemplaza todas las apariciones de una variable o constante local dada con su inicializador.

Refactorización de Introducir Campos en ReSharper C++

Introduce Field (Introducir campo)

La refactorización Introduce Field ayuda a crear un nuevo campo basado en una expresión seleccionada, asigna la expresión original al campo en su propio inicializador o en el constructor, y reemplaza los casos donde aparece.

Introducir Alias de espacios de nombres

La refactorización Introducir Alias de espacios de nombres ayuda a definir nombres de accesos directos para espacios de nombres profundamente anidados.

Tan pronto como invoque la refactorización, recibirá sugerencias para definir un ámbito para el que desea introducir un alias de espacios de nombres.

Introducir refactorización typedef y Inline typedef en ReSharper C++

Introducir typedef e Inline typedef

La refactorización Introduce typedef le permite crear rápidamente un typedef para el tipo de datos seleccionado y reemplazar este tipo de datos y todas sus apariciones con el typedef recién creado.

La refactorización Inline typedef hace a la inversa: reemplaza una typedef existente con el tipo de datos actuales.

Acciones contextuales

Además de refactorizaciones, ReSharper C++ proporciona un conjunto de acciones de contexto: transformaciones de código local que generalmente ayudan a cambiar entre las opciones de sintaxis alternativas. Al igual que los arreglos rápidos, están disponibles presionando Alt+Intro.

Puede por ejemplo, reemplazar rápidamente auto por tipo explícito o reemplazar tipo por auto. Otras acciones de contexto ayudan a fusionar las declaraciones anidadas if, generar declaraciones de case faltantes al cambiar una enum, sustituir un llamado a macro o typedef etc.

Asistencia a la codificación

ReSharper C++ amplía las formas de Visual Studio de resaltar la sintaxis y las partes estructurales de código, proporciona su propia implementación de finalización de código y ayuda a visualizar la documentación disponible para cualquier símbolo de C++.

Resaltado automático para puntos de salida

Resaltado de sintaxis y estructura

ReSharper C++ reconoce archivos *.c, *.cc, *.cxx, *.cpp, *.h, y *.hpp en su solución, y resalta el código fuente en estos archivos de acuerdo con un esquema de color que usted puede modificar cuando lo desee.

Además, ReSharper C++ resalta varios elementos coincidentes cuando coloca el signo de intercalación en un elemento de un par, ya sean delimitadores coincidentes, macros o un especificador de formato y argumento en un llamado a la función printf.

Cuando coloca el signo de intercalación en uno de los puntos de salida de una función, un bucle o una declaración switch (return, throw, break etc.), ReSharper C++ resaltará ahora automáticamente todas las demás salidas de funciones o bucles.

Autocompletado para símbolos de C++ no incluidos en el archivo actual

Finalización de código

En archivos C++, puede utilizar finalización de código al escribir su código, que a veces sugiere opciones de generación de código, entre otras opciones.

La finalización del código puede incluso sugerir símbolos que aún no están incluidos en el archivo actual. Cuando selecciona un símbolo como este en la lista de finalización, la directiva #include correspondiente se agrega automáticamente.

Resumen de documentación

La ventana emergente Documentación Rápida muestra la documentación basada en bloques de comentarios de Doxygen sin obligarle a navegar a la definición de un símbolo: simplemente presione Ctrl+Mayús+F1 en el mapa de teclas predeterminado.

Incluso si no hay documentación de Doxygen disponible para un símbolo, Documentación Rápida mostrará la firma del símbolo.

ReSharper C++ también puede mostrar completas descripciones emergentes con resaltado de sintaxis para elementos de código de C++. La descripción emergente mostrará funciones y tipos de variables, así como documentación.

Los comentarios de documentación XML C#-style, también se utilizan a veces para los símbolos de C++. ReSharper C++ los muestra correctamente en la ventana emergente Documentación Rápida y en la descripción emergente de información rápida.

C++/CLI

Compatibilidad con C++/CLI

C++/CLI es un conjunto de extensiones del lenguaje C++ de Microsoft para facilitar la interoperabilidad entre el código generado y el nativo. Con una amplia compatibilidad para lenguajes generados y C++, es natural que ReSharper también proporcione ayuda para escribir código en C++/CLI.

Dentro del código C++/CLI, usted puede acceder a las mismas refactorizaciones y acciones de intención que en el código C++ puro. También tiene la capacidad de navegar entre C# y C +/CLI.

Con ReSharper C++, le resultará mucho más fácil navegar en el código fuente. Realice búsquedas de declaraciones, miembros, llamadas a métodos o miembros de una jerarquía de heredada con accesos directos.

Menú Navigate To en ReSharper C++

Navegación contextual

Para todos los símbolos que tienen declaraciones y definiciones separadas, ReSharper C++ muestra el icono Navigate to declaración/definición a la izquierda (Navigate to declaration/definition icon in ReSharper C++). Haga clic en el icono o presione Ctrl+B para cambiar rápidamente entre la declaración y la definición correspondiente.

Otras opciones de navegación sensibles al contexto en ReSharper C++ son la navegación desde un símbolo seleccionado a sus usos, base o símbolos derivados.

Navegación insensible al contexto en ReSharper C++

Ir a todo

ReSharper C++ proporciona un conjunto de comandos de navegación insensibles al contexto, como Go to File, Go to Symbol, Go to File Member y Go to Everything.

Todos estos comandos admiten la búsqueda basada en lowerCamelCase y el filtrado por ruta. Por ejemplo, al introducir fc movie en Go to Everything, una ventana emergente muestra la lista de archivos y miembros de archivos que tienen la cadena movie en sus nombres y que pertenecen al proyecto FollowerC o a FollowerConstants (ambos coincidentes con fc).

Visualizar jerarquías

ReSharper C++ puede proporcionar una descripción general de la jerarquía heredada que forma parte de cualquier tipo determinado. Puede ver los tipos base y los herederos del tipo seleccionado y navegar a cualquiera de ellos con un solo clic.

Además, ReSharper C++ viene con una vista de jerarquía que sirve para visualizar y ayudar a descubrir las dependencias introducidas mediante las directivas #include.

Buscar usos de un símbolo con ReSharper C++

Buscar usos

Utilice Find Usages para buscar todas las referencias de un símbolo específico en el código C++ de su solución.

Tan pronto como se completa la búsqueda, las incidencias encontradas se muestran en una ventana de herramientas con opciones de agrupación y filtrado, así como un panel de vista previa.

Estructura de Archivo en C++

Estructura de Archivo

Con ReSharper C++, puede ver la estructura del documento actual utilizando la ventana File Structure, que simplifica enormemente la navegación en archivos grandes.

Cuando cambia a otra pestaña del editor, la ventana de herramientas muestra la estructura del archivo correspondiente.

To-do Explorer en ReSharper C++

Explorador de Pendientes

La ventana de herramientas To-do Explorer le permite ver, agrupar y filtrar comentarios que contienen uno de los 3 patrones de tareas por defecto (Error, Todo y No implementado) y cualquier patrón personalizado que desee configurar.

Si utiliza la licencia completa de ReSharper Ultimate y tiene una solución multilingüe, To-do Explorer reunirá elementos de tareas a realizar de todos los idiomas compatibles: C#, VB.NET, C++, JavaScript, XAML, HTML etc.

Generación de código

ReSharper C++ proporciona varias formas de generar código reutilizable. Además de declarar y definir símbolos en función de sus usos existentes, puede crear miembros de tipo, bloques de código envolventes y cualquier fragmento de código que necesite comúnmente en su base de código.

Ventana emergente de generación de código en ReSharper C++

Generar código común

ReSharper C++ proporciona una forma rápida de generar miembros faltantes, anular miembros, operadores de igualdad o relacionales, definiciones basadas en declaraciones existentes, funciones hash y swap y constructores.

Simplemente presione Alt+Ins en el editor de texto para invocar el menú Generar y ver todas las opciones disponibles.

Plantillas envolventes en ReSharper C++

Plantillas de código y archivo

ReSharper C++ viene con 29 plantillas personalizables. Algunas de ellas son fragmentos de código normales, otras se utilizan específicamente para envolver las selecciones de código.

También puede utilizar y crear plantillas de archivos. Presionar Ctrl+Alt+Ins le ayuda a agregar una clase al proyecto en el que está trabajando.

Asistencia de estilo de código

Con ReSharper C++, el formateador de código aprende de su código existente, y sus preferencias de formato y estilo de código pueden ser compartidas con los miembros de su equipo.

Asistencia de estilo de código en ReSharperC++

Formateador de código

ReSharper C++ le permite configurar y aplicar las reglas de formato de código que prefiere utilizar cuando trabaja en una solución específica.

Como una alternativa a explorar todas las opciones de formato de código disponibles, puede seleccionar un bloque de código y configurar solo aquellos que son aplicables a este bloque en particular.

Configuraciones de estilo de código para el inicializador del puntero predeterminado

Configuraciones de estilo de código

Para garantizar un estilo de código coherente en todo el equipo, puede guardar sus preferencias de formato y nomenclatura en un archivo de configuración y compartirlo entre sus compañeros de equipo.

ReSharper C++ también le permite definir otras partes de un estándar de codificación de equipo, como el orden de los modificadores y el valor preferido para los inicializadores de puntero. Por ejemplo, puede especificar 0, nullptr o NULL como el estilo de inicializador preferido, y ReSharper C++ respetará su elección cuando genere nuevos Inicializadores para usted.

Utilice ReSharper Options | Code Editing | C++ | Naming Style para seleccionar uno de los estilos de nomenclatura predeterminados de C++: STL, Google, LLVM, CamelCase, o Microsoft.

Detección estilo de código

Detectar configuraciones de formato

A menudo es mucho más fácil personalizar las configuraciones de formato detectándolas simplemente desde el código existente. Utilice ReSharper | Editar | Detectar el menú de configuración de formato para que ReSharper detecte la configuración de formateo de código. Se abrirá la ventana de herramientas con los valores detectados, que se pueden revisar y aplicar a la configuración de ReSharper en su máquina. O bien, puede guardarlos en una capa de configuración compartida por el equipo para que otros desarrolladores de su equipo tengan la misma configuración de formato de código cuando abran la solución actual.

Más información

Pruebas de unidades

Un programa de prueba de unidad integrado en Visual Studio es compatible con los marcos de trabajo Google Test, Boost.Test, Catch y Doctest.

Ejecutor de pruebas de unidad

ReSharper C++ viene con un ejecutor de pruebas de unidad en Visual Studio que es compatible con los marcos de trabajo Google Test, Boost.Test, Catch y Doctest.

Puede ejecutar y depurar pruebas de unidad, así como agregar pruebas a diferentes sesiones directamente desde el editor de texto a través de Alt+Intro en el menú contextual.

ReSharper C++ proporciona las ventanas de herramientas Unit Test Explorer y Unit Test Sessions para ver, agrupar, filtrar y ejecutar pruebas de unidad, así como para crear y administrar sesiones de prueba de unidad.

Unreal Engine

Si está creando juegos basados ​​en Unreal Engine, aproveche la compatibilidad específica con Unreal Engine en ReSharper C++.

Convención de nomenclatura de UE

Convención de nomenclatura de UE

ReSharper C++ se adapta a la convención de nomenclatura de UE en todas sus acciones, incluidas las refactorizaciones Introduce Variable y Rename, generación de código para getters y setters, y muchas otras. También controla la nomenclatura que utiliza en su base de código. Resalta cualquier incoherencia con la convención de nomenclatura de UE ejecutando inspecciones de nomenclatura incoherente de UE.

Más información

Análisis UE

Análisis del código UE

También hay disponibles algunas comprobaciones del análisis del código para código basado en UE, que se centran especialmente en las macros de reflexión de UE que faltan o que están mal establecidas:

  • La declaración UCLASS debe heredar públicamente UObject o una clase derivada de este.
  • La clase marcada por UCLASS debe heredar solamente una clase derivada de UObject o heredar directamente UObject.
  • UCLASS debe ser una clase/USTRUCT debe ser una estructura.
  • UInterface debe estar vacío.
  • Falta la llamada a macro UCLASS/UINTERFACE/USTRUCT en la clase/interfaz/declaración de estructura UE.
  • Las clases UE no pueden declararse dentro de otra clase.
  • La llamada a macro UPROPERTY/UFUNCTION antes de una declaración no tiene efecto.
  • Los objetos almacenados en miembros que no sean UPROPERTY pueden considerarse basura en cualquier momento.
UnrealHeaderTool

UnrealHeaderTool

ReSharper C++ proporciona una integración perfecta con UnrealHeaderTool para que pueda detectar más incidencias con los metadatos de clase de Unreal Engine desde el editor. Al trabajar con un proyecto de Unreal Engine, ReSharper C++ ejecutará de forma automática UnrealHeaderTool en el archivo que está editando y mostrará los errores o avisos que haya, como ocurre con otras inspecciones. Vea la integración de UnrealHeaderTool en acción.

Finalización de especificadores de reflexión UE

Finalización de código para especificadores de reflexión

Para ayudarle a trabajar fácilmente con los macros de reflexión de Unreal Engine, ReSharper C++ proporciona finalización para especificadores de reflexión dentro de los macros de reflexión.

Documentación de especificadores de reflexión de UE

Documentación de código para especificadores de reflexión

La documentación sobre especificadores de reflexión de UE integrada se muestra en la ventana emergente Quick Documentation (Ctrl+Q) si el signo de intercalación está ubicado en un especificador.

Navegación RPC

Compatibilidad con llamadas a procedimientos remotos UE

ReSharper C++ identifica RPCs por palabra clave Client, Server, o NetMulticast en el argumento de la declaración UFUNCTION . Para tales funciones, ReSharper C ++ es consciente de que se debe generar una función _Implementation, así como una función _Validate si WithValidation está establecido. Y puede generar ambos si ambos faltan, o uno solo si solo falta uno.

Al navegar hacia una definición, ambas funciones (_Validate y _Implementation) serán sugeridas. Alternativamente, estas opciones también están disponibles en el menú Alt+Intro, como "Funciones relacionadas con UE".

Más información

Comprobaciones de encabezado generadas por UE

Importación automática y los encabezados generados

Cuando utiliza un símbolo que no está disponible en el ámbito actual, ReSharper C++ lo resalta en rojo y le sugiere agregar el #include faltante, si esto es posible. Cuando el #include falta en un archivo de encabezado, este se insertará antes de .generated.h, y debería ser el último en la lista de includes. El #include colocado incorrectamente es resaltado por la inspección correspondiente.

La refactorización Rename en los proyectos de Unreal Engine actualiza la directiva include .generated.h y los archivos relacionados con los prefijos A, F, E, T, S y U.

Generación de código UE

Generación de código

La plantilla de postfix “new” para las UCLASS se amplía a una llamada a función de factory adecuada (que registrará el objeto creado en el recolector de basura). Las plantillas activas con los nombres correspondientes están disponibles para ayudarle a generar rápidamente USTRUCT/UCLASS/UENUM/UENUMCLASS.

Archivos USF

Archivos USF

Los archivos USF de Unreal Engine se basan en HLSL y contienen el código Shader multiplataforma. Estos archivos suelen incluir rutas a archivos virtuales, y ReSharper C++ puede trabajar con ellos y admite todas las acciones habituales.

HLSL

GDK SpatialOS

El kit de desarrollo de juegos SpatialOS es una bifurcación de Unreal Engine 4 que le ayuda a ejecutar y gestionar juegos en línea en la nube. ReSharper C++ reconoce CrossServer, SpatialType, NonSpatialType y otros especificadores de SpatialOS. Más información.

HLSL

HLSL

ReSharper C++ proporciona compatibilidad inicial con HLSL, el lenguaje de sombreado de alto nivel. ReSharper C++ resalta el código HLSL según su esquema de color predeterminado y muestra consejos de inserciones y descripciones emergentes para los elementos de código con información de tipo y la documentación. También puede buscar y navegar rápidamente a structs, funciones o parámetros en toda la solución, archivos referenciados y bibliotecas estándar. Y para perfeccionar la experiencia HLSL, ReSharper C++ le ofrece una finalización de código inteligente, delimitadores coincidentes de inserción automática, etc.

HLSL

Todas las funciones del análisis del flujo de control de ReSharper llegan a los archivos shader de HLSL, entre las que se incluyen advertencias sobre código no alcanzable, variables no inicializadas, saltos de flujo de control redundantes o ramas condicionales.

Descargar

Prueba gratuita de 30 días disponible