Novedades de ReSharper C++ 2023.3

ReSharper C++ 2023.3 incorpora un nuevo corrector gramatical y ortográfico incorporado, finalización de código y Find Usages para código inactivo, actualizaciones para C, C++, compatibilidad con HLSL y mucho más. El lanzamiento de ReSharper C++ 2023.3 también se ve reforzado por una importante actualización de JetBrains AI Assistant.

Descargar

Prueba gratuita de 30 días disponible

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 un acceso anticipado al 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. 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.

Descargar

Prueba gratuita de 30 días disponible