Noticias de CLion: lanzamiento 2020.1, IDE de cinco años y preguntas y respuestas en línea

Hola Habr!

Hoy quiero decirles que incluso es difícil elegir por dónde comenzar. Primero, intentaré brevemente sobre todo lo más importante:

  1. ¡CLion tiene 5 años ayer! En honor a las vacaciones, montamos una pequeña historia en video, un recuerdo peculiar y una historia sobre lo interesante que todo se ha estado desarrollando para nosotros estos 5 años. Advierta inmediatamente la historia en inglés:


  2. Ayer, el primer gran lanzamiento del producto ocurrió este año: CLion 2020.1 . En él, apoyamos el dialecto CUDA, reescribimos el Análisis de flujo de datos a Clang, enseñamos al IDE a trabajar con los compiladores Clang-cl e IAR, y también hicimos muchas otras mejoras y correcciones.
  3. En los últimos meses, nuestro equipo se ha vuelto muy triste sin conferencias y exposiciones relacionadas, donde siempre estamos felices de estar en los stands de la compañía y comunicarnos mucho con nuestros usuarios y la comunidad en general. Por lo tanto, decidimos organizar una sesión de preguntas y respuestas en línea con el equipo: sesión CLion Ask Me Anything (AMA) . La sesión se llevará a cabo el 7 de mayo en tiempo real, se requiere una cita preliminar. ¡Únase y haga cualquier pregunta sobre el producto!

Ahora hablemos más sobre todos estos eventos.

CLion: ¡cinco!


Los hijos adultos siempre son sorprendentes y, a menudo, inesperados para los padres. La historia es la misma con el producto: parece que ayer lanzamos la primera versión y estábamos haciendo la cuenta regresiva para el lanzamiento 1.0, pero hoy ya estamos celebrando una fecha redonda. CLion ahora tiene más de 200 mil usuarios mensuales, incluidos equipos de compañías como BMW, NASA, Tencent, Tesla y muchos otros, y por supuesto, cooperación con Google y Android Studio.

Nos complace apoyar a muchos estudiantes de todo el mundo que, con CLion, están dando sus primeros pasos en el desarrollo de software. ¡Y muy feliz de saber que un tercio de los equipos de ICPC en la final de 2019 también usaron CLion!

Herramientas ICPC Final

La emoción con cada nuevo lanzamiento, la responsabilidad con un gran número de nuestros usuarios, la cohesión del equipo que hace un gran trabajo, todo esto nos abruma, ¡y estamos felices de compartir nuestro primer pequeño aniversario con toda la comunidad de Habr! Esperamos que hayas disfrutado la película;)

CLion 2020.1


Puede que no sea el más grande en la escala de los últimos cinco años, pero definitivamente lanzamos un lanzamiento importante ayer. Hablemos en orden sobre los cambios más importantes:

  • Soporte de dialecto CUDA.
  • Para los desarrolladores integrados, soporte del compilador IAR y complemento para la integración con PlatformIO.
  • Integración actualizada con herramientas de Clang: migración de DFA a Clangd, autocompletado mejorado, trabajo más cercano con Clang-Tidy y ClangFormat.
  • Para desarrolladores en Windows: soporte para el compilador Clang-cl y el depurador predeterminado.
  • Valores de parámetros predeterminados en la refactorización de cambio de firma.
  • Configuraciones de inicio y depuración más convenientes, incluida la redirección de entrada y el soporte de macro IDE.
  • Actualizaciones de formateadores, mejoras del editor y más.

Cuda


CLion ahora es compatible con el dialecto CUDA C / C ++. El soporte incluye:

  • analizador de código correcto (para excluir el código "rojo" y el funcionamiento incorrecto del analizador de código);
  • resaltado y una variedad de acciones inteligentes, como navegación y visualización de documentación;
    Documento rápido de CUDA
  • asistente actualizado para crear nuevos proyectos: ahora incluye una plantilla para proyectos de CUDA;

    CUDA nuevo proyecto
  • soporte para extensiones de archivo CUDA (.cu / .cuh);
  • objetivos CMake especiales para CUDA: el cuadro de diálogo para agregar un nuevo archivo ahora ofrecerá agregarlo no solo a los objetivos adecuados creados por los comandos CMake habituales, sino también específicos a CUDA ( cuda_add_executable/ cuda_add_library);

    CUDA agregar a objetivos
  • e incluso la finalización automática para paréntesis angulares para llamadas de kernel:

    Terminación de CUDA

Nota: para pruebas y capturas de pantalla, este proyecto CUDA se utilizó con GitHub: ClaraGenomicsAnalysis .

Nos preguntaron por qué nos centramos tanto en CUDA y no en otras áreas específicas, como Qt. En resumen, por supuesto, nos gustaría admitir todos los tipos de proyectos C / C ++ en nuestro IDE. Pero en condiciones de recursos limitados, debe elegir y centrarse en apoyar las capacidades más universales. Los dialectos como CUDA, si no se admiten "listos para usar", conducen a un código rojo, errores del analizador de código y otros problemas con las capacidades básicas del IDE. A diferencia de Qt, donde el analizador general hace frente al código y simplemente carece de algunas características específicas.

Para desarrolladores integrados


Seguimos apoyando a los desarrolladores de sistemas embebidos. A través de la colaboración con IAR Systems AB, pudimos obtener licencias de asociación y agregar soporte del compilador IAR a CLion. Anteriormente, no podíamos leer correctamente la información del compilador y dichos proyectos no se cargaban correctamente en CLion. ¡Ahora todo funciona!

Compilador Iar

Vale la pena señalar que para usar el compilador, debe usar la cadena de herramientas MinGW. Y aquí puede encontrar algunos consejos sobre cómo usar CMake con IAR Embedded Workbench.

Continuaremos trabajando con IAR Systems AB y, con suerte, algún día CLion también tendrá soporte para su depurador.

Desde el primer lanzamiento de CLion, hablamos con los creadores de PlatformIO, un ecosistema único para iniciar rápidamente proyectos para sistemas integrados. Por ejemplo, ayudó a muchos a comenzar el primer proyecto en Arduino. Para la versión 2020.1, hemos recopilado, aunque es un plugin PlatformIO para CLion bastante básico pero útil . Su oportunidad más importante es crear un proyecto para PlatformIO basado en CMake, simplemente seleccione este tipo de proyecto en el Asistente para crear nuevos proyectos:

Plugin PlatformIO

el complemento crea automáticamente configuraciones de inicio y depuración específicas para PlatformIO, y también le permite depurar utilizando el depurador unificado PIO directamente desde CLion Se puede encontrar más información en la documentación oficial . Intente y escriba sus deseos para un mayor desarrollo: ahora nos preguntamos dónde y cómo desarrollar aún más este complemento.

Integración actualizada de la herramienta Clang


Como ya sabe, estamos trasladando activamente más y más funciones al motor de lenguaje basado en Clangd. En primer lugar, para obtener rápidamente soporte para nuevas características de lenguaje y adaptar las acciones IDE para ellos, y en segundo lugar, para mejorar el rendimiento del editor en algunos casos (desafortunadamente, Clangd es una herramienta tan universal).

En la versión 2020.1, dedicamos mucho tiempo a las correcciones de autocompletado basadas en Clangd (apareció en la versión 2019.3). Y, habiendo decidido que los resultados de este enfoque son bastante buenos, activaron el modo predeterminado en el que las opciones para la finalización automática se toman completamente de Clangd. Puede habilitar el modo mixto de operación en la configuración:

Terminación de Clangd

Pero no recomendamos hacerlo sin una buena razón, ya que combinar los resultados de dos proveedores diferentes puede causar problemas con las prioridades. Además, a juzgar por nuestras mediciones, el nuevo autocompletado basado en Clangd no es más lento, sino a menudo más rápido que el incorporado.

Clangd también movió el análisis de flujo de datos (DFA) en esta versión. Este analizador merece un artículo separado, porque puede y hace lo que los compiladores no suelen hacer (principalmente porque no lo necesitan, aunque en teoría es posible reproducirlo de su lado): analiza cómo se mueven los datos a lo largo del gráfico de flujo de control y, En base a este conocimiento, encuentra posibles errores. Por ejemplo, condiciones que siempre son verdaderas o falsas, recursiones y bucles infinitos, expresiones de retorno faltantes, valores no utilizados, parámetros y variables locales:

DFA siempre es cierto

Ahora todo funciona en Clangd. Y esperamos que esto mejore el rendimiento de los análisis de código en sus proyectos. Desafortunadamente, antes, a menudo teníamos que aconsejar a los usuarios que desactivaran el análisis DFA específicamente para mejorar el rendimiento del editor. Si este es su caso, le sugerimos que vuelva a encender el analizador. Estaremos esperando sus comentarios en nuestro soporte técnico y rastreador .

Para colmo, las herramientas de Clang deberían notar mejoras en la compatibilidad con Clang-Tidy y ClangFormat:

  • Cuando se encuentra un archivo de configuración .clang-tidy en el proyecto, CLion deshabilita automáticamente la configuración de Clang-Tidy en el IDE y cambia a usar este archivo de configuración. El comportamiento es impulsado por la personalización.
  • .clang-format CLion ClangFormat . ClangFormat, , CLion , .

Windows


Si en Linux y macOS, la cadena de herramientas CLion es bastante simple de elegir (tomamos GCC o Clang), entonces en Windows hay muchas opciones que no son fáciles de descubrir: Cygwin, MinGW / Mingw-w64, WSL, Visual Studio. Al mismo tiempo, a menudo se usan diferentes compiladores dentro de cada cadena de herramientas. Nos han preguntado durante mucho tiempo sobre la posibilidad de usar Clang en Windows. Y en CLion 2020.1, se hizo posible tomar Clang-cl (ya sea del sitio web oficial de LLVM o junto con las herramientas de Visual Studio) y usarlo dentro de la cadena de herramientas de Visual Studio:

Clang-cl

Por cierto, ¿notó el depurador seleccionado de forma predeterminada en este cuadro de diálogo? ¡El mismo depurador basado en LLDB para la cadena de herramientas Microsoft Visual C ++ que nuestro equipo está desarrollando y que presentamos el año pasado está incluido en la nueva versión de forma predeterminada! Sin embargo, si también desea utilizar el soporte de Visualizadores nativos, debe habilitarlo explícitamente en la configuración: Configuración | Construcción, Ejecución, Implementación | Vistas de datos del depurador | Habilita los procesadores NatVis para LLDB.

Refactorización de firma de cambio


Entre las muchas refactorizaciones en CLion, se destaca Change Signature (Ctrl + F6 en Windows y Linux, ⌘F6 en macOS). Le permite cambiar el nombre de la función, el tipo de retorno, la lista de parámetros. Al hacerlo, el IDE actualiza todos los usos de la función para preservar la exactitud del código. Pero, ¿y si agrega un nuevo parámetro? Anteriormente, CLion ponía un valor predeterminado de tipo en todos los usos (si los hubiera): 0para números, nullptrpara punteros. Ahora, a partir de la versión 2020.1, es posible especificar el valor que CLion sustituirá por usar la función directamente en el cuadro de diálogo de refactorización:

Cambiar firma
si no especifica nada, el comportamiento será como antes.

Configuraciones de inicio y depuración


Las muchas pequeñas mejoras en las configuraciones de inicio y depuración en CLion los hicieron mucho más utilizables.

Primero, las configuraciones de Servidor GDB remoto y Servidor GDB incorporado ahora funcionan con objetivos personalizados, no solo con objetivos CMake. Entonces, ahora es posible depurar en una máquina remota o en un microcontrolador, no solo en el caso de un proyecto basado en CMake, sino también para cualquier otro tipo de proyecto para el que configure objetivos personalizados (especificando los comandos de construcción y limpieza del proyecto).

En segundo lugar, para configuraciones como CMake, Custom Build y Gradle Native Applications, ahora puede usar macros y variables de ruta. Con su ayuda, puede acceder a muchos valores útiles:

Macros IDE

Y finalmente, la opción de redirigir la entrada del programa ha aparecido en este tipo de configuraciones. En combinación con las macros Prompt / FilePrompt, permite no solo redirigir la entrada al programa desde un archivo, sino también mostrar un diálogo para seleccionar un archivo para ingresar al inicio de la configuración:

Redireccionamiento de entrada

Actualizaciones de formateadores, mejoras del editor y más


Vale la pena mencionar algunas mejoras más de puntos pequeños en diferentes subsistemas:

  • Configuración de nombres separada para campos de estructura y campos de clase.
  • Capacidad para colapsar bloques de código resaltados con #pragma region/ #pragma endregion.
  • La ventana de visualización de documentación ahora no solo se puede abrir mediante un acceso directo, sino que también se puede ver simplemente pasando el cursor sobre el símbolo de interés.
  • La fuente predeterminada en el IDE ahora es JetBrains Mono , una nueva fuente monoespaciada de JetBrains diseñada específicamente para desarrolladores para ayudar a optimizar la legibilidad del código.
  • El tema de la luz predeterminado ahora es el mismo en las tres plataformas: IntelliJ Light.
  • Las sesiones terminales se pueden dividir en varias horizontal o verticalmente. Por lo tanto, se pueden ver varias sesiones simultáneamente en una pestaña.
  • Desde la plataforma IntelliJ, también se han introducido mejoras en la integración con los sistemas de control de versiones .

CLion Pregúntame cualquier cosa


Una sesión de preguntas y respuestas en línea con desarrolladores del equipo de CLion está programada para el 7 de mayo. A la sesión asistirán los miembros del equipo responsables de los siguientes subsistemas:

  • C C++, Clangd, C++ CLion.
  • .
  • .
  • ( , ClangFormat).
  • .
  • .
  • .

La sesión es gratuita, pero se requiere inscripción previa . También le pedimos que piense con anticipación y, si es posible, deje preguntas para el equipo en el formulario de registro. Habrá una oportunidad para hacer preguntas durante la sesión, a través de un formulario especial (y lo moderaré y enviaré preguntas a los colegas), pero es más probable que las preguntas hechas con anticipación reciban respuestas detalladas al comienzo de la sesión.

Eso es todo por hoy. Leer hasta el final? ¡Muchas gracias por su atención! Escriba preguntas, sugerencias, exclamaciones en los comentarios: ¡siempre estamos felices de leerlas y responderlas!

CLion
El impulso para desarrollar equipo

All Articles