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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
.
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.
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.
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.
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.
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.
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.
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.
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++.
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.
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.
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 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.
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 (). 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.
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
).
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
.
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.
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.
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, Todo1 > 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.
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.
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.
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.
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.
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.
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.
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.
Un programa de prueba de unidad integrado en Visual Studio es compatible con los marcos de trabajo Google Test, Boost.Test, Catch y Doctest.
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.
Si está creando juegos basados en Unreal Engine, aproveche la compatibilidad específica con Unreal Engine en ReSharper C++.
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.
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:
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.
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.
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.
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".
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
.
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
.
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.
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.
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.
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.
Prueba gratuita de 30 días disponible