AppCode 2019.2: Swift 5.1, análise de cobertura de código por testes, exibição de código desmontado e muito mais

Os astrólogos anunciaram uma semana de lançamentos no JetBrains, o número de posts triplicou! De fato, este também é um post de lançamento; portanto, se você participou do EAP, já sabe tudo.


Caso contrário, verifique o corte, porque nesta versão não temos apenas uma análise da cobertura do código com testes e exibição do código desmontado, mas também suporte DSL para Ruby e muitas outras coisas interessantes!


Executar com cobertura



Swift


Suporte de idioma


Começou a suportar o Swift 5.1:


  • SE-0242 : Sintetize valores padrão para o inicializador em sentido de membro.
  • SE-0254 : subscritos estáticos e de classe.
  • SE-0068 : Expandindo o Swift Self para os alunos e os tipos de valor.
  • SE-0260 : Evolução da biblioteca para ABIs estáveis.
  • SE-0258 : Wrappers de propriedades

Enquanto estiver no processo, o grau de prontidão pode ser visto aqui .


Dobragem de código


Fechamentos dobráveis:


Fechamento dobrável


Luz de fundo


Você não pode simplesmente pegar e destacar uma linha de código sem saber com quais entidades específicas estamos lidando. Portanto, o realce completo é possível somente após a construção completa dos caches. Mas conhecemos as palavras-chave do idioma com antecedência e podemos destacá-las - agora elas são destacadas para Swift, mesmo que a indexação com cache ainda não tenha terminado:


Palavras-chave


Geração de elemento de enumeração


Continuamos a expandir o escopo de Criar a partir do uso : agora você pode criar um elemento de enumeração a partir do seu uso no código, simplesmente pressionando ⌥⏎:


Criar a partir do uso


Pesquisa de uso


A pesquisa de usos no AppCode procura construções de código específicas (variáveis, classes, funções, métodos de classe etc.) - isso permite restringir bastante a área de pesquisa em comparação ao texto completo. Até recentemente, para o Swift, mostrávamos apenas onde um design específico é usado. Em 2019.2, implementamos um agrupamento de usos por tipo, para que agora possamos entender rapidamente também como usamos uma variável, função ou classe:


Encontre usos


Mesclando linhas de código


Nada de especial, agora você pode colar a declaração e a inicialização da variável usando Join Lines ( ⌃⇧J ):


Linhas de junção


Importações de automóveis


Existe um sistema desse tipo - BUCK . O sistema de criação BUCK, por padrão, usa mapas de cabeçalho, cujo suporte adicionamos um ano atrás, mas não teve tempo de lançá-lo nas importações automáticas. Como resultado, após pressionar ⌥⏎, foi inserido um caminho longo para o cabeçalho, o que é absolutamente desnecessário. Agora isso não acontece, agora está tudo correto.


Depuração


Exibição de código desmontado


Os colegas do CLion fizeram o mapeamento do código desmontado para o LLDB na versão 2019.1, e nós o reutilizamos criativamente nesta versão:


Vista de desmontagem


Conclusão automática


Outra coisa útil originalmente criada no CLion é o preenchimento automático de comandos do depurador no console do LLDB pressionando ⇥ (o mesmo que em um console comum):


Conclusão de comandos LLDB


Código de análise de cobertura de teste


Finalmente feito, e bem feito. Selecionamos a configuração do teste, clique em Executar com cobertura e saímos para finalizar os testes, estamos felizes com o resultado:


Executar com cobertura


À esquerda no editor estão os resultados da cobertura:


Resultados da cobertura


Ao clicar no indicador colorido, uma placa é exibida com o número de chamadas nesta seção do código e ações úteis:


Contagem de acertos


As estatísticas de cobertura são exibidas brevemente na visualização Projeto e com mais detalhes em uma janela separada:


Janelas de ferramentas


Construa, execute, depure e teste durante a indexação


A indexação e construção de caches não é um processo rápido, especialmente em projetos grandes e especialmente na primeira indexação. No entanto, você pode executar algumas ações com o projeto enquanto ele está em andamento, por exemplo, criar ou executar o aplicativo.


Por um longo tempo, essas ações foram bloqueadas para nós, pois, para o uso normal da configuração de inicialização, era necessário primeiro criar caches no projeto. Na verdade, isso não é tão necessário, portanto, na versão 2019.2, desatamos decisivamente a criação de configurações de inicialização do cache, e agora você pode montar, iniciar, depurar ou testar o projeto imediatamente após sua abertura:


Compilar, executar, depurar e testar durante a indexação


Integração


TextMate Plugin


Frequentemente, eles são solicitados a adicionar suporte para algum idioma que não é o principal do AppCode. Às vezes, fazemos isso se entendermos que muitos usuários realmente precisam, e em algum momento arrastamos uma parte do WebStorm para nós mesmos, para que os desenvolvedores do React Native e PhoneGap se sintam à vontade para trabalhar com HTML / CSS / JavaScript.


Então veio o plugin para o Markdown , porque qualquer README precisa ser capaz de editar de forma conveniente e rápida. Há também um plug-in para AppleScript criado por um dos colegas simplesmente porque ele estava interessado em escrever suporte à linguagem.


Mas você não pode sobrecarregar a imensidão; portanto, não podemos implementar o suporte para todos os idiomas. Por exemplo, no desenvolvimento iOS, DSLs feitas em Ruby são frequentemente encontradas (configurações CocoaPods e Fastlane). Inicialmente, a solicitação parecia "ativar todo o suporte ao Ruby", mas, na realidade, essas configurações não são editadas com frequência e puxar metade do RubyMine por causa delas não parece razoável. Ao mesmo tempo, não ter apoio também não é bom.


Nesta versão, colegas do WebStorm incluíram na instalação padrão um plug-in com suporte para pacotes TextMate, o que fornece a vários idiomas um destaque simples e o preenchimento automático. Seguimos o exemplo deles, e agora também temos o seguinte:


Plug-in de Pacotes TextMate


Devido a algumas contradições no suporte do Fastlane por parte desses pacotes, o princípio de configuração do Ruby DSL permanece o mesmo (no entanto, você pode ajudar a corrigir essa situação).


Shell Script Plugin


Os scripts são comuns em projetos, por isso incluímos suporte para editá-los:


Plugin de script do shell


Janela de confirmação


Mais precisamente, não há mais nenhuma janela separada - agora ela se tornou parte da guia Alterações Locais:


Janela de confirmação


Esse é o fim Escreva todas as perguntas e sugestões aqui nos comentários - teremos o maior prazer em responder!


Equipe AppCode

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


All Articles