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!

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:

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:

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 ⌥⏎:

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:

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
):

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:

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):

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:

À esquerda no editor estão os 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:

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

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:

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:

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:

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

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