Novidades no CLion

O CLion 2020.3 traz melhorias significativas e tão esperadas nas principais partes do processo de desenvolvimento: análise de código, execução e depuração de aplicações e teste de unidades. Para projetos incorporados, o CLion agora vem com suporte inicial para MISRA C e C++. E os usuários do Qt podem se beneficiar de recursos do IDE ajustados especificamente para trabalhar com o código Qt.

Depurador

Depurar como root

O CLion 2020.3 pode executar e depurar sua aplicação com privilégios root: você só precisa selecionar essa opção na configuração de Execução/depuração correspondente. Isso funciona para aplicações CMake, Makefile, Gradle Native, Custom Build e CTest.

Depurando com core dumps

Depurando com core dumps

Uma nova ação Run | Open Core Dump… disponível para Linux e macOS permite que você abra um core dump existente de um processo travado no CLion e depure-o lá. Os usuários podem inspecionar a exibição de quadros e variáveis, verificar a memória e a exibição de disassembly, avaliar expressões e executar comandos do depurador no console do depurador. Leia mais sobre o processo de configuração desse recurso e as limitações conhecidas.

Definir ponto de execução

Definir ponto de execução

Com uma nova ação Set Execution Point to Cursor, você pode mover-se para frente e para trás na execução do seu programa durante a depuração, interromper loops ou reiniciá-los, selecionar outro branch em uma cláusula if-else ou instrução switch-case e até mesmo pular loops completamente. O processo é tão simples quanto arrastar e soltar uma seta na medianiz até a linha de seu interesse.

Saiba mais

Dicas interativas e inspeções inline

Dicas interativas e inspeções inline

Agora, quando a aplicação está sendo executada no modo de depuração, o editor exibe dicas inline clicáveis que você pode expandir para ver todos os campos pertencentes a uma determinada variável. Além disso, você pode alterar os valores das variáveis dentro da lista suspensa ou adicionar uma expressão arbitrária como uma inspeção inline a esse local no código.

Configurações de execução

Configure o ambiente com um script

Configure o ambiente com um script

No CLion, agora você pode usar um script para especificar o ambiente no qual uma configuração de Execução/depuração será iniciada. Você encontrará a nova configuração para isso em todas as configurações de teste de unidade e aplicação.

Editar configurações durante a indexação

Editar configurações durante a indexação

Chega de esperar! Configurações de Execução/depuração podem ser editadas enquanto o projeto está sendo indexado.

Testes de unidade

Suporte para CTest

Suporte para CTest

O CTest, um executor de teste específico do CMake, agora é compatível com o CLion. Isso significa que a lista de testes que são executados com o CTest é detectada, e o IDE cria automaticamente configurações de execução/depuração para eles. Quando os testes são iniciados, os resultados são apresentados no executor de teste integrado, a partir do qual você pode depurar testes, executar novamente apenas os testes que falharam e fazer muito mais.

Saiba mais

Executor de testes para o Google Test

Executor de testes para o Google Test

A versão 2020.3 reforça o suporte do CLion para o Google Test, o framework de teste de unidades C++ mais popular do mundo (Pesquisa sobre o Ecossistema de Desenvolvedores em 2020 mostra que 31% dos desenvolvedores de C++ usam o Google Test).


    As atualizações incluem:
  • A árvore de teste completa é exibida imediatamente no executor de testes integrado e, em seguida, os testes são executados.
  • Para testes parametrizados, o CLion agora exibe os parâmetros de teste diretamente na árvore de teste.
  • Testes desabilitados (aqueles com o prefixo DISABLED em seus nomes) agora também são mostrados na árvore de teste com o ícone correspondente.

Análise de código e refatoração

MISRA

MISRA C e C++

O CLion 2020.3 traz suporte parcial para MISRA C 2012 e MISRA C++ 2008, diretrizes amplamente utilizadas no desenvolvimento embarcado e especialmente na indústria automotiva. Esse suporte acelera o desenvolvimento de tais projetos, revelando incompatibilidades logo no início do ciclo de desenvolvimento. A lista de verificações atualmente com suporte está disponível na página Confluence do CLion.

Valor não utilizado

Valor não utilizado

O CLion 2020.3 melhora a inspeção Unused Value, que detecta situações em que um valor de variável nunca é usado depois de ter sido atribuído. Agora, ele também pode ser ajustado para seguir o estilo que recomenda o uso de inicializadores de variável padrão. Uma nova opção para desativar a inspeção nesses casos foi adicionada às configurações.

Extrair parâmetro Lambda

Extrair parâmetro Lambda

Uma nova refatoração "Extract Lambda Parameter" foi adicionada ao CLion. Ela extrai uma expressão ou instrução em um novo parâmetro com uma expressão Lambda transmitida como um argumento correspondente. A instrução pode, por exemplo, ser um comparador transmitido para uma função de classificação.

Assista às refatorações de extração em ação

Complementação de código

Snippets de complementação do Clang

Snippets de complementação do Clang

Snippets de complementação do Clang ajudam a inserir construtos comuns quando palavras-chave C++ são digitadas. Em alguns casos, ao complementar uma palavra-chave typedef, por exemplo, a complementação de código pode sugerir não apenas a palavra-chave propriamente dita, como também stubs para o tipo e o novo nome.

Complementação para modelos

Complementação para modelos

O CLion 2020.3 melhora a complementação de código, pois agora funciona de maneira muito mais precisa com tipos de modelo. Por exemplo, opções de complementação são exibidas para elementos de contêiner e iteradores no modelo de função.

Projetos Qt

Criar um novo projeto Qt

Criar um novo projeto Qt

A caixa de diálogo "New Project" sugere os tipos de projeto "Qt Console Executable" e "Qt Widgets Executable". Você também pode selecionar o caminho do prefixo "Qt CMake", o padrão de linguagem C++ a ser usado no projeto e a versão do Qt. O novo projeto é gerado usando os modelos correspondentes.

Crie uma nova classe de UI Qt

Crie uma nova classe de UI Qt

Um novo item "QT UI Class" no menu "New" (Alt+Insert) ajuda você a criar simultaneamente uma classe Qt junto com um arquivo .ui. Preencha o nome da classe e selecione a classe pai (QWidget, QMainWindow ou QDialog). Arquivos .h/.cpp/.ui serão gerados usando a base Filename como seus nomes de arquivo. Os arquivos gerados seguem os modelos listados em "Settings/Preferences | Editor | File and Code Templates" – Qt Class, Qt Class Header e Qt Designer Form.

Complementar sinais e slots

Complementar sinais e slots

Sinais e slots são recursos centrais do Qt, pois são as entidades usadas para comunicação entre objetos. O CLion agora entende quando sinais ou slots precisam ser complementados e filtra apenas os membros correspondentes na lista suspensa de complementação.

Importação automática no estilo Qt

Importação automática no estilo Qt

As sugestões de importação automática em projetos Qt no CLion 2020.3 foram ajustadas para seguir o estilo mais comumente usado para o Qt.

Projetos Makefile

Suporte para projetos usando libtool, dolt e ccache

Suporte para projetos usando libtool, dolt e ccache

Projetos Makefile usando vários wrappers como ccache, libtool, dolt, slibtool e jlibtool agora pode ser carregado com sucesso no CLion. Leia mais sobre algumas das limitações que permanecem.

Configurações de execução/depuração

Configurações de execução/depuração

Configurar um projeto Makefile no CLion ficou mais fácil do que nunca: as configurações de Execução/depuração são criadas automaticamente para os destinos no Makefile de nível superior ao carregar o projeto. Agora, para executar e depurar, basta apontar a configuração para o executável construído.

Saiba mais

Recompile um único arquivo

Recompile um único arquivo

A ação Recompile (Ctrl+Shift+F9) ajuda a acelerar o processo de desenvolvimento ao compilar um único arquivo sem compilar o projeto inteiro. Ela agora funciona para projetos Makefile também!

CMake

Habilitar/desabilitar perfis CMake

Habilitar/desabilitar perfis CMake

Com o CLion 2020.3, agora é possível manter vários perfis CMake configurados no CLion e desabilitar aqueles que não estão em uso. Isso melhora os tempos de carregamento de projetos e evita falhas redundantes devido a perfis temporariamente indisponíveis (como para configurações remotas atualmente desligadas). A opção está disponível na janela de ferramentas CMake e na caixa de diálogo de configurações de perfis CMake.

Saiba mais

VCS

Guia Git no Search Everywhere

Guia Git no Search Everywhere

A caixa de diálogo Search Everywhere agora inclui uma guia Git. Ela ajuda a encontrar hashes e mensagens de submissão, tags e branches. Também pode fazer cálculos matemáticos simples no campo de pesquisa.

Atualizações na interface do usuário

O menu VCS agora recebe um nome de acordo com o sistema de controle de versão em uso. Tornamos o menu mais conciso, removendo todas as ações, exceto aquelas mais úteis para o controle de versão do seu projeto.

Além disso, os dois botões mais populares (Commit e Commit and Push…) aparecem explicitamente na tela "Commit".

Suporte a preparações do Git

Agora, você pode preparar mudanças diretamente do CLion. Para habilitar esse recurso, acesse "Preferences/Settings | Version Control | Git" e marque a caixa de seleção Enable staging area. Clique no ícone + para adicionar seus arquivos ao novo nó Staged na exibição Commit. Você também pode preparar mudanças diretamente na medianiz ou na exibição Diff. Para saber mais, leia nosso post de blog.

Desenvolvimento remoto

Atualização automática de caminhos de exclusão

Atualização automática de caminhos de exclusão

Diretórios marcados como Excluded localmente agora são automaticamente marcados como Excluded paths para conjuntos de ferramentas remotas quando estão sendo inicialmente configurados. E quando mudanças são feitas em um projeto já sincronizado, o CLion mostra uma notificação de atualização e sugere a atualização da lista de Caminhos excluídos.

Aprenda os detalhes

Code With Me

Code With Me

O CLion 2020.3 é compatível com o Code With Me (EAP), um novo serviço da JetBrains para desenvolvimento colaborativo e programação em pares. Com o Code With Me, você pode compartilhar o projeto que está aberto no momento no seu IDE com outras pessoas e trabalhar nele em tempo real. Baixe-o hoje mesmo no Marketplace de plug-ins (Preferences/Settings | Plugins | Marketplace). Confira estes posts para saber mais sobre o Code With Me.

Atualização da interface do usuário

Atualizações na tela de boas-vindas

Atualizações na tela de boas-vindas

O CLion 2020.3 recebeu uma tela de boas-vindas renovada. O novo layout coloca as operações mais comuns na ponta dos seus dedos e oferece acesso imediato a projetos recentes, opções de personalização e configurações de plug-ins.

Arrastar e soltar para guias

Dividindo um editor

Agora, é possível dividir um editor arrastando e soltando uma guia ao lado da janela principal do editor. A ação Open in Right Split divide o editor verticalmente ao abrir um arquivo.

Você pode invocar a ação na exibição Project ou de outros pop-ups de navegação, como Recent Files e Search Everywhere (Shift+Enter).

Tema do IDE sincronizado com as configurações do sistema operacional

Tema do IDE sincronizado com as configurações do sistema operacional

O CLion agora pode sincronizar com o tema do seu sistema operacional. Para habilitar esse recurso, acesse "Settings / Preferences | Appearance & Behavior | Appearance" e marque a caixa de seleção "Sync with OS". Clique no ícone de engrenagem ao lado de "Sync with OS" para selecionar seu tema preferido.

Atualização do plug-in Rust

Atualização do plug-in Rust

O IntelliJ Rust agora oferece suporte total aos recursos do Cargo e permite que você os configure com uma nova IU inteligente. Os recursos de uma área de trabalho podem ser ativados e desativados com um único clique, e a assistência de código do plug-in levará essas configurações em consideração. Confira os detalhes neste post de blog.

Além disso, o plug-in agora permite o uso do Rustfmt como o formatador de código padrão. Basta definir a caixa de seleção correspondente em Settings / Preferences | Languages & Frameworks | Rust | Rustfmt, e toda a reformatação do arquivo usará o Rustfmt. Por enquanto, se você chamar Reformat Code em uma seleção, o formatador do IDE será usado.

O assistente de projeto do plug-in foi aprimorado com mais modelos e a opção de usar modelos cargo-generate personalizados.

Outras atualizações incluem a introdução do suporte a projetos WebAssembly e um novo mecanismo experimental para a resolução de nomes.

Novidades no CLion 2020.2

O CLion 2020.2 garante que uma variedade de projetos em C++ seja coberta, adicionando projetos Makefile e aprimorando o suporte ao CMake. Ele fornece melhor conformidade com o padrão C++20. A análise de código agora é mais precisa e captura erros mais críticos, como indicadores pendentes. Testes de unidade, cobertura de código, desenvolvimento incorporado e outras áreas também foram significativamente aprimoradas.

Modelos de projeto

Suporte para projetos Makefile

Desenvolvendo um projeto baseado em Makefile? Aproveite os recursos inteligentes do CLion - o CLion agora vem com suporte imediato para projetos Makefile. Abra uma pasta com um Makefile de nível superior como projeto ou aponte diretamente o CLion para um Makefile na caixa de diálogo Open. O IDE executará make (com a opção --just-print para evitar a execução de uma compilação real), analisará a saída do comando make e carregará o projeto. Confira os detalhes, as limitações conhecidas e uma longa lista de projetos com os quais testamos nossa abordagem neste post de blog.

Faça um rápido tour

UX (experiência do usuário) CMake aprimorada

UX (experiência do usuário) CMake aprimorada

As configurações do CMake Profile em Build, Execution, Deployment | CMake têm uma interface de usuário mais limpa, com algumas dicas úteis adicionadas para as configurações existentes. Além disso, várias ações para os projetos CMake agora estão disponíveis em Find Action, e você pode atribuir um atalho a uma ou a todas elas caso as utilize regularmente:

  • Configurações CMake
  • Interromper recarregamento de projetos CMake
  • Abrir arquivo CMakeCache

Upgrade do CMake

Agora, o Clion inclui o CMake 3.17 e adiciona suporte inicial para dois de seus recursos mais recentes:

  1. Ninja Multi-Config: agora, você pode transmitir a opção de gerador -G "Ninja Multi-Config" para que o CLion compile arquivos gerados para cada configuração (observe que, temporariamente, o CLion ainda usará apenas uma configuração selecionada para o perfil CMake).
  2. Cabeçalhos CMake pré-compilados: use o comando target_precompile_headers para adicionar arquivos de cabeçalho às propriedades PRECOMPILE_HEADERS e/ou INTERFACE_PRECOMPILE_HEADERS de um destino. O CLion tratará esses cabeçalhos pré-compilados corretamente.

Faça um rápido tour

Compilando projetos

Recompile um único arquivo

A ação Recompile single file ajuda a acelerar o processo de desenvolvimento, verificando rapidamente as alterações locais, e agora está disponível para o Ninja e outros geradores usados no CMake e compatíveis no CLion.

Graças a uma importante correção de bugs, o Clion agora pode compilar vários projetos independentes em paralelo, sem que eles impeçam um ao outro de serem iniciados.

Análise de código

A análise de código no Clion 2020.2 recebeu uma atualização de peso, aumentando a precisão de muitas verificações e abrangendo mais casos. Essa versão também continua o trabalho de aperfeiçoar a Análise de Fluxo de Dados, reimplementada anteriormente junto com o mecanismo baseado em Clangd.

Dangling pointer (ponteiro solto)

Dangling pointer (ponteiro solto)

Ponteiros que apontam para dados inválidos levam a problemas em tempo de execução. Casos típicos são combinações de double-free e use-after-free. Agora, o CLion captura esses ponteiros soltos se eles aparecem no escopo local, nenhuma aritmética do ponteiro está envolvida e macros não estão impedindo o CLion de executar a análise.

Simplify

Simplify

A inspeção de código Simplify agora é mais precisa e abrange mais casos. Ela funciona para os seguintes tipos de instruções:

  • condition == true.
  • condition1? true : condition2.
  • if(condition1) return true; return condition2;
  • Instruções para branches idênticos.

Os casos podem ser configurados separadamente em Settings | Editor | Inspections | C/C++ | General | Simplifiable Statement.

A condição do loop nunca é atualizada

A condição do loop nunca é atualizada

Esta inspeção do CLion detecta situações em que uma condição de loop não é atualizada dentro do loop. Ela é semelhante a clang-tidy:bugprone-infinite-loop do Clang-Tidy, mas funciona para loops com pontos de saída e pode lidar com casos com lambdas ou referências.

Código não utilizado

Código não utilizado

A inspeção Unused code foi massivamente reformulada. Entre outras mudanças, ela agora funciona para aliases de tipo, para construções "using" definidas tanto global quanto localmente.

Widget de inspeções e exibição Problems

Widget de inspeções e exibição Problems

Por último, mas não menos importante, introduzimos um novo Widget de Inspeções. Ele exibe o número de avisos e erros no arquivo atual e permite navegar entre eles com facilidade. Você também pode configurar o nível de realce (como podia fazer anteriormente com o chamado ícone Hector).

Se você clicar no Widget de Inspeções, a janela de ferramentas da exibição Problems será aberta (View | Tool Window | Problems). Ela mostra a lista de avisos e erros no arquivo atual, ajuda a navegar até o local do código em que o problema foi encontrado e permite corrigir os problemas, chamando o atalho Alt+Enter direto da janela de ferramentas.

C++20

Este ano traz oficialmente um novo padrão de linguagem para desenvolvedores C++, e o CLion já vem com suporte para muitos dos seus recursos. O mecanismo de linguagem no CLion 2020.2 também está mais estável em geral no código C++20.

Palavras-chave do C++20

Palavras-chave do C++20

Palavras-chave recém-adicionadas são compatíveis no CLion 2020.2 para realce e complementação de código:

  • char8_t
  • consteval e constinit
  • co_await, co_return e co_yield
Inicializadores designados

Inicializadores designados

A complementação de código em inicializadores designados agora funciona para campos de uma classe base.

explicit(bool)

explicit(bool)

A construção explicit(bool) C++20 agora é realçada corretamente. Ela também está equipada com dicas de nome para argumentos de condição e é compatível na navegação e refatoração.

"For" baseado em intervalo com inicializador

for baseado em intervalo com inicializador

Agora há suporte para loops de for baseado em intervalo com a instrução init. Isso inclui refatorações como Rename para variáveis no loop.

Restringir o resultado de uma função

Restringir o resultado de uma função

Foi adicionada uma nova inspeção para o código que usa Concepts. Ela sugere restringir variáveis locais declaradas como automáticas se o resultado de uma chamada de função restrita for atribuído a elas.

Testes de unidade

Suporte para Doctest

Suporte para Doctest

O CLion 2020.2 adiciona suporte para mais um framework de cabeçalho único para C++ – Doctest. O Doctest ganhou popularidade na comunidade e agora tem suporte no CLion, com detecção automática de teste, criação de configurações Run/Debug e um prático executor de teste integrado para exibir os resultados do teste. Saiba como configurar um conjunto de testes para lançamento neste post de blog dedicado ao assunto.
Testes de modelos Catch2

Testes de modelos Catch2

Esses tipos de testes no Catch2 agora são reconhecidos e manipulados exatamente como os outros tipos de testes.

Ignorando testes no Google Test

Ignorando testes no Google Test

A macro GTEST_SKIP() no Google Test fornece a capacidade de pular testes em tempo de execução. Isso agora tem suporte no CLIon.

Cobertura de código

Cobertura de código

O CLion 2020.2 melhora a experiência do usuário, adicionando sinalizadores de cobertura automaticamente quando você clica no botão Run with Coverage. Agora, se o perfil CMake atualmente selecionado não incluir opções de compilador para cobertura, o CLion procurará um perfil CMake (e criará um se ele não for encontrado) com os sinalizadores de cobertura transmitidos por CMAKE_CXX_FLAGS e CMAKE_C_FLAGS.

Desenvolvimento embarcado: plug-in PlatformIO

Para desenvolvimento embarcado, atualizamos um plug-in para PlatformIO, trazendo melhorias significativas:

Realce em arquivos platformio.ini

Realce em arquivos platformio.ini

Arquivos de configuração de projetos PlatformIO agora são realçados corretamente, para que você possa lê-los e atualizá-los com mais facilidade.

Novas configurações Run/Debug

Novas configurações Run/Debug

Quando um novo projeto é criado a partir do Assistente New Project no CLion, muitas configurações Run/Debug úteis são adicionadas automaticamente. Por exemplo, _PROGRAM, _MONITOR, _CLEAN, _TEST e muitas outras.

Perfis CMake para configurações PlatformIO

Perfis CMake para configurações PlatformIO

O CLion agora cria automaticamente perfis CMake para as entradas CMAKE_CONFIGURATION_TYPES no projeto PlatformIO CMake.

VCS

Git instalado no WSL2

Git instalado no WSL2

Se você desenvolve com as toolchains WSL2 e usa o Git no WSL2, agora pode aproveitar a alternância do CLion entre executáveis do Git, dependendo da localização do projeto. Ele detectará automaticamente o executável Git do WSL2 para projetos abertos a partir de lá (via \\wsl$ path) e alternará todos os recursos relacionados ao Git para trabalhar com ele.

Solicitações de extração do GitHub

Solicitações de extração do GitHub

O CLion 2020.2 apresenta uma visão nova e mais ampla de solicitações pull do GitHub. Ele mostra todos os detalhes de uma solicitação pull específica (como mensagens, nomes de branches, autor, destinatário, arquivos alterados, submissões e linha do tempo) e exibe os resultados das verificações pré-submissão. Ele também ajuda com muitas ações, como iniciar uma revisão, solicitar revisões, anexar comentários ou mesclar solicitações pull de dentro do IDE.

Saiba mais

Ir para declaração ou usos

Go to Declaration or Usages

A ação "Go to Declaration or Usages" (Ctrl+Clique / Ctrl+B) comporta-se de forma diferente dependendo do caso e das configurações do IDE:

  • Quando invocada em um uso de símbolo, ela navega até a declaração desse uso.
  • Quando invocada em uma declaração, ela mostra a lista de usos dessa declaração.
  • Quando invocada em uma definição, ela mostra a declaração ou usos associados. Isso depende das configurações em Settings | Editor | General | Go to Declaration or Usages.

Melhorias de desempenho

Alguns congelamentos e lentidões da interface do usuário foram corrigidos. Para evitar a degradação do desempenho do editor, o CLion agora insere uma barra invertida ao pressionar Enter dentro da definição de macro. A definição de macro provavelmente continuará em uma nova linha e, portanto, isso evita que o IDE repare redundantemente a atividade.

Atualização do plug-in Rust

Atualização do plug-in Rust

Na versão 0.3 do plug-in, o novo mecanismo de expansão de macro, que até agora era experimental, está habilitado por padrão. Esse mecanismo manipula blocos impl gerados por macro e declarações de módulo, fornecendo informações para todo o seu código, incluindo crates como tokio e async-std. Saiba mais nesta postagem de blog.

Outra grande atualização é a introdução do suporte inicial ao depurador para a toolchain MSVC do Rust. Agora, você pode usar o depurador baseado em LLDB incluído no CLion para a toolchain do Visual Studio para depurar o código Rust criado no Windows usando a MSVC do Rust.

Outras melhorias incluem novas refatoração (Move para arquivos e itens de alto nível e Introduce Constant), suporte inicial para or_patterns, realce de erros em literais de formato dentro de macros como println!, renderização para documentação no editor, dicas de inserção para chamadas de método em cadeia e aprimoramentos no workflow do depurador no IntelliJ IDEA.

Saiba mais

Outras melhorias

  1. O depurador baseado em LLDB para a toolchain do Microsoft Visual Studio C++ mantido pela JetBrains recebeu um número significativo de aprimoramentos. Os mais notáveis são: as sessões de depuração não congelam mais ao serem interrompidas, as threads agora são nomeadas automaticamente com base em sua função de ponto de entrada, o depurador obteve melhorias significativas de desempenho e muitos congelamentos e falhas foram corrigidos.
  2. Os pretty-printers GDB STL atualizados estão incluídos no CLion 2020.2.
  3. De agora em diante, o mecanismo baseado no Clangd é o mecanismo de linguagem padrão no CLion, e a opção de desativá-lo foi removida. Settings | Languages & Frameworks | C/C++ | Clangd agora inclui informações sobre a revisão do LLVM Clang usada, para que você saiba o que esperar em termos de suporte ao C++ e verificações internas do Clang-Tidy.

Novidades no CLion 2020.1

Desenvolvimento embutido

Toolchain IAR

Toolchain IAR

Se você usar o compiler/toolchain IAR em seus projetos incorporados, agora poderá fazer isso no CLion. A coleta de informações do compiler não falha mais, o que significa que os projetos que usam a toolchain IAR são carregados com sucesso e funcionam no CLion.

Algumas coisas a serem observadas aqui:

  • O MinGW é necessário.
  • Algumas dicas sobre o uso do CMake com o IAR Embedded Workbench.
PlatformIO

PlatformIO

O PlatformIO é um ecossistema de nova geração que está ganhando popularidade rapidamente. Para aproveitar os benefícios que ele oferece nos seus projetos incorporados, use o novo plug-in PlatformIO para CLion, que:

  • Adiciona o tipo de projeto PlatformIO ao assistente de Novo Projeto.
  • Gera o projeto correspondente baseado em CMake do PlatformIO.
  • Cria configurações automaticamente para depuração e upload.
  • Permite a depuração com o PIO Unified Debugger a partir do CLion diretamente no chip.

E muito mais! Confira a documentação oficial para obter detalhes.

Suporte para CUDA

Análise de código e assistência de código

O código no CUDA C e C++, incluindo todas as extensões específicas do CUDA, agora é analisado e realçado corretamente. Isso significa que a navegação de código, a documentação de código e outras ações de assistência ao código funcionam em código CUDA. Além disso, o CLion pode preencher chaves para chamadas de kernel.

Vamos clonar o projeto ClaraGenomicsAnalysis do GitHub e conferir do que o CLion é capaz em termos de suporte para CUDA.

Assistente para novo projeto

Assistente para novo projeto

O assistente para novo projeto no CLion foi atualizado com uma nova opção para criar projetos CUDA – bibliotecas ou executáveis. Quando selecionado, ele gera arquivos de amostra CMakeLists.txt e main.cu para você.

Extensões de arquivo e destinos do CMake

Extensões de arquivo e destinos do CMake

Novas extensões de arquivos CUDA com suporte – .cu e .cuh – estão disponíveis na nova caixa de diálogo de criação de arquivos C/C ++. E a lista de destinos possíveis a serem atualizados nessa caixa de diálogo inclui destinos específicos gerais do CMake e CUDA (criados com os comandos cuda_add_executable e cuda_add_library).

Saiba mais

Desenvolvimento no Windows

Clang-cl

Clang-cl

Agora, tornamos possível o uso do clang-cl no CLion no Windows, com suporte para as versões 8.0 e posteriores.

Você pode instalá-lo no site do LLVM ou junto com as ferramentas para Visual Studio. Quando terminar, selecione a toolchain do Visual Studio no CLion e aponte para clang-cl.exe nas configurações da toolchain.

Depurador para a toolchain do Visual Studio C++

Depurador para a toolchain do Visual Studio C++

O depurador baseado em LLDB para a toolchain do Visual Studio C++ desenvolvido pelo JetBrains agora é o depurador padrão para essa toolchain. Isso significa que você pode começar a usá-lo imediatamente!

Observe que o suporte incluído para visualizadores nativos deve ser habilitado explicitamente em Settings | Build, Execution, Deployment | Debugger Data Views | Enable NatVis renderers for LLDB.

Configurações de execução e depuração

Destinos personalizados para GDB remoto e incorporado

Destinos personalizados para GDB remoto e incorporado

As configurações do Servidor GDB remoto e do Servidor GDB incorporado agora funcionam com destinos personalizados. Essas configurações, que antes só funcionavam com destinos CMake, permitem que você depure seu aplicativo em um host remoto ou no microcontrolador da instância do CLion em execução na máquina local.

Se você já tiver criado essas configurações, o CLion 2020.1 armazenará as configurações de Execução/Depuração anteriores no diretório projectFilesBackup na pasta do projeto e enviará uma notificação sobre isso.

Suporte para macros e variáveis de caminhos nas configurações de Execução/Depuração

Suporte para macros e variáveis de caminhos nas configurações de Execução/Depuração

Agora, você pode usar variáveis e macros de caminho nos campos Program Arguments e Working Directory das configurações do CMake, de compilações personalizadas e aplicativos Gradle Native. Macros ajudam você a obter valores para:

  • O diretório de compilação da atual configuração de execução do CMake.
  • O diretório de geração da atual configuração de execução do CMake.
  • O diretório de arquivos do projeto.
  • E muitos outros.

As macros FilePrompt/Prompt podem ser usadas para mostrar uma caixa de diálogo de seletor de arquivos ou uma caixa de diálogo de entrada de string ao executar/depurar a configuração.

A variável de caminho pode definir um caminho até a biblioteca que é amplamente utilizada nos seus projetos, mas que está localizada fora do diretório do projeto.

Redirecionamento de entrada

Redirecionamento de entrada

Se você precisa redirecionar a entrada de um arquivo para o stdin do seu aplicativo, agora pode fazer isso facilmente. Use um novo campo na configuração chamado Redirect input from. Insira:

  • Um caminho relativo (o CLion será pré-anexado com o caminho do diretório de trabalho).
  • Um caminho absoluto (será remapeado para configurações remotas).
  • Ou macros (como FilePrompt).

Ferramentas Clang

DFA no Clangd

DFA no Clangd

A Data Flow Analysis (DFA), ou Análise de fluxo de dados, do CLion faz o que um compiler normalmente não faz por você: analisa como os dados fluem pelo seu código e detecta possíveis problemas com base nos resultados. Ela captura condições que são sempre falsas/verdadeiras, loops infinitos, instruções de retorno ausentes, recursão infinita e muito mais. E, com a versão 2020.1, a DFA mudou para o mecanismo de linguagem baseado em Clangd para se tornar mais precisa e menos pesada em termos de desempenho. Ela ainda está em desenvolvimento, mas alguns bons resultados já estão disponíveis!

Preenchimento apenas em Clangd

Preenchimento apenas em Clangd

Um novo modo, no qual o preenchimento é totalmente fornecido pelo mecanismo de linguagem baseado em Clangd, está ativado por padrão. Esse modo resolve os problemas de priorização e ordenação que ocorriam quando os resultados do preenchimento de código de vários mecanismos eram combinados. Esse comportamento é controlado pela configuração Code Completion em Settings | Languages & Frameworks | C/C++ | Clangd.

Dezenas de várias correções e aprimoramentos tornam esse novo modo bastante preciso e eficiente.

Saiba mais

ClangFormat

ClangFormat

Agora, quando você abre um projeto pela primeira vez com um arquivo de configuração .clang-format na raiz do projeto, o CLion o detectará e muda automaticamente para ClangFormat para você.

Se você ativar o ClangFormat em um projeto que não possui um arquivo de configuração .clang-format, o CLion sugerirá a criação de um arquivo para você.

Clang-Tidy

Clang-Tidy

Quando um arquivo de configuração .clang-tidy for detectado no projeto, o CLion agora desativará automaticamente o uso das configurações do IDE para o Clang-Tidy. O comportamento é controlado por Prefer .clang-tidy files over IDE settings, em Settings | Editor | Inspections | C/C++ | General | Clang-Tidy.

Formatador e desdobramento de código

Novas configurações de nomeação

Novas configurações de nomeação

Agora, campos de membros de structs e campos de membros de classes têm configurações de nomeação separadas. Confira-as em Settings | Editor | Code Style | C/C++ | Naming Convention.

Desdobramento de código

Desdobramento de código

#pragma region e #pragma endregion podem ser usados no CLion para desdobramento de código..

Atualização de refatorações

Atualização de refatorações

Ao chamar a refatoração Change Signature (Ctrl+F6), o CLion atualiza todos os usos da função. Um novo campo Default value na caixa de diálogo Change Signature oferece a capacidade de especificar o valor do parâmetro a ser usado em todos os usos. Mantenha-o em branco para usar o tipo de valor padrão como antes.

A mesma lógica e um novo campo Default value aplica-se à correção rápida Create Parameter From Usage e à intenção Add Parameter to Constructor.

Editor

Documentação rápida

Documentação rápida

A Quick Documentation - uma ferramenta universal para visualizar a documentação e obter informações sobre assinatura de funções, tipos inferidos e substituição de macros – agora está disponível ao focalizar com o cursor do mouse.

Ela pode ser controlada pela configuração Show quick documentation on mouse move em Settings | Editor | Code Editing.

JetBrains Mono e IntelliJ Light

JetBrains Mono e IntelliJ Light

A fonte padrão no editor foi alterada para JetBrains Mono, uma nova fonte de código aberto criada pela JetBrains. Ela foi projetada especificamente para facilitar a leitura do código.

Um novo tema claro padrão, IntelliJ Light, agora é o tema padrão em todos os diferentes sistemas operacionais. Use View | Quick Switch Scheme | Theme para selecionar um tema não padrão, se desejar.

Sessões de terminal divididas

Sessões de terminal divididas

Com o CLion 2020.1, você pode dividir sessões de terminal na vertical ou na horizontal para poder executá-las lado a lado. Você pode chamar o menu de contexto do Terminal para criar, navegar e encerrar uma sessão de terminal dividida.

Controle de versão

Janela de ferramentas Commit e caixa de diálogo Commit

Nova janela de ferramentas Commit

Uma janela de ferramentas atualizada fornece mais espaço para a lista de arquivos modificados e as diferenças. Ela também permite adicionar alterações a uma submissão quando elas estão prontas, compor uma mensagem de confirmação de forma iterativa e escolher quais das alterações em fases serão inseridas em qual submissão.

A nova interface do usuário é ativada por padrão para novos usuários. Usuários existentes podem alternar para ela em Settings | Version Control | Commit.

Caixa de diálogo "Interactively Rebase from Here"

Uma caixa de diálogo atualizada e realmente interativa permite:

  • Selecionar uma ação que você deseja realizar em cada submissão do seu branch.
  • Verificar um gráfico mostrando quais ações foram aplicadas.
  • Visualizar os detalhes da submissão.
  • Veja um diferencial e revise ou redefina as alterações, se necessário.

Instalar o Git a partir do IDE

A janela de ferramentas Version Control agora se chama Git, ou Subversion/Mercurial/Perforce, se você estiver usando alguma delas no lugar do Git.

Você não precisa mais pré-instalar o Git manualmente! Quando você abre um projeto usando o Git ou importa um do VCS, se você não tiver o Git na sua máquina, o CLion oferecerá o download e a instalação do Git para você.

Atualização do plug-in Rust

Atualização do plug-in Rust

Com as melhorias no suporte ao LLDB, o IntelliJ Rust agora renderiza corretamente enumerações e tipos primitivos, além de mostrar nomes de funções desmembradas na pilha de chamadas.

Outra grande atualização que chegou ao plug-in é a integração com o REPL. Invoque o console em Tools | Rust REPL e use-o para criar um protótipo e verificar seu código linha por linha. A integração fornece realce de sintaxe e preenchimento de código, além de algumas ações práticas do console: histórico de comandos, quebra automática, rolagem rápida até o final e muitas outras.

No lado do suporte a linguagens, o IntelliJ Rust agora lida com blocos impl para aliases de tipo. Levando o desempenho em consideração, apenas ativamos esse recurso para tipos com um número limitado de aliases.

Outros aprimoramentos incluem o realce para variáveis locais não utilizadas, correções no suporte ao atributo cfg e a nova inspeção Lift return.

Outras melhorias

  • Todas as configurações remotas agora se beneficiam do uso da UI comum e unificada de configurações SSH. Independentemente da origem de uma nova configuração SSH (sejam ela uma configuração de toolchain ou de servidor GDB remoto), ela terá uma entrada em Settings | Tools | SSH Configurations.
  • Se quiser se concentrar apenas no seu código-fonte, poderá selecionar um novo modo Zen, que combina o modo sem distração com o modo de tela cheia. Para habilitá-lo, use View | Appearance | Enter Zen Mode.