CLion 2019.1: ClangFormat, destaque de código através do Clangd, visualização de memória, suporte inicial para microcontroladores

Olá Habr!

A equipe do CLion tem muitas boas notícias - a parte de St. Petersburg da equipe, juntamente com outros colegas, mudou-se com sucesso para um novo escritório, novos desenvolvedores legais se juntaram a nós e, o mais importante, no outro dia, lançamos a primeira grande atualização deste ano, o CLion 2019.1 !

O trabalho na nova versão foi realizado em várias frentes ao mesmo tempo:

  • Aprimoramentos no suporte à linguagem C ++ : realce de código por meio do Clangd, aprimoramentos na refatoração Extrair e Renomear, uma nova verificação de que uma função de membro de uma classe pode ser declarada estática.
  • Mais opções para definir o estilo para escrever código : integração com ClangFormat, suporte para estilos de nomenclatura variável em C / C ++, suporte para estilos diferentes para proteções de cabeçalho.
  • Novos recursos e aprimoramentos do depurador : visualizando o estado da memória - Memory View - para ponteiros, visualizando código desmontado no caso de LLDB, acelerando o trabalho de depuração passo a passo.
  • CLion para microcontroladores , os primeiros passos.
  • Capacidade de criar metas de configuração e configurações para iniciar / depurar no CLion, que não estão relacionadas ao modelo do projeto.
  • Trabalhe com outras linguagens de programação em literais de string em C / C ++.
  • Novos temas visuais e outros recursos da plataforma.

Lançamento do CLion 2019.1

Leia mais sobre essas e outras inovações abaixo. E para experimentar novos recursos e melhorias, baixe a versão gratuita de 30 dias do CLion em nosso site .

Suporte à linguagem C ++


Clangd


Como você já sabe, no CLion, existem duas ferramentas para suportar a linguagem C ++ - uma é completamente própria e a segunda é baseada no Clangd. Eles trabalham juntos, se complementando e compartilhando as informações necessárias. Ao mesmo tempo, se o desempenho e o critério de integridade funcional permitirem, agora estamos tentando transferir ferramentas inteligentes para trabalhar com código C ++ no CLion para uma ferramenta baseada no Clangd. Ainda não estamos falando sobre refatoração de código, mas o destaque do código em 2019.1 já foi feito com base no Clangd. Isso melhorou significativamente a capacidade de resposta do editor.

Alguns lançamentos, mudamos o CLion para uma ferramenta baseada no Clangd ao exibir erros no editor. Agora o texto do erro é mostrado em mais detalhes. Isso é útil, por exemplo, ao depurar erros relacionados à sobrecarga de função:

Clang erros

Além disso, é possível calcular a posição de uma possível correção (correção rápida) também através do Clangd. A correção em si é fornecida diretamente pela própria ferramenta do CLion.

Outra área interessante do nosso trabalho é escrever novas verificações na ferramenta de análise de código Clangd. A partir do CLion 2019.1, uma nova verificação do código C ++ informará quando uma função de membro de uma classe pode ser declarada estática:

Verificação de membro estático

A propósito, o gerenciamento das configurações dessa ferramenta alternativa no Clangd pode ser encontrado em Configurações / Preferências | Idiomas e estruturas | C / C ++ Clangd.

Ferramenta de análise de código personalizada


A produtividade do editor é uma das nossas principais prioridades. Além de muitas pequenas melhorias, nesta versão, é importante notar uma melhora significativa no tempo de indexação inicial do projeto. Isso nem sempre acontece, mas nos casos em que você usa as mesmas bibliotecas para seus projetos: o CLion pode perceber isso automaticamente e reutilizar os símbolos dessas bibliotecas para um novo projeto aberto que as utilize. Quando se trata de STL ou Boost, as melhorias são muito visíveis!

Nossos planos para este ano são aumentar a precisão de nossa refatoração para C ++. Começamos com os dois mais básicos - Renomear e Extrair. Para Extract, corrigimos muitos casos em que o resultado da refatoração estava incorreto devido a qualificadores de namespace considerados incorretamente considerados (por exemplo, std:: , especialização de modelos e nomes de tipos substituídos (alias de tipo).

Em relação à Renomeação, prestamos atenção ao caso em que há uma renomeação de uma classe ou estrutura que corresponde ao nome do arquivo em que elas estão localizadas. Anteriormente, sempre renomeamos o arquivo também, mas agora o CLion pergunta sobre o resultado preferido durante a refatoração. Você pode renomear ou pode deixar o nome do arquivo antigo. O inverso também funciona - renomear o arquivo não leva à renomeação incondicional da classe. (Em algum lugar aqui deve haver gritos da platéia: "Finalmente!")

Renomear classe

E, a propósito, um pouco mais tarde falarei sobre a capacidade de definir estilos de guardas de cabeçalho. Portanto, se o protetor de cabeçalho usado no arquivo seguir o modelo de estilo especificado e, ao mesmo tempo, o nome do arquivo renomeado estiver em seu nome, o CLion também atualizará o protetor de cabeçalho!

Estilos de codificação


Na versão 2019.1, adicionamos a capacidade de mudar para ClangFormat para formatar o código no CLion. Isso inclui não apenas a ação de formatação ( Ctrl+Alt+L no Windows / Linux, ⌥⌘L no macOS) ou formatação automática ao imprimir código, mas também pré-confirmar a formatação ao gerar código usando as ferramentas CLion, ao refatorar e aplicar correções (correções rápidas). Em geral, onde quer que o IDE formate o código, ClangFormat será chamado.

Você pode mudar para o ClangFormat globalmente - em Configurações / Preferências | Editor Estilo do código. E você pode apenas para um projeto específico. Além disso, se um arquivo de configuração no formato .clang for encontrado no projeto, o CLion oferecerá a troca para ClangFormat usando este arquivo de configuração:

Clangformat

Um pouco mais de detalhes podem ser encontrados em nosso blog (em inglês).

Nomear variáveis, tipos e outros caracteres no código é um problema complexo, às vezes até filosófico. Mas no mundo da programação (para melhorar a legibilidade do código), há muito que os estilos de nomeação são inventados. Existe estilo LLVM, existe Qt, existe Google. Portanto, nas configurações CLion Settings / Preferences | Editor Estilo de código | O C / C ++ agora tem uma nova guia - Convenção de Nomenclatura, na qual você pode escolher um dos estilos predefinidos ou personalizar seu próprio estilo, definindo o estilo de nomenclatura para vários tipos de caracteres (macros, funções globais, membros da classe, parâmetros, variáveis ​​locais etc.). A convenção selecionada será usada em todas as ações do IDE - geração de código, refatoração, correções automáticas etc. Além disso, se você quiser monitorar com mais precisão a implementação das regras de nomenclatura, poderá ativar a nova verificação de Nomenclatura Inconsistente, que mostrará nomes que não correspondem às regras e irá sugerir a opção de renomear:

Convenção de nomenclatura

Na mesma guia, você pode encontrar as configurações de estilo dos protetores de cabeçalho que mencionei acima:

Protetores de cabeçalho

A propósito, se você preferir usar #pragma , basta ajustar o modelo para novos arquivos de cabeçalho em Configurações / Preferências | Editor Modelos de arquivo e código.

Depurador


Ver Memória Ver


Finalmente, conseguimos visualizar a memória no depurador. Na versão atual, você pode ver a memória por ponteiro: basta clicar em qualquer ponto do painel Variáveis ​​durante a depuração e solicitar uma Visualização de memória ( Ctrl+Enter no Windows / Linux, ⌘Enter no macOS). E se a guia de exibição de memória estiver aberta durante a depuração passo a passo, você poderá ver as alterações destacadas na memória:

Vista de memória

As alterações na interface do usuário / UX já estão planejadas para o próximo lançamento, mas primeiro eu gostaria de coletar feedback dos usuários. Então escreva!

Desmontagem em caso de LLDB


O código assembler agora está dividido por função e, o mais importante, é mostrado não apenas no caso do GDB, mas também no LLDB!

Desmontador LLDB

Vale ressaltar, no entanto, que o código do assembler ainda é mostrado apenas nos casos em que não há códigos-fonte para a função. O chamado modo de desmontagem sob demanda ainda não é suportado.

Desempenho de depuração passo a passo


Às vezes, a depuração passo a passo é atrasada devido ao longo cálculo das variáveis ​​em cada etapa. Mas, afinal, às vezes esses cálculos não são necessários para ninguém - quero passar rapidamente por alguma área do código em etapas, ocasionalmente olhando os valores de um par de variáveis! Agora, no CLion, existe a oportunidade de desativar a recontagem de variáveis ​​durante a depuração passo a passo - Mute Variables no menu de contexto do depurador faz exatamente isso. E quando você precisar calcular e exibir os valores, poderá clicar em Carregar na variável:

Silentciar variáveis

CLion para microcontroladores


Ilya Motor ( elmot ) já escreveu aqui em Habré sobre seu plug-in para integração do CLion com STM32CubeMX e suporte ao depurador OpenOCD. No final do ano passado, Ilya se juntou à nossa equipe e já havia conseguido atualizar significativamente o plugin e movê-lo para o CLion.

Integração Cubemx

Uma postagem de blog bastante grande e detalhada sobre o plug-in atualizado pode ser encontrada em nosso blog . Aqui vou descrever a coisa mais importante que agora pode ser feita:

  • Na caixa de diálogo Novo projeto, você pode criar o projeto STM32CubeMX ( .ioc ).
  • Diretamente do CLion, execute o STM32CubeMX para o projeto para atualizar as configurações do microcontrolador e gerar código para o projeto.
  • O CLion irá gerar o arquivo CMake correto para trabalhar com este projeto.
  • O CLion sugerirá a escolha de um arquivo de configuração para o hardware (configuração da placa).
  • Para depuração usando o OpenOCD, você precisa criar uma configuração do tipo especial “OpenOCD Download and Run”. Para o projeto STM32CubeMX, o CLion criará um por conta própria. Depois de especificar todas as configurações, você pode depurar diretamente no microcontrolador a partir do CLion!

Ilya tem muitos planos ambiciosos, portanto seu feedback é muito importante para nós. Portanto, se você está interessado em desenvolver sistemas embarcados no CLion, estamos esperando por você nos comentários!

Projetar destinos e configurações independentes


Há algum tempo, a lista de modelos de design suportados no CLion foi expandida pelo Gradle C ++ e pelo banco de dados de compilação. Houve problemas com o último, porque o formato não inclui informações sobre a montagem de todo o projeto, portanto, nem a montagem, nem o lançamento, nem a depuração do projeto no caso de um banco de dados de compilação foram possíveis. Sim, e apenas no caso do conhecido modelo de projeto CLion, às vezes você deseja ter um alvo que é simplesmente montado por alguma equipe no terminal.

Agora, nesses casos, existem destinos personalizados (Configurações / Preferências | Compilação, Execução, Implantação | Destinos de compilação personalizados) e Configurações personalizadas de execução / depuração (Executar | Editar configurações ...). No caso de um destino, você precisa definir os parâmetros de ferramentas externas (ferramentas externas), que serão usadas na montagem e limpeza do projeto:

Destinos personalizados

E no caso de uma configuração independente do projeto, para inicialização e depuração, você precisa especificar o destino, o arquivo executável e os argumentos desejados para executar:

Configuração personalizada

Idioma injetado


Você tem literais de string no seu código que contêm uma consulta SQL, código HTML ou expressão regular? Nesse caso, certamente você gostaria de destacar pelo menos o código dentro do literal de acordo com sua origem. Agora é possível! Você pode incluir temporariamente outro idioma em um literal de cadeia de caracteres simplesmente pressionando Alt+Enter e selecionando a opção “Injetar idioma ou referência”. Agora, selecionamos o idioma de que precisamos e, mais recentemente, na literal de cadeia usual, aparece o destaque do idioma selecionado, bem como todas as ações especiais. O exemplo mais impressionante é a expressão regular e a capacidade de verificar a conformidade das seqüências diretamente com elas no IDE:

Idioma injetado

E muito mais


Os produtos da JetBrains geralmente são criados não por uma equipe pequena, mas pela equipe de toda a plataforma relevante. Portanto, o CLion obtém recursos do IntelliJ IDEA, WebStorm, AppCode, DataGrip, PyCharm, etc. Nesta versão, essas melhorias incluem o seguinte:

  • Veja todos os lugares no código do projeto em que o desenvolvedor fez algumas alterações ou apenas leia o código - Pop- ⇧⌘E Locais Recentes ( Shift+Ctrl+E no Win / Lin, ⇧⌘E no macOS).
  • Criação de novos temas para o IDE, além dos padrões claro, escuro (Darcula) e contraste (alto contraste). Exemplos de tais plug-ins e um tutorial passo a passo podem ser encontrados em nossa documentação .
  • Falando de plugins. Se você escreve em Rust, provavelmente sabe que existe um plugin IntelliJ Rust. No CLion, sua versão inclui suporte a carga e um depurador. E com o novo lançamento, o plug-in possui ferramentas para criação de perfil de código no Linux e no macOS, a capacidade de preencher automaticamente caracteres ainda não importados, além de outras melhorias.

Por enquanto é tudo. Obrigado se você ler até o fim!

Demo


Bem, e o vídeo tradicional sobre os novos recursos do CLion 2019.1 (em inglês):


Perguntas, desejos, relatórios de bugs e apenas pensamentos expressos nos comentários! Teremos o maior prazer em responder.

Sua equipe JetBrains CLion
O impulso para desenvolver

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


All Articles