Hola Habr!
El otro día lanzamos CLion 2018.3. El tercer lanzamiento importante de este año resume nuestro trabajo en dos áreas importantes de desarrollo:
mejorar el soporte del lenguaje y
el desarrollo remoto .
Además, finalmente:
- herramientas de perfilado de código agregado;
- rehacer los comandos en el editor para ensamblar / reensamblar código a nivel de un archivo, varios destinos o el proyecto completo;
- Junto con otros IDE basados en la plataforma IntelliJ, agregaron soporte para submódulos Git y solicitudes de extracción de GitHub;
- medios mejorados de acceso universal a las posibilidades de IDE (accesibilidad).
Lea más sobre estas y otras innovaciones a continuación. Y para probar nuevas funciones y mejoras, descargue la versión gratuita de 30 días
de nuestro sitio web .
Soporte de lenguaje C ++
Más C ++ 17
El analizador CLion ha aprendido a comprender dos nuevas características de las
expresiones de plegado estándar C ++ 17 y las
guías de deducción . Por un lado, los cambios en el analizador aún no son un soporte completo, pero al menos el resaltado del código será más correcto, y para los casos de
guías de deducción definidas por el usuario, el IDE incluso mostrará correctamente el tipo y puede verlo, por ejemplo, al llamar información sobre Parámetros de función.

Clangd ahora está en navegación
La última vez que escribimos que CLion ahora usa no solo su propio motor de lenguaje para trabajar con código C / C ++, sino también uno adicional, experimental, basado en Clangd. Al activarlo para mostrar errores y advertencias en el editor, seguimos adelante y en CLion 2018.3 implementamos algunas acciones de navegación de código y búsqueda de código sobre la base.
El motor de lenguaje basado en Clangd proporciona resultados que posteriormente se combinan de todos modos con los resultados obtenidos del motor CLion. Un ejemplo típico es Buscar usos (
Alt+F7
): Clangd busca archivos abiertos en el editor, y nuestro propio motor busca el resto.
Ejemplos de otras acciones que además utilizan el motor de lenguaje Clangd:
- Ir a la declaración (
Ctrl+B
/ ⌘B
) / Ir a la definición ( Ctrl+Alt+B
/ ⌥⌘B
) - Destacando todas las inclusiones del símbolo en el que se encuentra el cursor
- Documentación rápida (
Ctrl+Q
/ F1
)
Clangd está habilitado de forma predeterminada y está configurado en Configuración / Preferencias | Idiomas y marcos | C / C ++ | Clangd:

Es decir, puede habilitar / deshabilitar de forma independiente la funcionalidad necesaria en la parte superior de Clangd, por ejemplo, solo muestra errores o solo navegación. Si necesita deshabilitar completamente el uso de Clangd, desactive todas las casillas en este cuadro de diálogo.
Y, por cierto, Clang-Tidy se puede ejecutar sin Clangd, pero ejecutar Clangd mejora significativamente el rendimiento, ya que utiliza el árbol AST almacenado en caché en Clangd.
Desarrollo remoto
El
lanzamiento de CLion 2018.1 introdujo la capacidad en Windows de trabajar con el subsistema Windows Subsystem for Linux (WSL). Este entorno de Linux, integrado en Windows, le permite construir, ejecutar y depurar aplicaciones de Linux en Windows. Dijimos entonces que implementamos específicamente soporte para WSL a través de ssh, es decir, como un subsistema remoto. Este fue el primer paso para trabajar con configuraciones completamente remotas.
Y así, en CLion 2018.3, anunciamos soporte para la primera versión grande de desarrollo remoto:
- En la máquina local donde se ejecuta CLion, puede ser Linux, Windows o macOS.
- En una máquina remota, donde CLion construirá su aplicación, la ejecutará y depurará, ejecutará pruebas, hasta ahora solo puede haber Linux.
- Se supone que el código está en la máquina local. El propio CLion lo sincroniza con la máquina remota y devuelve las rutas de búsqueda del encabezado al local para resolver rápidamente el código en el editor. La sincronización se realiza a través de rsync para Linux o macOS como máquinas locales, y a través de sftp y gzip para Windows.
- Funciona hasta ahora solo para proyectos en CMake.

Configurar una configuración remota de este tipo es muy fácil: solo necesita crear una cadena de herramientas remota en Configuración / Preferencias | Construcción, Ejecución, Implementación | Cadenas de herramientas y úselas en algunos perfiles de CMake. Las instrucciones detalladas se encuentran en
nuestro blog en inglés y
en la documentación en línea . El progreso de la sincronización con el host remoto se muestra en la ventana Transferencia de archivos (Ver | Ventanas de herramientas | Transferencia de archivos), y cambia los parámetros de conexión y las rutas de directorio en la máquina remota en Configuración / Preferencias | Construcción, Ejecución, Implementación | Despliegue
Se espera mucho trabajo en esta dirección. Ahora, como puede ver, las opciones para ubicar el código directamente en la máquina remota no son compatibles, no hay soporte para el sistema de control remoto de versiones, no hay integración con el terminal remoto y hay muchas fallas menores en la conexión misma. Pero lo principal es:
¡ahora es posible el desarrollo remoto con CLion!Análisis de rendimiento de código personalizado
CLion 2018.3 proporciona la capacidad de analizar el rendimiento del código. En Linux, se proporciona integración con
Perf ; en macOS, con
DTrace . La nueva acción está disponible en el menú Ejecutar, en el panel de navegación y en el menú contextual de los iconos de inicio de la aplicación. Los resultados de la creación de perfiles de código están disponibles en la ventana CPU Profiler (Ver | Herramientas Windows | CPU Profiler).

Lea más sobre lo que necesita instalar en su computadora para que funcione la creación de perfiles de código, lea el
blog o
la documentación en línea .
Vale la pena señalar que UI / UX todavía es algo experimental. Se planea mejorar significativamente en las versiones 2019.x. Pero ya hay cosas útiles, como la capacidad de ver todos los hilos juntos o uno a la vez, la capacidad de navegar al código fuente, etc.
Construir y reconstruir comandos
El número de varias combinaciones de comandos de compilación ha crecido tanto que decidimos ponerlos a todos en un elemento de menú separado: Compilar. Existe el ensamblaje / reensamblaje de todo el proyecto, y el objetivo
all
de todo o del perfil CMake seleccionado, y la configuración seleccionada, y un archivo específico:

Esto, por supuesto, es para CMake. Para una base de datos de compilación solo habrá un comando de reconstrucción para un archivo en particular.
Diálogos universales: ejecutar cualquier cosa y buscar en todas partes
Los usuarios de CLion han estado familiarizados con el cuadro de diálogo Buscar en todas partes (
Double Shift
) durante mucho tiempo, así como con el cuadro de diálogo Buscar acción (
Ctrl+Shift+A
/
⇧⌘A
) para buscar un comando o configuración por nombre, y con cuadros de diálogo para navegar a un archivo, símbolo o clase por su nombre ¡Y ahora este es, de hecho, el mismo diálogo!

Los cuadros de diálogo separados se convirtieron en pestañas separadas, el cambio funciona a través de
Tab
. Al mismo tiempo, eliminamos una serie de problemas asociados con estos cuadros de diálogo, incluida la pérdida de enfoque y los tamaños incorrectos.
Otro nuevo diálogo universal es Run Anything (
Double Ctrl
). Desde allí, puede ejecutar la aplicación en modo normal o desde debajo del depurador, y también abrir cualquier proyecto:

Comprobaciones en compilation_database.json
La base de datos de compilación es un modelo de diseño alternativo que CLion ha estado soportando durante algún tiempo. Es muy conveniente ya que
puede obtenerlo de prácticamente cualquier otro modelo de diseño, popular o incluso personalizado. CLion puede abrir proyectos desde la base de datos de compilación, analizar correctamente el código y proporcionar todos los medios inteligentes para trabajar con el código. El único inconveniente es la falta de información sobre el ensamblaje de todo el proyecto en este formato, hasta ahora solo se recopilarán archivos individuales del IDE.
En esta versión, agregamos un esquema para los archivos comp__database.json a CLion, y en base a este esquema ya implementamos verificaciones en el archivo mismo. Por ejemplo, el tipo incorrecto del valor de la propiedad o la propiedad que generalmente falta:

Las comprobaciones pueden ser muy útiles si aún decide escribir dicho archivo a mano o corregir un archivo existente.
Rendimiento del editor y pruebas
En muchos volcados de nuestros usuarios, se observó que problemas importantes con el rendimiento del IDE están relacionados con la forma en que el IDE determina la lista de pruebas disponibles en el proyecto. En la versión 2018.3, hicimos este proceso lento, y ahora, si no ha abierto ningún archivo de prueba en el editor, no se indexarán. Además, se realizaron mejoras de rendimiento al navegar a los resultados de la prueba, completar automáticamente las macros de prueba, etc.
Mejoras del editor
Como sabe, en la ventana Documentación rápida (
Ctrl+Q
/
F1
), CLion puede mostrar no solo documentación y comentarios de código, sino también tipos inferidos para variables y sustitución final en macros. Esta búsqueda final ahora está formateada y las palabras clave están resaltadas en ella. Muy útil para macros complejas con varios niveles de anidamiento, por ejemplo para Boost:

Los comentarios TODO ahora pueden ser multilínea, lo principal es sangrar la segunda línea y las siguientes: CLion comprenderá automáticamente que esto es parte del comentario TODO:

Hay usuarios para quienes los temas estándar no son convenientes, ya que no tienen suficiente contraste. Para ellos, agregamos un tema especial de alto contraste. Solo se puede habilitar en el editor de código (Ctrl + `) o para todo el IDE (Configuración / Preferencias | Apariencia y comportamiento | Apariencia | Tema).

Junto con la plataforma IntelliJ, rediseñamos el menú de configuración de complementos en IDE (Configuración / Preferencias | Complementos). Ahora es mucho más fácil mantener actualizados los complementos instalados, así como ordenar y filtrar un gran depósito de complementos IDE existentes.
Sistema de control de versiones
Otro cambio importante de la plataforma es el tan esperado soporte para los
submódulos de Git . Ahora todas las operaciones para trabajar con VCS en CLion también se tienen en cuenta por submódulos: clonar un proyecto, actualizarlo, comparar versiones (diff), etc.
Se ha agregado la ventana
Solicitudes de extracción de
GitHub , en la que no solo puede ver todas las solicitudes de extracción, sino también buscarlas / filtrarlas por autor o estado. Y puede crear una nueva sucursal desde cualquier solicitud de extracción con solo un clic.
Demo
Video tradicional sobre las nuevas características de CLion 2018.3 en inglés:
Que sigue
El próximo año planeamos continuar trabajando en el segundo motor de lenguaje adicional basado en Clangd; veamos qué otras características IDE podemos implementar en él. Mejoraremos la productividad del editor, terminaremos y mejoraremos las funciones existentes; El trabajo de apoyar el desarrollo remoto en CLion parece especialmente diverso. A partir de las integraciones, planificamos el formato clang y, probablemente, este o aquel depurador para Windows / MSVC.
Y el enfoque clave para nosotros será el
desarrollo integrado . Más recientemente,
Elmot , autor de un complemento de soporte muy popular en CLion
OpenOCD + STM32CubeMX , se unió a nuestro equipo. Ilya continuará integrando esta funcionalidad en el IDE, pero planeamos completar la vista de memoria y rehacer la vista hexadecimal en un futuro muy cercano.
¡Preguntas, deseos, informes de errores y solo pensamientos expresados en los comentarios! Estaremos encantados de responder.
Su equipo JetBrains CLionEl impulso para desarrollar