A versão final deste ano é CLion 2020.3! Com novos recursos no depurador, MISRA verifica e melhorias para Qt

Olá, Habr!



À medida que o ano está chegando ao fim, nós da JetBrains estamos lançando os tradicionais lançamentos de "trem a vapor" para nossas ferramentas de desktop. Já escrevemos sobre alguns deles ( WebStorm , DataGrip ) aqui no Habré. E hoje é hora de falar sobre a atualização de nosso ambiente de desenvolvimento de plataforma cruzada em C e C ++ - CLion 2020.3!



Versão do CLion 2020.3



Resumidamente sobre o mais importante:



  • O depurador agora tem a capacidade de examinar despejos de memória e executar configurações com privilégios de administrador. E agora você pode mover o ponto de execução através do código em qualquer direção durante uma sessão de depuração.

  • Para teste de unidade, adicionamos suporte para CTest, o executor de teste que vem com o modelo de design CMake.

  • Qt Qt- UI, , Qt .

  • , Makefile, CLion. CMake CMake.

  • MISRA C 2012 MISRA C ++ 2008.

  • Bem como muitas outras melhorias para configurações de inicialização e depuração, suporte para sistemas de controle de versão e para modo de desenvolvimento remoto. Várias melhorias interessantes na interface do usuário. E ... a tão esperada prévia do novo serviço de desenvolvimento colaborativo e programação em pares.



A nova versão pode ser baixada do site e testada gratuitamente por 30 dias. Se você tiver uma assinatura ativa do CLion ou do Pacote de Todos os Produtos, basta atualizar a versão para 2020.3. Como um lembrete, ao adquirir uma assinatura anual para qualquer produto, você receberá uma licença perpétua de backup .



Agora vamos falar sobre as inovações e melhorias na versão 2020.3 com mais detalhes.



Depurador



A versão 2020.3 é um marco importante no desenvolvimento de integrações de depurador no CLion. E não é por acaso, pois essa integração não é utilizada por um, mas por vários produtos da empresa! CLion, um plugin do IntelliJ Rust , e uma prévia do ambiente de desenvolvimento de jogos Rider for Unreal Engine . Juntos, conseguimos implementar muitos novos recursos importantes no depurador.



Depuração com despejos de memória



O processo terminou de forma anormal, ou seja, caiu, deixando para trás um despejo de memória? Nova ação de execução | Open Core Dump, disponível para Linux e macOS, permitirá que você abra um dump de memória de um processo interrompido no CLion para depuração adicional:



Despejo de núcleo aberto



Na caixa de diálogo, você precisa especificar o caminho para o dump de memória, o caminho para o arquivo com símbolos de depuração (por exemplo, o arquivo executável do programa é adequado se o assembly foi habilitado no modo de depuração), correspondência de caminho (se o arquivo executável foi construído em outra máquina). O CLion criará uma configuração para depurar esse despejo de memória que você pode executar.



A caixa de diálogo pode exibir uma lista de configurações já criadas. As configurações também podem ser criadas manualmente em Executar | Editar configurações. Durante a depuração com um despejo de memória, você pode analisar informações sobre quadros, examinar os valores das variáveis, visualizar o estado da memória e do código assembler, avaliar expressões e executar comandos do console do depurador. Ao mesmo tempo, por razões óbvias, a depuração passo a passo é desabilitada e a janela de saída do processo não está disponível.



Depurar despejo de núcleo



Das limitações atuais, além da indisponibilidade de uma nova função na plataforma Windows, vale destacar que, no caso do LLDB, o arquivo com símbolos de depuração ainda não é utilizado. E as possibilidades de depuração de dumps coletados em outra máquina e de depuração remota de dumps são muito limitadas ( CPP-22736 , CPP-22656 ).



Executar e depurar com privilégios de administrador



Uma nova caixa de seleção apareceu nas configurações de inicialização e depuração desta versão - para iniciar a configuração com privilégios de administrador. A personalização é compatível com muitos tipos de configurações: CMake, Makefile, Gradle Native, Custom Build, CTest.



Para usar o novo recurso de maneira mais conveniente na prática, escrevemos um daemon especial que solicita que você permaneça conectado como administrador ao executar tais configurações por um período de tempo selecionado:



Configurações de elevação



Leia mais sobre como esse novo recurso funciona aqui (em inglês).



Definindo o ponto de execução



Os usuários do Visual Studio podem estar familiarizados com um recurso útil, como alterar o ponto de execução durante uma sessão de depuração. Para todos os outros: imagine que você deseja pular a execução de um loop inteiro, alterar o branch de uma instrução condicional, voltar algumas etapas no fluxo de execução do programa durante uma sessão de depuração. Agora, o CLion tem uma nova ação Set Execution Point to Cursor para isso , ou você pode reorganizar manualmente a seta amarela para a linha desejada no editor:



Definir Ponto de Execução



Vamos fazer uma reserva de que tal ação pode quebrar o programa (por exemplo, se você perder o comando para inicializar uma variável). Mas, se usado com habilidade, permitirá que você depure seu aplicativo com muita eficiência.



Dicas interativas



Quase todos os nossos IDEs baseados em IntelliJ têm dicas interativas e relógios integrados na versão 2020.3. Mesmo antes de 2020.3, durante uma sessão de depuração, você podia ver os valores das variáveis ​​diretamente no editor. Agora essas dicas se tornaram interativas - você pode expandir a variável e ver o valor de todos os seus campos: Você



Dicas interativas



também pode adicionar uma expressão arbitrária para contar e visualizar diretamente no editor (ao lado da linha de código necessária). Isso acaba sendo mais conveniente do que relógios comuns (que são constantemente mostrados na janela do depurador) quando as variáveis ​​usadas na expressão têm significado apenas em um lugar específico no código (por exemplo, variáveis ​​locais).



Quer ver os novos recursos em ação? Experimente você mesmo ou assista a este vídeo de nosso advogado desenvolvedor:





Teste de unidade



Em termos de estruturas de teste de unidade, CLion oferece suporte ao Google Test, Catch (2), Boost.Test e doctest. Em nossa Pesquisa de Ecossistema de Desenvolvimento de 2020, 31% dos desenvolvedores C ++ usam o Google Test. Portanto, dedicamos um tempo para melhorar a apresentação dos resultados da execução do teste do Google no CLion:



  • Aprendemos como construir uma árvore de teste imediatamente, antes mesmo de todos os testes serem executados.

  • Começou exibindo valores de parâmetro de teste (para testes parametrizados).

  • Introduzido um ícone especial para marcar os testes DESATIVADOS na árvore.

  • E o mais importante, eles aceleraram significativamente o processo de localização de testes no projeto.



Gt run



Nossos usuários (em particular, aqui no Habré) ativamente pediram para adicionar suporte para CTest, um executor de teste que vem com o modelo de projeto CMake. Não foi muito fácil, uma vez que o próprio CTest é uma ferramenta de lançamento, e não apenas outro framework, e portanto não se encaixou bem na API existente. Mas finalmente conseguimos! O CLion agora encontra automaticamente os testes do CTest no projeto, cria configurações de inicialização e depuração para eles, constrói uma árvore exibindo os resultados do teste. Você pode até mesmo depurar seus testes - isso fará com que o CLion execute o teste, não o processo ctest.



Quanto às limitações, é importante notar que o CLion oferece suporte a CTest 3.14 e superior. Além disso, se um bloco de teste de uma estrutura já suportada (Google Test, Catch (2), Boost.Test e doctest) for executado como um teste CTest, esse bloco terá uma entrada na árvore de resultados (ou seja, corresponde a um teste).



Um vídeo tradicional de Phil Nash sobre melhorias para testes de unidade:





Projetos Qt



Vemos que o CLion freqüentemente escreve projetos usando o framework Qt. E, embora não planejemos criar nosso próprio designer de interface ou oferecer suporte ao modelo de projeto qmake, decidimos fazer algo para melhorar a experiência do usuário no CLion nessa direção.



Projeto de IU e modelos de classe



A caixa de diálogo para criar um novo projeto agora oferece dois novos tipos - Qt Console Executable e Qt Widgets Executable:



Novo projeto Qt



Especifique os valores necessários - CLion cria um projeto CMake inicial do tipo selecionado e agora o widget ou aplicativo de console mais simples está no seu bolso! A propósito, falando de CMake e Qt, Qt6 sugere instalar algumas bibliotecas via Conan (CLion também tem um plugin correspondente ) e construí-las via CMake e Ninja. Não há uma razão para tentar o CLion para o desenvolvimento do Qt?



A propósito, ao adicionar uma nova classe de IU do Qt, o CLion pode criar três arquivos de uma vez ( .ui e arquivos de classe). Para fazer isso, selecione a ação QT UI Class no menu Adicionar novo arquivo.



Trabalhando com o código Qt



O código Qt geralmente é código C ++ normal, mas tem suas próprias peculiaridades. Por exemplo, o Qt tem um certo estilo de importação de arquivos de cabeçalho. Por exemplo, pode ser ativado corretamente QtCore/qurl.h



, mas seria mais correto de usar QUrl



. O estilo agora é suportado durante a importação automática no CLion: a



Autoimportação Qt



função de preenchimento de código agora entende quando é necessário oferecer variantes de sinais apenas ou apenas slots para as entidades Qt principais:



Conclusão Qt



Isso é conveniente, uma vez que a lista suspensa mostra apenas as variantes que se encaixam no significado, e não todas as que correspondem por caracteres digitados.



Qual recurso Qt você pessoalmente não tem no CLion? Escreva nos comentários!



Modelos de design no CLion



Estamos gradualmente adicionando suporte para mais e mais tipos de projetos usando o Makefile no CLion (mantemos uma lista de projetos testados aqui ). Na versão 2.020,3, apoiamos projetos que utilizam as ccache , libtool , idiota , slibtool, e ferramentas jlibtool . Estes são projetos ZFS, PHP, Mono, Curl e outros. As configurações de execução e depuração para destinos do Makefile de nível superior são geradas automaticamente. Além disso, para projetos Makefile, tornou-se possível recompilar um arquivo separado sem ter que reconstruir todo o projeto (no layout padrão - Ctrl + Shift + F9 no Windows / Linux e ⇧⌘F9 no macOS).



Para projetos CMakeagora você pode desativar perfis CMake temporariamente não utilizados. Isso é especialmente útil se o projeto tiver vários perfis configurados ao mesmo tempo para desenvolvimento remoto (alguns deles podem estar temporariamente desativados) ou para vários conjuntos de ferramentas (também nem sempre usados ​​todos juntos). Quando esses perfis são desabilitados, o tempo de carregamento do projeto é significativamente reduzido. Anteriormente, para isso, os perfis tinham que ser excluídos, mas agora você pode simplesmente desativá-los. Isso pode ser feito nas configurações de perfil em Configurações / Preferências | Compilação, execução, implantação | CMake ou na caixa de diálogo de download do CMake:



Desativar / ativar perfis CMake



Para mais detalhes sobre melhorias para projetos Qt e em modelos de projeto, consulte nossa palestra de defensor de desenvolvedores.



Padrões MISRA



Nossos clientes incluem muitos desenvolvedores integrados e representantes da indústria automotiva. Para eles, uma parte importante do processo de desenvolvimento é a certificação do código de acordo com os padrões MISRA. Não podemos ajudar com a certificação em si, mas somos perfeitamente capazes de apontar possíveis inconsistências com os padrões MISRA em um estágio inicial de desenvolvimento! Na versão CLion 2020.3, começamos a adicionar verificações para os padrões MISRA C 2012 e MISRA C ++ 2008 ao analisador de código estático integrado:



Cheques MISRA



Nem todos são suportados; uma lista completa pode ser encontrada nesta página . Configurar as inspeções é muito simples:



Configurações MISRA



adicionaremos mais inspeções MISRA no futuro. É possível que cheques AUTOSAR também apareçam.



Code With Me é uma nova ferramenta de desenvolvimento colaborativo



Sua equipe pratica programação em pares? Que tal uma ferramenta para compartilhar código? Recentemente, lançamos um programa de acesso antecipado para nossa nova ferramenta de desenvolvimento colaborativo, Code With Me. Basicamente, este é um plugin disponível para quase todos os nossos IDEs de desktop (exceto JetBrains Rider e DataGrip até agora). Ele permite que você e sua equipe colaborem em projetos diretamente de seus IDEs. Para experimentar o Code With Me, instale o plugin em Preferências / Configurações | Plugins.



Codifique comigo



Você pode ler mais sobre os recursos do plug- in nestas postagens de blog . Code With Me ainda está em desenvolvimento ativo. Se você tiver problemas ao usá-lo, informe-nos aqui .



E muito mais



Outras melhorias importantes incluem:



  • Agora você pode usar um script para configurar o ambiente no qual a configuração de execução / depuração será executada. Além disso, agora você pode editar as configurações de execução / depuração durante a indexação do projeto.

  • Expandimos os recursos de preenchimento automático com snippets do Clang. Eles o ajudarão a corrigir não apenas palavras-chave, mas também a sintaxe de expressões inteiras:



    Trechos de Clang

  • O esquema de cores do CLion agora pode ser sincronizado com o tema do seu sistema operacional. Para habilitar este recurso, vá para Configurações / Preferências | Aparência e comportamento | Aparência e selecione a opção Sincronizar com o sistema operacional.

  • , (Drag&Drop). Open in Right Split, Project, Recent Files Search Everywhere.

  • Git-. VCS , VCS (, Git). Search Everywhere Git. , , .



Isso é tudo para nós. Estamos felizes por você ter lido até o fim. Obrigado pela atenção! Deixe suas dúvidas, pensamentos e sugestões nos comentários - estamos interessados ​​em sua opinião e estamos sempre dispostos a ajudar!



Equipe CLion

A unidade para desenvolver



All Articles