Novedades en ReSharper C++

ReSharper C++ 2024.1 mejora la compatibilidad con módulos C++20 e implementa llamadas salientes en Call Tracking. Las mejoras de asistencia a la codificación incluyen mejoras en la refactorización Change Signature, la actualización de los comentarios de documentación y mucho más. Para los desarrolladores de Unreal Engine, ReSharper C++ 2024.1 es compatible con el marco de trabajo de la interfaz de usuario Slate y la finalización de rutas de activos en código C++.

Descargar

Prueba gratuita de 30 días disponible

Compatibilidad con módulos C++20

Ahora, gracias a la actualización del proceso de descubrimiento de módulos, ReSharper C++ es compatible con unidades de partición internas, que son unidades de partición de módulos que no contribuyen a la interfaz externa de un módulo. En otras palabras, son particiones de módulo sin una declaración de export module asociada.

Hemos mejorado la representación interna de los módulos C++20 exportados para facilitar las referencias transitivas a entidades importadas de otros módulos. Antes, estas entidades se volvían a exportar desde el módulo que las importaba. Esperamos que este cambio reduzca de forma significativa la huella de los módulos exportados y mejore el rendimiento en proyectos que utilicen módulos C++20.

Unreal Engine

Ahora, ReSharper C++ 2024.1 es compatible con el marco de trabajo de la interfaz de usuario Slate de Unreal Engine. Puede confiar en el formateador de código de ReSharper y en el asistente de escritura para formatear su código Slate según las convenciones de Unreal Engine. También se han actualizado funciones como Go to declaration, Find Usages y Rename para comprender la sintaxis declarativa de Slate.

La integración de ReSharper C++ con la funcionalidad Blueprint continúa y es compatible con añadir redirecciones de núcleo al renombrar una instancia UENUM, así como con la finalización de rutas de activos para nombres de recursos en código C++.

Ahora, las interfaces HLSL utilizadas para la vinculación dinámica de sombreadores son compatibles con el código de sombreadores.

Si le interesa un IDE independiente y multiplataforma para el desarrollo de Unreal Engine, considere Rider. La compatibilidad con Unreal Engine en Rider y ReSharper C++ está alineada, y puede esperar las mismas mejoras en la actualización de Rider 2024.1.

Llamadas salientes en Call Tracking

Ahora, Call Tracking de ReSharper permite navegar por las cadenas de llamadas salientes de C++, además de permitir el seguimiento de las llamadas entrantes. Para explorar las llamadas salientes, coloque el cursor sobre cualquier función y seleccione Inspect | Outgoing calls en el menú contextual. También puede pulsar Ctrl+Mayús+Alt+A para invocarlo desde el menú Inspect This.

Mejoras de Change Signature

Ahora, con Change Signature, puede cambiar fácilmente el tipo de un parámetro de función entre un puntero, una referencia o un tipo de valor. ReSharper actualizará de forma automática los usos de los parámetros dentro del cuerpo de la función y ajustará los argumentos de la función en los lugares de llamada a la función, añadiendo operadores de desreferenciación o de dirección donde sea necesario.

Ahora, al invocar Change Signature en una función que se puede usar en código dependiente, la refactorización permite verificar los cambios y confirmar qué usos deben actualizarse.

Ahora, también puede especificar argumentos predeterminados para los nuevos parámetros de función añadidos mediante Change Signature.

Otras actualizaciones importantes de Change Signature son:

  • Mejora de la gestión de plantillas de funciones variádicas.
  • Actualización correcta de los argumentos de función para las posiciones de llamada dentro de las llamadas a macros.
  • Ahora, Change Signature conserva los tipos de vector y el especificador de tipo int en los tipos unsigned int.

Comentarios de documentación

Ahora, puede personalizar el estilo de los comentarios de documentación generados sin necesidad de editar una plantilla activa. Para configurar el estilo de los comentarios de documentación, vaya a Settings | Code editing | C++ | Code generation en ReSharper.

JetBrains Grazie es el nuevo corrector gramatical y ortográfico integrado de ReSharper, introducido en ReSharper 2023.3. En la versión 2024.1, las inspecciones gramaticales con Grazie también están disponibles dentro de los comentarios de documentación de C++.

Ahora, la refactorización Change Signature mantiene los comandos @param sincronizados con la lista de parámetros de la función. Esta refactorización elimina los comandos @param para los parámetros eliminados, añade comandos para los nuevos parámetros y reorganiza los comandos existentes para que coincidan con el orden actualizado de los parámetros incluidos.

Análisis del código

Según los últimos resultados de la extensa suite de pruebas para herramientas de refactorización de C++ mantenida por Richard Thomson, ReSharper C++ sigue superando a otras herramientas al pasar el mayor número de casos de prueba. Como parte de nuestro trabajo constante para mejorar la calidad de las sugerencias de ReSharper, hemos resuelto varios problemas identificados por la suite de pruebas de Richard en ReSharper C++ 2024.1. Por ejemplo, ahora, el arreglo rápido Create constructor from usage añade un constructor de forma predeterminada cuando es necesario.

Ahora, ReSharper C++ 2024.1 sugiere eliminar los inicializadores cero idiomáticos redundantes en la inicialización agregada. Hay inspecciones nuevas que encuentran varios problemas con miembros de datos estáticos, como especificadores redundantes inline en miembros de datos static constexpr.

La limpieza de código añade nuevos elementos para eliminar los especificadores de accesibilidad redundantes y para hacer que las clases sin herederos sean final. Ahora, además de variables locales, Apply ‘auto’ style maneja variables globales y miembros de clase.

Si desea suprimir una inspección en un ámbito específico, antes podía utilizar comentarios // ReSharper disable específicos de ReSharper. Además, ReSharper C++ 2024.1 reconoce los comentarios NOLINT, NOLINTNEXTLINE y NOLINTBEGIN ... NOLINTEND que usa Clang-Tidy.

Formateo de código

ReSharper C++ 2024.1 introduce varias opciones de formato nuevas:

  • Break line after goto labels y Indent goto labels mejoran el formateo de las declaraciones etiquetadas.
  • Ajustes que controlan el ajuste de texto dentro de las enumeraciones en Arrangement of enumerations.
  • Ahora, Empty braces formatting incluye la opción Do not change.

Ahora, al utilizar una configuración .clang-format, el formateador de ReSharper respeta las opciones DisableFormat e IndentAccessModifiers. Ahora, el estilo GNU integrado con formato .clang también es compatible.

Eche un vistazo a las Novedades en ReSharper para conocer el resto de los cambios introducidos en esta versión.

Descargar

Prueba gratuita de 30 días disponible

ReSharper C++ 2023.3

AI Assistant ya ha finalizado su versión preliminar Disponible para el público general

JetBrains AI Assistant ya está disponible para todos con una serie de funcionalidades nuevas y mejoradas para aumentar su productividad. Nuestro último conjunto de mejoras incluye un mejor conocimiento del proyecto para las acciones de IA y una biblioteca de avisos.

Utilice AI Assistant en ReSharper C++ como función complementaria con una suscripción a JetBrains AI Service.

Actualizaciones de HLSL y Unreal Engine

HLSL 2021 introdujo funciones de plantilla y tipos de datos similares a los de C++. La última actualización de ReSharper C++ incorpora compatibilidad completa con plantillas HLSL.

ReSharper C++ 2023.3 introduce la compatibilidad con el tipo RayQuery integrado en HLSL y mejora la finalización de código para sugerir los indicadores correspondientes.

Una nueva inspección le ayuda a evitar caer en una de las trampas habituales de la macro de asistencia AddDynamic. Ahora recibirá una advertencia cuando una función delegada dinámica no esté marcada con la macro UFUNCTION.

Si de vez en cuanto todavía le toca escribir código rutinario, no olvide que dispone del acceso directo Alt+Insertar para generar automáticamente miembros de tipo común. En ReSharper C++ 2023.3, hemos ajustado la generación de funciones hash para que sigan las convenciones de Unreal Engine.

Si le interesa un IDE independiente y multiplataforma para el desarrollo de Unreal Engine, considere Rider. La compatibilidad con Unreal Engine en Rider y ReSharper C++ está alineada, y puede esperar las mismas mejoras en la actualización de Rider 2023.3.

Compatibilidad con C y C++

Si alguna vez necesita comprobar si algún atributo específico está disponible en la versión actual del estándar o del compilador, la comprobación de funcionalidades de C++20 está aquí para salvarle el día. Utilizando __has_cpp_attribute(operand) en las condiciones del preprocesador, puede comprobar si el compilador reconoce el atributo al que hace referencia su operando. ReSharper C++ ahora maneja correctamente __has_cpp_attribute para admitir mejor las anotaciones de atributos en las bibliotecas estándar de C++.

Hemos introducido compatibilidad con el pragma de empaquetado utilizado con la palabra clave __pragma. La sintaxis __pragma (pack) se utiliza a veces dentro de las definiciones de macros, ya que no es posible utilizar directivas #pragma dentro de una definición de macro. En casos como este, ReSharper C++ ahora calcula correctamente los tamaños de las estructuras empaquetadas para que pueda confiar en los resultados del análisis del código.

ReSharper C++ añade compatibilidad con varias funcionalidades de C:

  • El calificador de tipo C99 restrict que puede utilizarse en las declaraciones de puntero.
  • Deducción de tipo, constexpr y nullptr de C23.

También hemos introducido la compatibilidad con varios nuevos intrínsecos de clang, como __is_const(), __is_member_pointer() y otros, para que ReSharper C++ funcione mejor con código multiplataforma.

Para el desarrollo multiplataforma en C y C++, puede probar una versión preliminar del IDE independiente CLion Nova. Funciona con ReSharper C++, y su uso es totalmente gratuito en este momento; ¡solo tiene que registrarse, empezar a codificar y enviarnos sus comentarios!

Revisión gramatical y ortográfica

JetBrains Grazie se ha convertido en el nuevo corrector gramatical y ortográfico integrado de ReSharper. Grazie admite más de 20 idiomas y detecta errores del lenguaje natural dentro de los lenguajes de programación admitidos por ReSharper (C#, C++, VB.NET), lenguajes de marcado (HTML, XML, XAML) y comentarios. Para añadir otros idiomas naturales a Grazie, vaya a Options | Grammar and Spelling | General en ReSharper.

Tenga en cuenta que la comprobación gramatical no está disponible actualmente en los comentarios doxygen.

Trabajar con código inactivo

Con código específico de la plataforma o de la configuración, a menudo puede tener que editar bloques de código actualmente inactivos dentro de ramas condicionales del preprocesador. Anteriormente, la finalización de código en código inactivo solo ofrecía macros. En ReSharper C++ 2023.3, hemos mejorado la finalización de código en estos escenarios para incluir símbolos del ámbito global.

Find Usages ahora encuentra posibles usos en código inactivo y cuerpos de macros. Antes, si deseaba encontrar estos usos, tenía que utilizar Find Usages Advanced e investigar las ocurrencias textuales. Ahora los resultados de Find Usages incluyen de forma predeterminada usos potenciales en cuerpos de macros y código inactivo. Estos usos se agrupan en secciones separadas para distinguirlos de los usos en código activo.

Análisis del código

Puede utilizar atributos C++ específicos de ReSharper para que ReSharper analice su solución con mayor precisión y conocimiento. En ReSharper C++ 2023.3, hemos añadido el prefijo [[jetbrains::...]] además de [[rscpp::...]] para los atributos existentes [[jetbrains::format]], [[jetbrains::guard]] y [[jetbrains::has_side_effects]].

El nuevo atributo [[jetbrains::pass_by_value]] le permite suprimir la inspección Pass value by const reference para los parámetros de función. Obtener más información.

Hemos introducido un conjunto de inspecciones para el uso incorrecto de la palabra clave export en los módulos C++20. ReSharper C++ sugiere ahora eliminar la exportación cuando otra declaración de exportación ya encierra la declaración o cuando la declaración no forma parte de una unidad de interfaz de módulo y no puede exportarse. También obtendrá una sugerencia para mover export si intenta crear una plantilla de la declaración de exportación en lugar de exportar la declaración de la plantilla.

Hemos actualizado el binario clang-tidy incluido a Clang 17, trayendo actualizaciones de la última versión de LLVM.

Algunas comprobaciones de clang-tidy muestran más detalles además del texto de advertencia. ReSharper C++ muestra ahora estas notas adicionales en la descripción emergente.

Una nueva inspección advierte sobre el uso de literales de varios caracteres. Se admiten condicionalmente con valores definidos por la implementación y deben utilizarse con cuidado en el código portable.

ReSharper C++ sugiere ahora un arreglo rápido para eliminar los operadores condicionales redundantes y simplificar las expresiones condicionales ternarias.

Asistencia a la codificación

El menú Alt+Insertar Generate le ayuda a crear rápidamente código reutilizable. En ReSharper C++ 2023.3, hemos añadido una nueva acción a la lista, que le permite generar un destructor.

Cuando se invoque en una clase polimórfica, la acción utilizará los ajustes de estilo de sintaxis para insertar los especificadores virtual y/o override necesarios. Puede configurar el estilo del cuerpo del destructor generado en la página de opciones Code Editing | C++ | Code Generation.

Las directivas #pragma region y #pragma endregion le permiten especificar un bloque de código plegable. De forma similar a otras directivas coincidentes, ahora puede saltar entre ambas utilizando la acción Go to Declaration en una directiva #pragma o un nuevo consejo de inserción con el nombre de la región.

Además, la ventana File Structure le permite ahora plegar cómodamente las regiones y navegar hasta los bloques de código correspondientes.

En código C, void debe utilizarse en la lista de parámetros de una función para indicar que la función no toma argumentos. ReSharper C++ ahora conserva este void especial cuando invoca las refactorizaciones Extract method o Change signature, genera una definición para la función o crea una nueva función a partir de su uso.

Los consejos de inserción de referencias tienen ahora un texto [>>] separado para que pueda detectar las referencias de reenvío de un vistazo.

La nueva acción Generate inline definitions le permite generar rápidamente cuerpos para varias funciones simultáneamente. De forma similar a la ya existente Generate definitions, la nueva acción está disponible cuando se selecciona un nombre de clase o varias declaraciones de función en el editor.

Cuando invoque las refactorizaciones Introduce variable o Introduce filed en una expresión anidada, ReSharper C++ ahora le permite elegir la expresión de destino explícitamente en lugar de utilizar automáticamente la más externa.

Para mejorar la experiencia de navegación por el código, los símbolos procedentes de sustituciones de macros están ahora ocultos en Go to y en la ventana File Structure. Esto resulta útil con macros que introducen muchos símbolos auxiliares durante su expansión, como las declaraciones de casos de prueba en los marcos de pruebas de unidad más populares.

Formateo de código

ReSharper C++ 2023.3 introduce varias opciones de formato nuevas:

  • Interrumpa la línea antes de -> en los tipos de retorno finales.
  • Interrumpa la línea después de -> en los tipos de retorno finales.
  • Espacios dentro de bloques vacíos.
  • Permitir comentarios después de {.

También hemos actualizado el binario clang-format incluido a Clang 17 y hemos implementado compatibilidad con la configuración InsertNewlineAtEOF clang-format tanto al importar la configuración del formateador desde una configuración .clang-format como al utilizar clang-format en lugar del formateador incorporado.

Eche un vistazo a las Novedades en ReSharper para conocer el resto de los cambios introducidos en esta versión.

ReSharper C++ 2023.2

AI Assistant Acceso limitado

AI Assistant no se incluye con ReSharper y debe instalarse por separado. Por el momento, existe una lista de espera para acceder a la funcionalidad de AI Assistant.

Obtenga más información sobre AI Assistant y cómo instalarlo mediante Toolbox App o el instalador de dotUltimate en nuestra ayuda web.

ReSharper C++ 2023.2 incorpora el AI Assistant de ReSharper: un chat basado en IA diseñado específicamente para responder a preguntas sobre programación y ayudarle con la resolución de problemas, la refactorización, la documentación y otros flujos de trabajo de desarrollo.

El AI Assistant de ReSharper tiene en cuenta el lenguaje y las tecnologías utilizadas en su proyecto. Este conocimiento del contexto adapta sus respuestas desde el primer momento, para ahorrarle así tiempo y esfuerzo.

No dude en incluir partes del código fuente en sus consultas. ReSharper detectará el código que ha enviado o pegado en el chat y le dará el formato adecuado, mientras que el modelo de IA le explicará la lógica que hay detrás del código y le ayudará a refactorizarlo, a encontrar problemas o a documentarlo.

Compatibilidad con C++23

La instrucción if consteval es una nueva funcionalidad de evaluación de constantes en C++23 que desarrolla aún más la idea de consteval y std::is_constant_evaluated() de C++20. Si la evaluación de la instrucción if consteval tiene lugar durante la evaluación de una constante, se ejecuta la siguiente instrucción compuesta. En caso contrario, se ejecuta la rama else.

ReSharper C++ incorpora compatibilidad con if consteval e incluye un conjunto de inspecciones relacionadas:

  • consteval if es siempre constante.
  • std::is_constant_evaluated siempre evalúa a una constante.
  • if puede sustituirse por if consteval.

ReSharper C++ ahora es compatible con los módulos con nombre std y std.compat introducidos en la biblioteca estándar C++23. Si utiliza Visual Studio 17.6 o posterior, ya puede usar import std o import std.compat para importar toda la biblioteca estándar en lugar de utilizar un encabezado precompilado o incluir encabezados específicos de la biblioteca estándar.

Antes de C++23, todos los operadores debían ser funciones miembro no estáticas. Los operadores de llamada, sin embargo, se utilizan a menudo con objetos de función sin miembros, y permitir que los operadores sean estáticos en este caso puede dar lugar a un código más eficiente. C++23 permite que tanto operator() como operator[] sean estáticos.

Compatibilidad con C++20

Hemos trabajado duro para pulir la compatibilidad con módulos C++20, solucionando varios problemas secundarios en proyectos reales que utilizan módulos. Al procesar módulos internamente, ReSharper C++ implementa ahora el descarte de declaraciones que no son accesibles para otras declaraciones, lo que mejora significativamente el rendimiento en módulos que incluyen muchos encabezados en el fragmento de módulo global.

Además, hemos implementado varios cambios para dar un mejor soporte a los módulos en los proyectos CMake. ReSharper C++ reconoce ahora los archivos .cppm como interfaces de módulos e incluye compatibilidad experimental con módulos ubicados fuera de la carpeta del proyecto.

El nuevo atributo [[no_unique_address]] de C++20 indica que no es necesaria una dirección única para un miembro de datos no estático de una clase, lo que permite al compilador disponer los miembros de la clase de una forma más eficiente. ReSharper C++ ahora tiene en cuenta [[no_unique_address]] al calcular el tamaño de un objeto.

ReSharper C++ 2023.2 también implementa el informe de defectos C++20 recientemente aceptado que permite la inicialización de una matriz char o unsigned char con un literal de cadena UTF-8.

Refactorización Safe Delete

ReSharper C++ introduce la refactorización Safe Delete para permitirle eliminar símbolos de su código fuente de forma segura. Esta refactorización está disponible para clases, funciones, variables, enumeradores, espacios de nombres e incluso conceptos.

Para invocar la refactorización, sitúe el signo de intercalación sobre el símbolo que desee eliminar y pulse Alt+Supr, o seleccione Safe Delete en el menú Refactor This.

Antes de eliminar un símbolo, ReSharper C++ busca sus usos y le permite previsualizar los cambios en el código fuente, para que pueda asegurarse de que todas las eliminaciones son intencionadas. Si intenta eliminar una entidad compleja como una clase o un espacio de nombres, ReSharper C++ comprobará recursivamente los usos de todos sus miembros.

Unreal Engine

Esta versión aporta mejoras de rendimiento para la indexación de Blueprints. La primera vez que abre un proyecto, ReSharper C++ indexa todos sus activos Blueprint para potenciar funciones como Find Usages y mostrar los valores de los datos serializados directamente en el editor de texto.

Anteriormente, ReSharper C++ indexaba estos activos con la misma prioridad que su código C++, lo que significaba que se tardaba más en tener el proyecto listo para ponerse en marcha. ReSharper C++ 2023.2 indexará activos en segundo plano después de indexar su código C++ sin interferir en su trabajo.

Hemos mejorado la finalización inteligente para tipos envolventes con semántica de asignación estándar. Por ejemplo, al asignar a una variable del tipo TEnumAsByte, la finalización sugerirá enumeradores del tipo de enumeración subyacente.

Para proyectos Unreal Engine 5.1, hemos añadido la compatibilidad con la macro UE_INLINE_GENERATED_CPP_BY_NAME, que le permite integrar archivos generados en su módulo para mejorar el tiempo de compilación.

Asistencia a la codificación

Con la mejora de la finalización para código dependiente, ahora obtendrá elementos de finalización cuando el tipo esté restringido por un concepto o un rasgo. ReSharper C++ tiene ahora en cuenta los rasgos de tipo estándar std::is_same/std::is_base_of, sus alias de valor _v, los correspondientes conceptos std::same_as/std::derived_from y el rasgo TIsame de Unreal Engine.

Para obtener más sugerencias útiles de finalización de código, ReSharper C++ ahora también extrae los requisitos de tipo y valor de las cláusulas requires, if constexpr y SFINAE.

Hay dos nuevas acciones contextuales complementarias que le ayudarán a trasladar una restricción de parámetro de plantilla a la cláusula requires y a convertir una cláusula requires en una restricción de parámetro de plantilla.

Si tiene una llamada recursiva, ReSharper C++ la marcará en el medianil, haciéndola más visible.

La lista de finalización de código ahora filtra los identificadores reservados y los sugiere solo después de _. Esto significa que ya no tendrá que desplazarse por las sugerencias de las bibliotecas estándar a menos que las necesite.

ReSharper C++ 2023.1 introdujo el resaltado y formateado adecuados para la sustitución de macros en la ventana emergente Quick Documentation y las descripciones emergentes al pasar el ratón por encima. En la versión 2023.2, estas mejoras también funcionarán con las definiciones de macros y Parameter Info en la finalización de código.

Hemos mejorado el motor de evaluación para que admita la inicialización agregada de matrices constexpr.

Hemos mejorado la compatibilidad con los compiladores GCC y Clang y las bibliotecas estándar libc++/libstdc++. Esto incluye compatibilidad con más builtins como __integer_pack, __is_convertible/__is_nothrow_convertible, y actualizaciones para los admitidos anteriormente.

Cuando especifique la dirección del parámetro con el atributo [in], [in,out] o [out] del comando param de Doxygen, las descripciones emergentes ahora los obtienen de su comentario.

Análisis del código

ReSharper C++ 2023.2 añade una nueva inspección que detecta operadores de desreferenciación y operadores addres-of. Le ofrece varios arreglos rápidos para simplificar el acceso de los miembros y eliminar los operadores redundantes.

Otra nueva inspección destaca los argumentos de plantilla redundantes que coinciden con el argumento de plantilla predeterminado correspondiente y pueden omitirse.

Una nueva inspección de compatibilidad le advierte sobre las declaraciones de avance de enums estilo C sin un tipo subyacente, que están prohibidas por el estándar C++ pero aceptadas por MSVC, lo que posiblemente dé lugar a código no portable.

ReSharper C++ resalta ahora las directivas del preprocesador de diagnóstico #error y #warning según su nivel de gravedad.

También hemos actualizado el binario integrado clang-tidy a Clang 16, para que disponga de nuevas comprobaciones y arreglos.

MSVC puede utilizar el preprocesador tradicional o el nuevo preprocesador conforme al estándar en función del valor del argumento del compilador /Zc:preprocessor. ReSharper C++ lee ahora el valor de este argumento de las propiedades del proyecto y ajusta en consecuencia el comportamiento del preprocesador integrado.

Navegación

ReSharper C++ 2023.2 aporta varias mejoras a Go to declaration para una navegación por el código más coherente y directa sin pasos adicionales:

  • Cuando se invoca sobre un nombre de clase en una llamada a un constructor, Go to declaration navega ahora al constructor en lugar de a la clase contenedora.
  • Go to declaration ahora navega a la primera typedef o declaración de alias de tipo en lugar de mostrar el menú con todas las declaraciones.
  • Go to declaration en un nombre de módulo salta entre las unidades de interfaz y de implementación del mismo módulo.
  • Go to declaration en una carpeta en una ruta #include abre la carpeta.

Además, Type of symbol está ahora disponible en los símbolos no declaradores. El funcionamiento en este caso es similar al de Go to declaration.

Ayuda a la escritura y al formato

Al generar comentarios de documentación, ReSharper C++ ajustará ahora la plantilla de documentación según el estilo de comentario del editor. Para /**, la ayuda a la escritura generará el comentario en el estilo /** */, y para ///, el comentario será en el estilo ///.

Esta versión aporta varias mejoras al formato de los miembros del campo de bits. Las opciones para alinear inicializadores y nombres de declaración en columnas ahora admiten campos de bits. También hay dos nuevos ajustes de formato para los espacios antes y después de los dos puntos en las declaraciones de campos de bits y para la alineación de los tamaños de los campos de bits en las columnas.

Una nueva opción de ayuda a la escritura le permite desactivar la generación de comentarios de documentación para evitar conflictos con el generador integrado de Visual Studio (ReSharper | Options | Environment | Editor | Behavior | C++, C, HLSL | Generate documentation comments).

También hemos actualizado el binario clang-format incluido y arreglado el motor clang-format para evitar que elimine la nueva línea al final de un archivo.

Eche un vistazo a las Novedades en ReSharper para conocer el resto de los cambios introducidos en esta versión. Por ejemplo, ReSharper introduce el depurador predictivo, que prevé todos los posibles estados desencadenados por la ejecución de un programa sin tener que ejecutarlo realmente.