¡El lanzamiento final de este año es CLion 2020.3! Con nuevas funciones en el depurador, MISRA verifica y mejora Qt

¡Hola, Habr!



A medida que el año se acerca a su fin, en JetBrains estamos lanzando los lanzamientos tradicionales del “tren de vapor” para nuestras herramientas de escritorio. Ya hemos escrito sobre algunos de ellos ( WebStorm , DataGrip ) aquí en Habré. ¡Y hoy es el momento de informarle sobre la actualización de nuestro entorno de desarrollo multiplataforma en C y C ++ - CLion 2020.3!



Versión de CLion 2020.3



Brevemente sobre los más importantes:



  • El depurador ahora tiene la capacidad de examinar volcados de memoria y ejecutar la configuración con privilegios de administrador. Y ahora puede mover el punto de ejecución a través del código en cualquier dirección durante una sesión de depuración.

  • CTest — , CMake.

  • Qt Qt- UI, , Qt .

  • , Makefile, CLion. CMake CMake.

  • MISRA C 2012 MISRA C ++ 2008.

  • Además de muchas otras mejoras para las configuraciones de lanzamiento y depuración, soporte para sistemas de control de versiones y para el modo de desarrollo remoto. Varias mejoras agradables en la interfaz de usuario. Y… la tan esperada vista previa del nuevo desarrollo colaborativo y servicio de programación en pareja.



La nueva versión se puede descargar del sitio web y probar de forma gratuita durante 30 días. Si tiene una suscripción activa a CLion o All Products Pack, simplemente actualice la versión a 2020.3. Como recordatorio, cuando compre una suscripción anual para cualquier producto, recibirá una licencia perpetua de respaldo .



Ahora hablemos de las innovaciones y mejoras de la versión 2020.3 con más detalle.



Depurador



La versión 2020.3 marca un hito importante en el desarrollo de integraciones de depuradores en CLion. ¡Y esto no es casualidad, porque esta integración no es utilizada por uno, sino por varios productos de la empresa! CLion, un complemento IntelliJ Rust y una vista previa del entorno de desarrollo de juegos Rider for Unreal Engine . Juntos, pudimos implementar muchas características nuevas importantes en el depurador.



Depurar con volcados de memoria



El proceso terminó anormalmente, en otras palabras, ¿cayó, dejando atrás un volcado de memoria? Nueva acción de ejecución | Open Core Dump, disponible para Linux y macOS, le permitirá abrir un volcado de memoria de un proceso caído en CLion para una mayor depuración:



Volcado de núcleo abierto



en el cuadro de diálogo debe especificar la ruta al volcado de memoria, la ruta al archivo con símbolos de depuración (por ejemplo, el archivo ejecutable del programa es adecuado si el ensamblaje estaba habilitado en modo de depuración), coincidencia de ruta (si el archivo ejecutable se creó en una máquina diferente). Luego, CLion creará una configuración para depurar este volcado de memoria que puede ejecutar.



El cuadro de diálogo puede mostrar una lista de configuraciones ya creadas. Las configuraciones también se pueden crear manualmente desde Ejecutar | Editar configuraciones. Durante la depuración con un volcado de memoria, puede analizar información sobre marcos, examinar valores de variables, ver el estado de la memoria y el código de ensamblaje, evaluar expresiones y ejecutar comandos desde la consola del depurador. Al mismo tiempo, por razones obvias, la depuración paso a paso está deshabilitada y la ventana de salida del proceso no está disponible.



Volcado del núcleo de depuración



Entre las limitaciones actuales, además de la indisponibilidad de la nueva función en la plataforma Windows, cabe señalar que en el caso de LLDB, el archivo con símbolos de depuración aún no se utiliza. Y las posibilidades de depurar los volcados recopilados en otra máquina y la depuración remota de los volcados son muy limitadas ( CPP-22736 , CPP-22656).



Ejecutar y depurar con privilegios de administrador



Apareció una nueva casilla de verificación en las configuraciones de inicio y depuración de esta versión, para iniciar la configuración con privilegios de administrador. La personalización es compatible con muchos tipos de configuraciones: CMake, Makefile, Gradle Native, Custom Build, CTest.



Para usar la nueva función de manera más conveniente en la práctica, hemos escrito un demonio especial que le solicita que permanezca conectado como administrador cuando ejecute dichas configuraciones durante un período de tiempo seleccionado:



Configuración de elevación



Lea más sobre cómo funciona esta nueva función aquí (en inglés).



Establecer el punto de ejecución



Los usuarios de Visual Studio pueden estar familiarizados con una función útil, como cambiar el punto de ejecución durante una sesión de depuración. Para todos los demás: imagine que desea omitir la ejecución de un ciclo completo, cambiar la rama de una declaración condicional, retroceder algunos pasos en el flujo de ejecución del programa durante una sesión de depuración. Ahora, CLion tiene una nueva acción Establecer punto de ejecución en Cursor para esto , o puede reorganizar manualmente la flecha amarilla en la línea deseada directamente en el editor:



Establecer punto de ejecución



Hagamos una reserva de que tal acción puede romper el programa (por ejemplo, si pierde el comando para inicializar una variable). Pero si se usa hábilmente, le permitirá depurar su aplicación de manera muy eficiente.



Consejos interactivos



Prácticamente todos nuestros IDE basados ​​en IntelliJ en la versión 2020.3 tienen consejos interactivos y relojes integrados. Incluso antes de 2020.3, durante una sesión de depuración, podía ver los valores de las variables directamente en el editor. Ahora, estos consejos se han vuelto interactivos: puede expandir la variable y ver el valor de todos sus campos:



Sugerencias interactivas



también puede agregar una expresión arbitraria para contar y ver directamente en el editor (junto a la línea de código requerida). Esto resulta ser más conveniente que los relojes ordinarios (que se muestran constantemente en la ventana del depurador) cuando las variables utilizadas en la expresión tienen significado solo en un lugar específico del código (por ejemplo, variables locales).



¿Quiere ver las nuevas funciones en acción? Pruébelo usted mismo o vea este video de nuestro abogado desarrollador:





Examen de la unidad



En términos de marcos de prueba unitarios, CLion es compatible con Google Test, Catch (2), Boost.Test y doctest. En nuestra Encuesta de ecosistemas de desarrollo de 2020, el 31% de los desarrolladores de C ++ utilizan Google Test. Por lo tanto, nos tomamos el tiempo para mejorar la presentación de los resultados de la ejecución de pruebas de Google en CLion:



  • Aprendimos cómo construir un árbol de prueba de inmediato, incluso antes de que se ejecuten todas las pruebas.

  • Comenzó a mostrar los valores de los parámetros de prueba (para pruebas parametrizadas).

  • Se introdujo un icono especial para marcar las pruebas DESHABILITADAS en el árbol.

  • Y lo más importante, aceleraron significativamente el proceso de búsqueda de pruebas en el proyecto.



Gt ejecutar



Nuestros usuarios (en particular, aquí en Habré) solicitaron activamente agregar soporte para CTest, un corredor de prueba que viene con el modelo de proyecto CMake. Esto no fue muy fácil, ya que CTest es en sí mismo una herramienta de lanzamiento, y no solo otro marco, y por lo tanto no encajaba bien en la API existente. ¡Pero finalmente lo logramos! CLion ahora encuentra automáticamente las pruebas de CTest en el proyecto, crea configuraciones de lanzamiento y depuración para ellas y crea un árbol que muestra los resultados de las pruebas. Incluso puede depurar sus pruebas; esto hará que CLion ejecute la prueba, no el proceso ctest.



En cuanto a las limitaciones, vale la pena señalar que CLion es compatible con CTest 3.14 y superior. Además, si un bloque de prueba de un marco ya compatible (Google Test, Catch (2), Boost.Test y doctest) se ejecuta como prueba CTest, dicho bloque tendrá una entrada en el árbol de resultados (es decir, corresponde a una prueba).



Un video tradicional de Phil Nash sobre las mejoras para las pruebas unitarias:





Proyectos Qt



Vemos que CLion a menudo escribe proyectos utilizando el marco Qt. Y, aunque no planeamos crear nuestro propio diseñador de interfaz ni admitir el modelo de proyecto qmake, decidimos hacer algo para mejorar la experiencia del usuario en CLion en esta dirección.



Plantillas de proyectos y clases de IU



El cuadro de diálogo para crear un nuevo proyecto ahora ofrece dos tipos nuevos: Qt Console Executable y Qt Widgets Executable:



Nuevo proyecto Qt



especifique los valores requeridos: CLion crea un proyecto CMake inicial del tipo seleccionado, ¡y ahora el widget o la aplicación de consola más simple está en su bolsillo! Por cierto, hablando de CMake y Qt, Qt6 sugiere instalar algunas bibliotecas a través de Conan (CLion también tiene un complemento correspondiente ) y construirlas a través de CMake y Ninja. ¿No hay alguna razón para probar CLion para el desarrollo de Qt?



Por cierto, al agregar una nueva clase Qt UI, CLion puede crear tres archivos a la vez ( .uiy archivos de clase). Para hacer esto, seleccione la acción Clase QT UI en el menú Agregar nuevo archivo.



Trabajando con Qt Code



El código Qt es generalmente código C ++ normal, pero tiene sus propias peculiaridades. Por ejemplo, Qt tiene cierto estilo para importar archivos de encabezado. Por ejemplo, se puede habilitar correctamente QtCore/qurl.h



, pero sería más correcto usarlo QUrl



. El estilo ahora es compatible durante la importación automática en CLion: la



Autoimportación de Qt



función de finalización de código ahora entiende cuándo es necesario ofrecer variantes de señales solo o solo ranuras para las entidades Qt principales:



Terminación de Qt



esto es conveniente, ya que la lista desplegable muestra solo las variantes que se ajustan al significado, y no todas las que coinciden por caracteres escritos.



¿Qué característica de Qt le falta personalmente en CLion? ¡Escribe en los comentarios!



Modelos de diseño en CLion



Gradualmente estamos agregando soporte para más y más tipos de proyectos usando Makefile en CLion (mantenemos una lista de proyectos probados aquí ). En el comunicado de 2.020,3, apoyamos proyectos que utilizan los ccache , libtool , DOLT , slibtool y herramientas jlibtool... Estos son proyectos ZFS, PHP, Mono, Curl y otros. Las configuraciones de ejecución y depuración para destinos del Makefile de nivel superior se generan automáticamente. Además, para los proyectos Makefile, fue posible volver a compilar un archivo separado sin tener que reconstruir el proyecto completo (en el diseño predeterminado: Ctrl + Shift + F9 en Windows / Linux y ⇧⌘F9 en macOS).



Para proyectos de CMakeahora puede deshabilitar los perfiles de CMake temporalmente no utilizados. Esto es especialmente útil si el proyecto tiene varios perfiles configurados a la vez para el desarrollo remoto (algunos de ellos pueden estar deshabilitados temporalmente) o para varias cadenas de herramientas (tampoco siempre se usan todos juntos). Cuando estos perfiles están desactivados, el tiempo de carga del proyecto se reduce notablemente. Anteriormente, para esto, los perfiles tenían que eliminarse, pero ahora simplemente puede desactivarlos. Esto se puede hacer desde la configuración del perfil en Configuración / Preferencias | Construcción, ejecución, implementación | CMake o desde el cuadro de diálogo de descarga de CMake:



Deshabilitar / habilitar perfiles de CMake



para obtener más información sobre las mejoras para los proyectos Qt y en los modelos de proyectos, consulte nuestra charla de promotores y desarrolladores.



Estándares MISRA



Nuestros clientes incluyen muchos desarrolladores integrados y representantes de la industria automotriz. Para ellos, una parte importante del proceso de desarrollo es la certificación del código según los estándares MISRA. No podemos ayudar con la certificación en sí, pero somos bastante capaces de señalar posibles inconsistencias con los estándares MISRA en una etapa temprana de desarrollo. En la versión CLion 2020.3, comenzamos a agregar comprobaciones para los estándares MISRA C 2012 y MISRA C ++ 2008 al analizador de código estático integrado:



Cheques MISRA



no todos son compatibles; se puede encontrar una lista completa en esta página . Configurar inspecciones es bastante simple:



Configuración de MISRA



agregaremos más inspecciones MISRA en el futuro. Es posible que también aparezcan los cheques AUTOSAR.



Code With Me es una nueva herramienta de desarrollo colaborativo



¿Su equipo practica la programación por parejas? ¿Qué tal una herramienta para compartir código? Recientemente, lanzamos un programa de acceso temprano para nuestra nueva herramienta de desarrollo colaborativo, Code With Me. Básicamente, este es un complemento disponible para casi todos nuestros IDE de escritorio (excluyendo JetBrains Rider y DataGrip hasta ahora). Le permite a usted y a su equipo colaborar en proyectos directamente desde sus IDE. Para probar Code With Me, instale el complemento en Preferencias / Configuración | Complementos.



Codifica conmigo



Puede leer más sobre las capacidades del complemento en estas publicaciones de blog.... Code With Me todavía está en desarrollo activo. Si tiene algún problema al usarlo, háganoslo saber aquí .



Y mucho más



Otras mejoras importantes incluyen:



  • Ahora puede utilizar un script para configurar el entorno en el que se ejecutará la configuración de ejecución / depuración. Además, ahora puede editar las configuraciones de ejecución / depuración directamente durante la indexación del proyecto.

  • Hemos ampliado las capacidades de autocompletado con fragmentos de Clang. Le ayudarán a corregir no solo las palabras clave, sino también la sintaxis de las expresiones enteras:



    Fragmentos de Clang

  • CLion . , Settings / Preferences | Appearance & Behavior | Appearance Sync with OS.

  • , (Drag&Drop). Open in Right Split, Project, Recent Files Search Everywhere.

  • La integración con el sistema de control de versiones ahora es compatible con la preparación de Git. El menú de VCS ahora tiene en cuenta qué VCS está utilizando en el proyecto (por ejemplo, Git). Y apareció una pestaña de Git en el cuadro de diálogo Buscar en todas partes . Ahora puede buscar hash, enviar mensajes, etiquetas y ramas allí.



Eso es todo para nosotros. Nos alegra que haya leído hasta el final. ¡Gracias por la atención! Deje sus preguntas, pensamientos y sugerencias en los comentarios: ¡estamos interesados ​​en lo que piensa y siempre estaremos encantados de ayudar!



Equipo CLion

El impulso para desarrollar



All Articles