Tudo o que você solicita há muito tempo em um release - CLion 2018.2

Olá Habr!

Não sabemos o quão quente está do lado de fora da sua janela, mas nessas semanas no JetBrains certamente estamos tendo um lançamento quente. Um por um, publicamos versões atualizadas do 2018.2 para quase todas as nossas ferramentas baseadas na plataforma IntelliJ: WebStorm, IntelliJ IDEA, PyCharm, DataGrip, GoLand, PhpStorm, RubyMine e CLion.

Esta versão é especial para a equipe do CLion, pois inclui os resultados do nosso trabalho em três áreas muito importantes:

  1. Clangd como base para um novo mecanismo experimental para analisar o código C ++.
  2. Aprimoramentos de desempenho do IDE por meio de novas soluções de arquitetura.
  3. Novos modelos de design suportados pelo CLion.

Além do suporte ao Google Sanitizers, a capacidade de reconstruir um único arquivo e muito mais!

imagem

Abaixo, falaremos sobre melhorias e inovações em detalhes, e os mais impacientes podem agora fazer o download da versão gratuita de 30 dias do nosso site e tentar novas oportunidades em seu projeto ou em um projeto de demonstração especialmente preparado com o GitHub .

Clangd para analisar o código C ++ no CLion


Em março, dissemos que estávamos considerando várias alternativas para o mecanismo de idioma do CLion. Isso é compreensível - eu quero melhorar fundamentalmente o suporte aos recursos atuais da linguagem e adicionar mais chips C ++ novos mais rapidamente, além de escrever uma refatoração mais legal e específica para C ++, etc. Por tudo isso, você precisa de um analisador de código rápido e preciso.

Continuamos a melhorar nosso analisador atual, gravando metodicamente uma variedade de erros e deficiências. Além disso, decidimos tentar criar outro mecanismo de linguagem baseado no clangd (essa é uma implementação do protocolo LSP para o clang).

Se você for direto para os resultados, no CLion 2018.2, além do mecanismo de idioma principal, um novo experimental funciona no clangd. Além disso, éramos tão ousados ​​que o ativamos por padrão no Linux e no macOS. Infelizmente, no Windows, um recurso desagradável do trabalho de clangd com a memória foi descoberto e, por padrão, desligamos o novo mecanismo nesta plataforma (mas com alta probabilidade, isso já será corrigido nas primeiras pequenas atualizações da versão 2018.2).
Você pode ativar / desativar o analisador experimental do código baseado em clangd em Configurações / Preferências | Idiomas e estruturas | C / C ++ Clangd:

imagem

É importante entender:

  • O analisador de código baseado em clangd funciona em paralelo com o analisador nativo do CLion.
  • Clangd é usado apenas para exibir erros e avisos no editor. Para todo o resto (incluindo refatoração, correções de bugs (correções rápidas), navegação, preenchimento automático etc.), é usado seu próprio analisador CLion.
  • A configuração padrão de erros e avisos do Clang é especialmente selecionada para mostrar vários avisos sobre erros em potencial, mas ao mesmo tempo para não contradizer as inspeções de código que funcionam no CLion com base em seu próprio analisador de código e são ativadas por padrão.

Advertindo suas perguntas, direi imediatamente que sim, planejamos tentar traduzir outros recursos inteligentes de IDE, mas primeiro precisamos estabilizar a solução atual, realizar muitos mais testes e resolver muitos problemas complexos e fundamentais ao longo do caminho.

Nova verificação de código C ++


Quando uma função aceita vários parâmetros do mesmo tipo, é fácil cometer um erro e imperceptivelmente para você (e o compilador) trocar os argumentos do mesmo tipo ao chamar essa função. Esses erros são difíceis de detectar, o que significa que seu custo é alto. Mas no CLion 2018.2, implementamos um novo código de inspeção especificamente para esses casos. Ele usa um algoritmo heurístico para analisar nomes de parâmetros e argumentos de funções e é capaz de detectar situações em que a ordem dos argumentos é alterada erroneamente:

imagem

Importante:

  • Para evitar falsos positivos, o algoritmo é desativado automaticamente para nomes muito curtos (menos de 3 caracteres).
  • Pelas mesmas razões, o algoritmo está desabilitado para funções cujos nomes contêm as substrings swap / inverso / rotate / backward / flip.
  • Por várias razões técnicas, a inspeção funciona apenas quando o analisador de código de clangd experimental está ativado e também quando o analisador de código de clang-tidy é ativado via clangd (isso é tudo nas configurações das Configurações / Preferências | Idiomas e estruturas | C / C ++ | Clangd).

Desempenho do IDE


Nesta versão, atormentamos intencionalmente o IDE (congela a interface do usuário) em vários casos: ao concluir automaticamente, na pesquisa Search Everywhere, na navegação para um símbolo relacionado (que geralmente é usado para alternar entre o arquivo de origem e o cabeçalho e vice-versa), ao usar trilhas de navegação (farinha de rosca) para navegação. Os primeiros usuários da versão, assim como vários participantes do nosso Programa de acesso antecipado, já avaliaram as melhorias e confirmam que o comportamento do IDE melhorou significativamente e houve muito menos congelamentos. O trabalho nessa direção continuará em 2018.3.

Além disso, traduzimos o formatador de código interno para o lexer . Obviamente, ao trabalhar com o analisador (como antes), seu resultado é mais preciso, mas o tempo de operação aumenta significativamente. E como a formatação do código no CLion ocorre no momento em que você digita o código, as interrupções aqui podem afetar negativamente a impressão geral da velocidade do IDE. A capacidade de resposta do editor diminui, as suspensões tornam-se visíveis e assim por diante.

O formatador no lexer funciona muito bem, mas se você ainda tiver problemas com a formatação do seu código, primeiro, certifique-se de nos informar sobre o assunto e, em segundo lugar, sempre poderá mudar para um formatador mais lento, porém mais preciso, em analisador - para isso, existe uma opção cidr.indent.lexer.only.cpp no Registro.

Novos modelos de design: Gradle C ++ e banco de dados de compilação


Até 2018.2, havia as seguintes maneiras de abrir um projeto no CLion:

  • Abra o projeto CMake.
  • Abra um arquivo ou uma pasta inteira que não possua arquivos CMake. Ao mesmo tempo, muitas funções inteligentes para trabalhar com o código serão desativadas.
  • Para código Rust, usando o plug-in Rust no CLion, você pode usar Cargo.
  • Use um plug-in de terceiros no CLion para abrir um projeto no Bazel.

Em 2018.2, adicionamos duas novas opções a esta lista:

  • Abra o projeto no Gradle, indicando o local IDE do arquivo build.gradle . Observe que o CLion agora suporta apenas o novo formato Gradle para projetos C ++:
    imagem
  • Abra o projeto no banco de dados de compilação, especificando o local do IDE do arquivo compile_commands.json . Até o momento, nesse caso, a montagem e o lançamento do projeto a partir do CLion não é possível, pois o banco de dados de compilação não contém informações sobre a montagem de todo o projeto.

Mas em ambos os casos, Gradle e banco de dados de compilação, todas as funções inteligentes para trabalhar com código estão disponíveis! A propósito, a opção de banco de dados de compilação é interessante porque, na verdade, agora seja qual for o seu projeto - Makefiles, Ninja, Qbs, qualquer um dos seus modelos específicos de projeto - você pode gerar um banco de dados de compilação para o seu projeto e abri-lo no CLion!

Enquanto isso, continuamos trabalhando na API para adicionar suporte a novos modelos de design no CLion!

Aprimoramentos no CMake


Algumas melhorias importantes foram feitas nos projetos do CMake. O mais importante é que, se os arquivos de cabeçalho localizados dentro do diretório do seu projeto forem usados ​​nos arquivos do projeto e conectados através da diretiva #include , você não precisará mais listá-los explicitamente nos scripts do CMake ! O CLion agora os marcará como de design, e todas as funções inteligentes, como refatoração e preenchimento automático, estarão disponíveis nesses arquivos:

imagem

A segunda melhoria importante está relacionada à configuração de ferramentas externas (ferramentas externas), que podem ser acessadas por comando ou como parte das configurações de inicialização do aplicativo. Macros contendo todos os tipos de variáveis ​​CMake agora estão disponíveis nelas. Por exemplo, o diretório do assembly ou o nome do arquivo executável:

imagem

Ferramentas dinâmicas de análise de código


Para Valgrind Memcheck, suportado no CLion na versão 2017.3, tornou-se possível exportar e depois importar os resultados da análise:

imagem

Também nesta versão adiciona suporte para CLION outra ferramenta para análise dinâmica do código - Google Sanitizers. Para habilitá-los, você deve especificar explicitamente a -fsanitize especial nos scripts CMake do seu projeto e, se você usar a versão Clang pelo menos 3.8.0 ou a versão GCC pelo menos 5.0.0, o CLion poderá detectar automaticamente o uso de desinfetantes e mostrar os resultados de seu trabalho em janela especial:

imagem

Nele você pode visualizar não apenas a lista de erros encontrados, mas também o código-fonte (e navegar até ele), estudar as informações sobre o quadro, observar o caminho do erro. Leia mais sobre os desinfetantes e configurações suportados no CLion em nosso blog em inglês.

Remontando um único arquivo


Para os modelos de projeto CMake e banco de dados de compilação no CLion 2018.2, há uma oportunidade de reconstruir um arquivo sem causar a reconstrução de todo o projeto. Para fazer isso, existe uma ação no menu Executar - Recompilar, ou você pode usar a combinação de teclas Shift + Ctrl + F9 no Linux / Windows, ⇧⌘F9 no macOS (nos layouts padrão):

imagem

Esse recurso é uma ótima maneira de verificar rapidamente se as alterações atuais no arquivo não interromperam a montagem de todo o projeto. Se os detalhes forem interessantes, que tipo de comando de compilação é chamado e como o tipo de montagem é selecionado, você pode ler em detalhes em nosso blog .

Bases de dados


De acordo com os resultados de nossa pesquisa no Twitter , muitos usuários do CLion recorrem a vários bancos de dados ao desenvolver um projeto em C / C ++. Portanto, a partir desta versão, um plug-in para trabalhar com bancos de dados e código SQL foi incluído em nosso IDE. É um análogo funcional completo do nosso ambiente de banco de dados - DataGrip . Portanto, este post aqui no Habr's, de moscas, sobre inovações no DataGrip 2018.2, você também pode estar interessado em ler.

E isso não é tudo!


Brevemente sobre outras melhorias:


O vídeo tradicional sobre os novos recursos do CLion 2018.2 em inglês do nosso advogado desenvolvedor:


A propósito, até quarta-feira, 1 de agosto de 2018, 19:05, horário de Moscou (GMT + 3), oferecemos um desconto de 50% em todos os produtos JetBrains Toolbox .

Perguntas? Teremos o maior prazer em responder nos comentários!

Sua equipe JetBrains CLion
O impulso para desenvolver

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


All Articles