Todo lo que siempre has pedido en una versión: CLion 2018.2

Hola Habr!

No sabemos qué calor hace fuera de su ventana, pero estas semanas en JetBrains seguramente estamos teniendo un lanzamiento en caliente. Uno por uno, publicamos versiones actualizadas de 2018.2 para casi todas nuestras herramientas basadas en la plataforma IntelliJ: WebStorm, IntelliJ IDEA, PyCharm, DataGrip, GoLand, PhpStorm, RubyMine y CLion.

Esta versión es especial para el equipo de CLion, ya que incluye los resultados de nuestro trabajo en tres áreas muy importantes:

  1. Clangd como base para un nuevo motor experimental para analizar el código C ++.
  2. Mejoras de rendimiento de IDE a través de nuevas soluciones arquitectónicas.
  3. Nuevos modelos de diseño soportados por CLion.

Además de la compatibilidad con Google Sanitizers, ¡la capacidad de reconstruir un solo archivo y mucho más!

imagen

A continuación, hablaremos sobre mejoras e innovaciones en detalle, y los más impacientes ahora pueden descargar la versión gratuita de 30 días de nuestro sitio web y probar nuevas oportunidades en su proyecto o un proyecto de demostración especialmente preparado con GitHub .

Clangd para analizar el código C ++ en CLion


En marzo, le dijimos que estábamos considerando varias alternativas para el motor de lenguaje CLion. Esto es comprensible: quiero mejorar fundamentalmente la compatibilidad con las características del lenguaje actual, y agregar más chips C ++ nuevos más rápido, y escribir una refactorización más fresca y específica de C ++, etc. Para todo esto, necesita un analizador de código preciso y rápido.

Continuamos mejorando nuestro analizador actual al grabar metódicamente una variedad de errores y deficiencias. Además, decidimos intentar hacer otro motor de lenguaje basado en clangd (esta es una implementación del protocolo LSP para clang).

Si va directamente a los resultados, en CLion 2018.2, además del motor de lenguaje principal, uno nuevo experimental funciona en clangd. No solo eso, estábamos tan audaces que lo encendimos por defecto en Linux y macOS. En Windows, desafortunadamente, se descubrió una característica desagradable del trabajo de clangd con memoria , y de forma predeterminada apagamos el nuevo motor en esta plataforma (pero con alta probabilidad ya se solucionará en las primeras actualizaciones menores a la versión 2018.2).
Puede habilitar / deshabilitar el analizador experimental del código basado en clangd en Configuración / Preferencias | Idiomas y marcos | C / C ++ | Clangd:

imagen

Es importante entender:

  • El analizador de código basado en clangd funciona en paralelo con el analizador nativo CLion.
  • Clangd se usa solo para mostrar errores y advertencias en el editor. Para todo lo demás (incluyendo refactorización, corrección de errores (soluciones rápidas), navegación, autocompletado, etc.), se utiliza su propio analizador CLion.
  • La configuración predeterminada de errores y advertencias de Clang se selecciona especialmente para mostrar bastantes advertencias sobre posibles errores, pero al mismo tiempo no contradice las inspecciones de código que funcionan en CLion en función de su propio analizador de código y están habilitadas de forma predeterminada.

Advirtiendo sus preguntas, diré de inmediato que sí, planeamos tratar de traducir otras características IDE inteligentes a clangd, pero primero debemos estabilizar la solución actual, realizar muchas más pruebas y resolver muchos problemas complejos y fundamentales en el camino.

Nueva verificación para el código C ++


Cuando una función acepta varios parámetros del mismo tipo, es fácil cometer un error e imperceptiblemente para usted (y el compilador) intercambiar argumentos del mismo tipo al llamar a esta función. Dichos errores son difíciles de detectar, lo que significa que su costo es alto. Pero en CLion 2018.2, implementamos un nuevo código de inspección específicamente para tales casos. Utiliza un algoritmo heurístico para analizar nombres de parámetros y argumentos de función y es capaz de detectar situaciones cuando el orden de los argumentos se modifica erróneamente:

imagen

Importante:

  • Para evitar falsos positivos, el algoritmo se desactiva automáticamente para nombres muy cortos (menos de 3 caracteres).
  • Por las mismas razones, el algoritmo está deshabilitado para funciones cuyos nombres contienen las subcadenas swap / inverse / rotate / backward / flip.
  • Por varias razones técnicas, la inspección funciona solo cuando el analizador experimental para el código clangd está activado y también solo cuando el analizador de código clang-tidy está activado a través de clangd (todo esto está en la configuración de las Configuraciones / Preferencias | Idiomas y marcos | C / C ++ | Clangd).

Rendimiento IDE


En esta versión, plagamos intencionalmente las suspensiones IDE (bloqueos de la interfaz de usuario) en varios casos: al completar, en la búsqueda Buscar en todas partes, al navegar a un carácter relacionado (que generalmente se usa para cambiar entre el archivo fuente y el encabezado y viceversa), al usar migas de pan (migas de pan) para la navegación. Los primeros usuarios de la versión, así como numerosos participantes en nuestro Programa de acceso temprano, ya han evaluado las mejoras y confirman que el comportamiento del IDE ha mejorado significativamente y ha habido significativamente menos congelamientos. El trabajo en esta dirección continuará en 2018.3.

Además, hemos traducido el formateador de código incorporado al lexer . Por supuesto, cuando se trabaja a través del analizador (como antes), su resultado es más preciso, pero el tiempo de funcionamiento aumenta significativamente. Y dado que el formateo del código en CLion ocurre en el momento en que escribe el código, los bloqueos aquí pueden afectar muy negativamente la impresión general de la velocidad del IDE. La capacidad de respuesta del editor disminuye, las suspensiones se vuelven notorias, etc.

El formateador en el lexer funciona bastante bien, pero si aún experimenta problemas con el formateo de su código, en primer lugar, asegúrese de informarnos al respecto , y en segundo lugar, siempre puede cambiar a un formateador más lento pero más preciso en analizador: para esto hay una opción cidr.indent.lexer.only.cpp en el Registro.

Nuevos modelos de diseño: Gradle C ++ y base de datos de compilación


Hasta 2018.2, había las siguientes formas de abrir un proyecto en CLion:

  • Proyecto abierto CMake.
  • Abra un archivo o una carpeta completa que no tenga archivos CMake. Al mismo tiempo, se deshabilitarán muchas funciones inteligentes para trabajar con el código.
  • Para el código Rust, usando el complemento Rust en CLion, puede usar Cargo.
  • Use un complemento de terceros para CLion para abrir un proyecto en Bazel.

En 2018.2, agregamos dos nuevas opciones a esta lista:

  • Abra el proyecto en Gradle, indicando la ubicación IDE del archivo build.gradle . Tenga en cuenta que CLion ahora solo admite el nuevo formato Gradle para proyectos C ++:
    imagen
  • Abra el proyecto desde la base de datos de compilación especificando la ubicación IDE del archivo compile_commands.json . Hasta ahora, en este caso, el ensamblaje y el lanzamiento del proyecto desde CLion no es posible, ya que la base de datos de compilación no contiene información sobre el ensamblaje de todo el proyecto.

Pero en ambos casos, tanto Gradle como la base de datos de compilación, ¡todas las funciones inteligentes para trabajar con código están disponibles! Y, por cierto, la opción de la base de datos de compilación es interesante porque en realidad ahora sea cual sea su proyecto: Makefiles, Ninja, Qbs, cualquiera de sus modelos de proyecto específicos, puede generar una base de datos de compilación para su proyecto y abrirla en CLion.

Mientras tanto, continuamos trabajando en la API para agregar soporte para nuevos modelos de diseño en CLion.

Mejoras CMake


Se hicieron algunas mejoras importantes para los proyectos CMake. ¡Lo más importante es que si sus archivos de encabezado ubicados dentro del directorio de su proyecto se usan en los archivos del proyecto y se conectan a través de la directiva #include , ya no necesita enumerarlos explícitamente en los scripts de CMake ! CLion ahora los marcará como de diseño, y todas las funciones inteligentes como refactorización y autocompletado estarán disponibles en dichos archivos:

imagen

La segunda mejora importante está relacionada con la configuración de herramientas externas (herramientas externas), que luego se pueden llamar por comando o como parte de las configuraciones de inicio de la aplicación. Las macros que contienen todo tipo de variables CMake ahora están disponibles en ellas. Por ejemplo, el directorio de ensamblaje o el nombre del archivo ejecutable:

imagen

Herramientas de análisis de código dinámico


Para Valgrind Memcheck, compatible con CLion en la versión 2017.3, fue posible exportar y luego importar los resultados del análisis:

imagen

También en esta versión, CLion introdujo soporte para otra herramienta para el análisis dinámico de código: Google Sanitizers . Para habilitarlos, debe especificar explícitamente el -fsanitize especial -fsanitize en los scripts CMake de su proyecto, y luego, si usa la versión Clang al menos 3.8.0 o la versión GCC al menos 5.0.0, CLion podrá detectar automáticamente el uso de desinfectantes y mostrar los resultados de su trabajo en ventana especial:

imagen

En él puede ver no solo la lista de errores encontrados, sino también el código fuente (y navegar hasta él), estudiar la información sobre el marco, ver la ruta de error. Lea más sobre los desinfectantes y configuraciones compatibles en CLion en nuestra publicación de blog en inglés.

Reensamblar un solo archivo


Para los modelos de proyecto CMake y la base de datos de compilación en CLion 2018.2, existe la oportunidad de reconstruir un archivo sin causar la reconstrucción del proyecto completo. Para hacer esto, hay una acción en el menú Ejecutar - Recompilar, o puede usar la combinación de teclas Shift + Ctrl + F9 en Linux / Windows, ⇧⌘F9 en macOS (en los diseños predeterminados):

imagen

Esta característica es una excelente manera de verificar rápidamente que sus cambios actuales en el archivo no interrumpieron el ensamblaje de todo el proyecto. Si los detalles son interesantes, qué tipo de comando de compilación se llama y cómo se selecciona el tipo de ensamblaje, puede leerlo en detalle en nuestro blog .

Bases de datos


Según los resultados de nuestra encuesta en Twitter , muchos usuarios de CLion recurren a varias bases de datos cuando desarrollan un proyecto en C / C ++. Por lo tanto, desde esta versión, se ha incluido un complemento para trabajar con bases de datos y código SQL en nuestro IDE. Es un análogo funcional completo de nuestro entorno de base de datos: DataGrip . Entonces, esta publicación aquí en Habr's de moscas sobre las innovaciones en DataGrip 2018.2 también puede estar interesado en leer.

¡Y eso no es todo!


Brevemente sobre otras mejoras:


El video tradicional sobre las nuevas características de CLion 2018.2 en inglés de nuestro abogado desarrollador:


Y, por cierto, hasta el miércoles 1 de agosto de 2018, 19:05 hora de Moscú (GMT + 3), ofrecemos un descuento del 50% en todos los productos JetBrains Toolbox .

Preguntas? Estaremos encantados de responder en los comentarios!

Su equipo JetBrains CLion
El impulso para desarrollar

Source: https://habr.com/ru/post/es418729/


All Articles