Notícias do CLion: Lançamento 2020.1, IDE de cinco anos e perguntas e respostas on-line

Olá Habr!

Tanta coisa que quero dizer hoje que é até difícil escolher por onde começar. Então, primeiro, tentarei brevemente o mais importante:

  1. CLion tem 5 anos ontem! Em homenagem ao feriado, montamos uma pequena história em vídeo, uma memória peculiar e uma história sobre o quão interessante tudo está se desenvolvendo para nós nesses cinco anos. Avise imediatamente a história em inglês:


  2. Ontem, o primeiro grande lançamento do produto aconteceu este ano - CLion 2020.1 . Nele, apoiamos o dialeto CUDA, reescrevemos a Análise de fluxo de dados para Clang, ensinamos o IDE a trabalhar com os compiladores Clang-cl e IAR e também fizemos muitas outras melhorias e correções.
  3. Nos últimos meses, nossa equipe ficou muito triste sem conferências e exposições relacionadas, onde estamos sempre felizes em estar nos estandes da empresa e nos comunicar muito com nossos usuários e com a comunidade como um todo. Portanto, decidimos organizar uma sessão de perguntas e respostas on-line com a equipe - a sessão CLion Ask Me Anything (AMA) . A sessão será realizada em 7 de maio em tempo real, sendo necessária uma consulta preliminar. Participe e faça qualquer pergunta sobre o produto!

Agora vamos falar mais sobre todos esses eventos.

CLion - cinco!


Crescer filhos é sempre surpreendente e muitas vezes inesperado para os pais. A história é a mesma com o produto - parece que ontem lançamos a versão inicial e estávamos em contagem regressiva para o lançamento 1.0, mas hoje já estamos comemorando uma data redonda. O CLion agora tem mais de 200 mil usuários mensais, incluindo equipes de empresas como BMW, NASA, Tencent, Tesla e muitas outras, e, claro, cooperação com o Google e o Android Studio.

Temos o prazer de apoiar muitos estudantes em todo o mundo que, com o CLion, estão dando seus primeiros passos no desenvolvimento de software. E muito feliz em saber que um terço das equipes do ICPC na final de 2019 também usou o CLion!

Ferramentas ICPC Final

A empolgação com cada novo lançamento, a responsabilidade para um grande número de usuários, a unidade da equipe que faz um ótimo trabalho - tudo isso nos impressiona, e estamos felizes em compartilhar nosso primeiro aniversário pequeno com toda a comunidade Habr! Esperamos que você tenha gostado do filme;)

CLion 2020.1


Pode não ser o maior da escala dos últimos cinco anos, mas definitivamente lançamos um release importante ontem. Vamos conversar em ordem sobre as mudanças mais importantes:

  • Suporte de dialeto CUDA.
  • Para desenvolvedores incorporados, suporte e plug-in do compilador IAR para integração com o PlatformIO.
  • Integração atualizada com as ferramentas Clang - migração do DFA para o Clangd, conclusão automática aprimorada, trabalho mais próximo com o Clang-Tidy e o ClangFormat.
  • Para desenvolvedores no Windows - suporte para o compilador Clang-cl e o depurador padrão.
  • Valores de parâmetro padrão na refatoração de Change Signature.
  • Configurações de inicialização e depuração mais convenientes, incluindo redirecionamento de entrada e suporte a macro IDE.
  • Atualizações do formatador, aprimoramentos de editor e muito mais.

Cuda


O CLion agora suporta o dialeto CUDA C / C ++. O suporte inclui:

  • analisador de código correto (para excluir o código "vermelho" e a operação incorreta do analisador de código);
  • destaque e uma variedade de ações inteligentes, como navegação e visualização de documentação;
    Documento rápido CUDA
  • assistente atualizado para criar novos projetos - agora inclui um modelo para projetos CUDA;

    Novo projeto CUDA
  • suporte para extensões de arquivo CUDA (.cu / .cuh);
  • alvos especiais do CMake para CUDA - a caixa de diálogo para adicionar um novo arquivo oferecerá agora para adicioná-lo não apenas aos destinos adequados criados pelos comandos usuais do CMake, mas também específicos para o CUDA ( cuda_add_executable/ cuda_add_library);

    Adicionar CUDA aos destinos
  • e até o preenchimento automático de colchetes angulares para chamadas do kernel:

    Conclusão CUDA

Nota: para testes e capturas de tela, este projeto CUDA foi usado com o GitHub: ClaraGenomicsAnalysis .

Nos perguntaram por que nos concentramos tanto em CUDA, e não em outras áreas específicas, como Qt. Em resumo, é claro, gostaríamos de oferecer suporte a todos os tipos de projetos C / C ++ em nosso IDE. Mas em condições de recursos limitados, você deve fazer uma escolha e concentrar-se no suporte às capacidades mais universais. Dialetos como CUDA, se não houver suporte "pronto para uso", levam a código vermelho, erros no analisador de código e outros problemas com os recursos básicos do IDE. Ao contrário do Qt, onde o analisador geral lida com o código e apenas carece de alguns recursos específicos.

Para desenvolvedores incorporados


Continuamos a apoiar desenvolvedores de sistemas embarcados. Através da colaboração com a IAR Systems AB, conseguimos obter licenças de parceria e adicionar suporte ao compilador IAR ao CLion. Anteriormente, não era possível ler corretamente as informações do compilador e esses projetos não eram carregados corretamente no CLion. Agora tudo funciona!

Iar compiler

Vale ressaltar que, para usar o compilador, você precisa usar a cadeia de ferramentas MinGW. E aqui você pode encontrar algumas dicas sobre como usar o CMake com o IAR Embedded Workbench.

Continuaremos a trabalhar com a IAR Systems AB, e esperamos que um dia o CLion também tenha suporte para o depurador.

Desde o primeiro lançamento do CLion, conversamos com os criadores do PlatformIO, um ecossistema exclusivo para iniciar rapidamente projetos de sistemas embarcados. Por exemplo, ela ajudou muitos a iniciar o primeiro projeto no Arduino. Para a versão 2020.1, coletamos, embora um plugin PlatformIO for CLion bastante básico, mas útil . Sua oportunidade mais importante é criar um projeto para o PlatformIO com base no CMake, basta selecionar esse tipo de projeto no Assistente para Criar Novos Projetos:

Plug-in PlatformIO

O plug-in cria automaticamente configurações de inicialização e depuração específicas para o PlatformIO, além de permitir a depuração usando o PIO Unified Debugger diretamente de CLion Mais informações podem ser encontradas na documentação oficial . Tente escrever seus desejos para um maior desenvolvimento - agora estamos apenas imaginando onde e como desenvolver esse plugin ainda mais.

Integração atualizada da ferramenta Clang


Como você já sabe, estamos ativamente portando cada vez mais recursos para o mecanismo de linguagem baseado no Clangd. Primeiro, para obter rapidamente suporte para novos recursos de linguagem e adaptar as ações do IDE a eles, e segundo, em alguns casos, para melhorar o desempenho do editor (não em todos os lugares, infelizmente, o Clangd é uma ferramenta universal).

Na versão 2020.1, dedicamos muito tempo às correções de preenchimento automático baseadas em Clangd (que apareceram na versão 2019.3). E, tendo decidido que os resultados dessa abordagem são muito bons, eles ativaram o modo padrão no qual as opções de preenchimento automático são obtidas inteiramente do Clangd. Você pode ativar o modo misto de operação nas configurações:

Conclusão do Clangd

Mas não recomendamos fazer isso sem uma boa razão, pois a combinação de resultados de dois fornecedores diferentes pode causar problemas com prioridades. Além disso, a julgar pelas nossas medidas, o novo preenchimento automático baseado no Clangd não é mais lento, mas geralmente mais rápido que o embutido.

Clangd também moveu a análise de fluxo de dados (DFA) nesta versão. Este analisador merece um artigo separado, porque ele pode e faz o que os compiladores geralmente não fazem (principalmente porque não precisam dele, embora teoricamente seja possível reproduzir do lado deles) - analisa como os dados se movem ao longo do gráfico de fluxo de controle e, Com base nesse conhecimento, encontra possíveis erros. Por exemplo, condições sempre verdadeiras ou falsas, infinitas recursões e loops, expressões de retorno ausentes, valores não utilizados, parâmetros e variáveis ​​locais:

DFA sempre verdadeiro

Agora tudo funciona no Clangd. E esperamos que isso melhore o desempenho das análises de código em seus projetos. Infelizmente, antes, geralmente tínhamos de aconselhar os usuários a desativar a análise do DFA especificamente para melhorar o desempenho do editor. Nesse caso, sugerimos que você ligue novamente o analisador. Aguardamos o seu feedback em nosso suporte técnico e rastreador .

Para finalizar, as ferramentas Clang devem observar melhorias no suporte ao Clang-Tidy e ClangFormat:

  • Quando um arquivo de configuração .clang-tidy é encontrado no projeto, o CLion desativa automaticamente as configurações de Clang-Tidy no IDE e passa a usar esse arquivo de configuração. O comportamento é impulsionado pela personalização.
  • .clang-format CLion ClangFormat . ClangFormat, , CLion , .

Windows


Se no Linux e no macOS a cadeia de ferramentas CLion é bastante simples de escolher (usamos o GCC ou o Clang), no Windows há muitas opções que não são fáceis de descobrir: Cygwin, MinGW / Mingw-w64, WSL, Visual Studio. Ao mesmo tempo, diferentes compiladores são frequentemente usados ​​em cada cadeia de ferramentas. Há muito tempo nos perguntam sobre a possibilidade de usar o Clang no Windows. E no CLion 2020.1, tornou-se possível usar o Clang-cl (no site oficial do LLVM ou em conjunto com as ferramentas do Visual Studio) e usá-lo na cadeia de ferramentas do Visual Studio:

Clang-cl

A propósito, você notou o depurador selecionado por padrão nesta caixa de diálogo? O mesmo depurador baseado em LLDB para a cadeia de ferramentas Microsoft Visual C ++ que nossa equipe está desenvolvendo e que introduzimos no ano passado está incluído na nova versão por padrão! No entanto, se você também quiser usar o suporte dos Visualizadores Nativos, ainda precisará ativá-lo explicitamente nas configurações: Configurações | Compilação, Execução, Implantação | Exibições de dados do depurador | Habilite os renderizadores NatVis para LLDB.

Refatoração de assinatura de alteração


Entre as muitas refatorações no CLion, destaca-se o Change Signature (Ctrl + F6 no Windows e Linux, ⌘F6 no macOS). Permite alterar o nome da função, tipo de retorno, lista de parâmetros. Ao mesmo tempo, o IDE atualiza todos os usos da função para preservar a correção do código. Mas e se você adicionar um novo parâmetro? Anteriormente, o CLion colocava um valor padrão do tipo em todos os usos (se houver) - 0para números, nullptrpara ponteiros. Agora, a partir da versão 2020.1, tornou-se possível especificar o valor que o CLion substituirá pelo uso da função diretamente na caixa de diálogo de refatoração:

Alterar assinatura
Se você não especificar nada, o comportamento será como antes.

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


As muitas pequenas melhorias nas configurações de inicialização e depuração no CLion as tornaram muito mais utilizáveis.

Primeiro, as configurações do Remote GDB Server e Embedded GDB Server agora funcionam com destinos personalizados, não apenas com destinos do CMake. Portanto, agora é possível depurar em uma máquina remota ou em um microcontrolador, não apenas no caso de um projeto baseado no CMake, mas também em qualquer outro tipo de projeto para o qual você configurou destinos personalizados (especificando os comandos de construção e limpeza do projeto).

Em segundo lugar, para configurações como CMake, Custom Build e Gradle Native Applications, agora você pode usar macros e variáveis ​​de caminho. Com a ajuda deles, você pode acessar muitos valores úteis:

Macros IDE

E, finalmente, a opção de redirecionar a entrada do programa apareceu nesses tipos de configurações. Em combinação com as macros Prompt / FilePrompt, ele permite não apenas redirecionar a entrada para o programa de um arquivo, mas também mostrar uma caixa de diálogo para selecionar um arquivo a ser inserido no início da configuração:

Redirecionamento de entrada

Atualizações do formatador, aprimoramentos do editor e muito mais


Vale mencionar mais algumas pequenas melhorias pontuais em diferentes subsistemas:

  • Configurações de nomenclatura separadas para campos de estrutura e campos de classe.
  • Capacidade de recolher blocos de código destacados com #pragma region/ #pragma endregion.
  • A janela de visualização da documentação agora pode não apenas ser acessada por atalho, mas também pode ser vista simplesmente passando o mouse sobre o símbolo de interesse.
  • A fonte padrão no IDE agora é o JetBrains Mono , uma nova fonte monoespaçada do JetBrains projetada especificamente para desenvolvedores para ajudar a otimizar a legibilidade do código.
  • O tema padrão da luz agora é o mesmo nas três plataformas - IntelliJ Light.
  • As sessões de terminal podem ser divididas em várias horizontal ou verticalmente. Assim, várias sessões podem ser vistas simultaneamente em uma guia.
  • Na plataforma IntelliJ, as melhorias também foram integradas aos sistemas de controle de versão .

CLion me pergunte qualquer coisa


Uma sessão de perguntas e respostas on-line com desenvolvedores da equipe do CLion está agendada para 7 de maio. A sessão terá a participação de membros da equipe responsáveis ​​pelos seguintes subsistemas:

  • C C++, Clangd, C++ CLion.
  • .
  • .
  • ( , ClangFormat).
  • .
  • .
  • .

A sessão é gratuita, mas é necessário pré- registro . Também pedimos que você pense com antecedência e, se possível, deixe perguntas para a equipe no formulário de inscrição. Haverá uma oportunidade de fazer perguntas durante a sessão, por meio de um formulário especial (e eu vou moderá-lo e enviar perguntas aos colegas), mas as perguntas feitas com antecedência têm mais probabilidade de receber respostas detalhadas no início da sessão.

Isso é tudo por hoje. Leia até o fim? Muito obrigado pela atenção! Escreva perguntas, sugestões, exclamações nos comentários - estamos sempre felizes em ler e responder a eles!

Clion
A Equipe de Desenvolvimento

All Articles