Novidades do GoLand

No GoLand 2020.3, você pode explorar o goroutines dump, executar e navegar para testes de tabela individuais e aproveitar o suporte estendido para o framework de testes Testify. Você também encontrará muitos novos recursos de edição de código, incluindo suporte para o pacote time, maneiras mais inteligentes de lidar com pacotes, melhorias na interface do usuário, uma variedade de novos recursos para o desenvolvimento web e para o trabalho com bancos de dados, além de um novo serviço para o desenvolvimento colaborativo e programação em pares.

Prefere aprender interativamente em vez de ler? Complete o tutorial What's New in GoLand 2020.3 dentro do IDE na tela Welcome.

Melhorias no depurador

Explorando a pilha goroutines no depurador

O novo ícone Dump Goroutines no depurador permite que você encontre com facilidade as goroutines que contêm uma determinada string na pilha durante a sessão de depuração. Basta clicar no ícone para abrir um dump numa janela separada.

Para ajudá-lo a manter o foco nas informações mais importantes, existe uma opção para ocultar uma goroutine individual ou várias goroutines com a mesma pilha. Clique com o botão direito numa goroutine para selecionar a ação desejada ou simplesmente aperte delete para movê-la para uma seção especial Hidden, na janela do dump, onde ela não seja uma fonte de distração.

Interrompendo a configuração 'Go Remote'

O GoLand 2020.3 permite interromper um processo com a configuração Go Remote se não for necessária nenhuma reconexão.

Nas suas configurações, você pode especificar o comportamento default do depurador ao desconectar, escolher Stop remote Delve processes, Leave it running ou fazer com que o GoLand pergunte como proceder cada vez.

Melhorias em testes

Executando um teste individual de tabela

Suporte a testes em tabelas

Você pode executar testes de tabela individuais e navegar entre eles a partir da janela da ferramenta Run.

Existem algumas limitações:

  • A variável de dados de teste deve ser um slice, array ou map. Deve ser definida na mesma função que a chamada e não deve ser tocada após a inicialização (exceto para cláusulas de intervalo em loops for).
  • Os dados individuais do teste devem ser fornecidos através de um literal struct. Variáveis de loop usadas numa expressão de nome de subteste não devem ser tocadas antes da chamada.
  • Uma expressão de nome de subteste pode ser um campo string nos dados de teste, uma concatenação de campos string com dados de teste ou uma chamada fmt.Sprintf() com verbos %s e %d.
O GoLand sugere um argumento dentro de funções de teste

Suporte estendido para o Testify

O IDE agora reconhece a função de teste que inicia uma suite de testes e fornece uma maneira de iniciar um suite.Run individual e suite.T().Run, desde que o nome do subteste seja uma constante string. Além disso, é possível reexecutar um subteste a partir da janela de ferramenta Run para evitar ter que executar novamente o teste inteiro.

Agora o GoLand também pode rodar suites Testify com o mesmo nome de método separadamente, dentro de um único caso de teste.

Por último, mas não menos importante, quando você completa uma função ou método que aceita testing.T como primeiro argumento, o GoLand passa esse argumento automaticamente, se for possível. Isto funciona para funções e métodos dos pacotes testify/assert, testify/require, testify/mock e testify/suite.

Inspeções de código

O GoLand avisa sobre um possível problema no editor e mostra a intenção 'Add format string argument'

A inspeção de código Incorrect usage of Println/Printf like functions avisa sobre potenciais problemas nos pacotes github.com/pkg/errors, github.com/sirupsen/logrus e go.uber.org/zap.

Além disso, também incluímos realce e dobra de placeholders, assim como a intenção Add format string argument.

O GoLand avisa quando um caminho de execução não chama a função de cancelamento

A inspeção context.CancelFunc not called code relata usos potencialmente inseguros de cancelamento de contexto. Isto é útil principalmente quando a função ‘cancel’ retornada por context.WithCancel (e funções similares) não é chamada em todos os caminhos de execução.

Para saber mais sobre este pacote, por favor veja: https://golang.org/pkg/context/.

Edição de código

O GoLand fornece complementação de código código para layout de tempo

Suporte ao pacote time

Acrescentamos suporte ao pacote time para que você possa trabalhar mais facilmente com tempo e intervalos. O GoLand irá sugerir elementos de layout predefinido através da complementação de código (Ctrl+Espaço) com os placeholders YYYY, MM, DD da ISO-8601.

Pressione Ctrl+P sobre um token e o IDE mostrará seu significado. Também há realce de sintaxe para tokens de layout. A complementação de código também sugere layouts de tempo padrão fora da literal string.

Exclusão de pacote da importação e complementação de código via Alt+Enter

Manuseio mais inteligente de pacotes

O IDE agora é mais inteligente ao priorizar itens de complementação para pacotes que você usa com frequência e que são declarados explicitamente no arquivo go.mod do seu projeto.

Também incluímos uma opção para excluir completamente determinados pacotes do caminho de importação e das sugestões de complementação do seu projeto. Isto pode ser feito através de Alt+Enter ou pela nova janela Exclude for import and completion em Settings | Go | Imports.

O GoLand usa uma cor diferente para destacar shadowing de variáveis sobre qualquer declaração existente

Suporte para shadowing de variáveis

O GoLand facilita a detecção de shadowing de variáveis:

  • O IDE agora mostra variáveis que sombreiam qualquer declaração existente numa cor diferente.
  • A ação de intenção Navigate to shadowing declaration permite que você alterne imediatamente para a declaração sombreada.
O GoLand suporta colchetes em parâmetros de tipo

Colchetes em parâmetros de tipo

Seguimos atualizações do design de genéricos da equipe Go e acrescentamos suporte a colchetes para a sintaxe de genéricos em vez de parênteses, já que isto foi implementado na edição anterior da proposta.

Por favor observe que a configuração Enable generics (experimental support for type parameters) em Settings | Go é desativada por default. Você precisa selecionar essa caixa de seleção explicitamente para começar a usar o recurso.

Leia esta postagem do blog para aprender mais sobre parâmetros de tipo.

Outras melhorias

O GoLand mostra os Live Templates 'Test' e 'Benchmark' na lista de sugestões de complementação de código

Quando você digita func no arquivo de testes, O GoLand sugere, por default, os Live Templates bench e test nas opções de complementação.

O GoLand sugere completar um loop for com b.N dentro do benchmark

Quando você digita for dentro do benchmark, o IDE sugere completá-lo com um loop for com b.N.

O GoLand sugere correção de um erro de digitação

Melhores verificadores ortográficos e gramaticais

As sugestões agora aparecem imediatamente na caixa de diálogo quando você pressiona Alt+Enter. Além disso, uma nova versão do mecanismo de verificação gramatical LanguageTool apresenta verificações melhoradas para inglês e acrescenta suporte a 10 idiomas adicionais.

Code With Me

'Code With Me' em ação

O GoLand 2020.3 oferece suporte ao Code With Me (EAP), o novo serviço da JetBrains para o desenvolvimento colaborativo e programação em pares. O Code With Me permite que você compartilhe o projeto que está aberto no momento no seu IDE com outras pessoas e possa trabalhar nele em tempo real.

Confira estes posts para saber mais sobre ele.

Melhorias na interface do usuário

Tela de boas-vindas melhorada

Tela de boas-vindas melhorada

Redesenhamos a tela de boas-vindas para lhe dar acesso imediato a:

  • Busca de projetos.
  • Configurações para personalizar seu IDE.
  • Plugins para ampliar a funcionalidade do seu IDE.
  • Tutoriais para aprender mais sobre os recursos do seu IDE.
Opção 'Sync with OS theme' nas configurações

Sincronize o tema do IDE com suas preferências do sistema operacional

Selecione a opção Sync with OS em Settings | Appearance & Behavior | Appearance | Theme para que o tema do seu IDE seja alterado para corresponder às suas preferências do sistema operacional.

Arrastando uma aba para dividir o editor

Arraste e solte abas em qualquer lugar para dividir o editor

Divida a tela do editor principal de forma horizontal ou vertical arrastando uma aba para a posição desejada e soltando-a lá. Quando você estiver arrastando uma aba, o editor vai destacar onde você pode soltá-la.

Abrindo um segundo arquivo no editor

Atualizações na view Project

Melhoramos a experiência do usuário quando você trabalha com arquivos da view Project. Agora, quando você abre um arquivo da view Project, o foco é transferido automaticamente para o editor, permitindo que você comece a trabalhar no seu código imediatamente. Pressione a barra de espaço e o IDE mostrará uma pré-visualização do arquivo na view Project.

Se você deseja ter vários arquivos abertos no editor ao mesmo tempo, você agora pode fazer isso com um simples atalho. Selecione o arquivo na view Project e aperte Shift+Enter para fazer o IDE dividir a janela do Editor e abrir o arquivo na subjanela da direita.

Atualizações no VCS

Menu VCS reformado

Menu VCS reformado

O menu VCS agora se adapta ao sistema de controle de versão que você está usando, facilitando o acesso aos principais recursos do VCS, pois eles não estarão mais ocultos num submenu.

Área de preparação do Git

Suporte para área de preparação do Git

Está disponível uma nova área de preparação do Git! Observe que esta funcionalidade está disponível apenas na janela da ferramenta Commit.

Marque o campo Enable staging area em Settings | Version Control | Git para ativar. Assim que você fizer isto, o suporte para changelists será desativado.

Na interface gráfica do commit, você encontrará arquivos preparados e não preparados. Quando estiver pronto para transferir um arquivo para a área de preparação, basta clicar no ícone + ao lado dele. O arquivo aparecerá sob o nó Staged. Para incluir suas alterações à área de preparação, você também pode usar o ícone do gutter ou Show Diff.

O GoLand corrige um nome de branch incorreto

Trabalho mais eficiente com branches

Melhorias no trabalho com branches:

  • O IDE agora corrige automaticamente símbolos não aceitos nos nomes de novos branches, ajudando a criar branches de acordo com o formato aceito.
  • O IDE agora mostra todas as ações disponíveis para o branch selecionado, assim como faria para outros branches.
  • Para branches remotos, renomeamos as ações Merge into Current e Rebase Current onto Selected para Pull into Current Using Merge e Pull into Current Using Rebase.

Mais recursos

Desativando um plugin para todos os projetos

Plugins ativados por projeto

Adicionamos a capacidade de ativar plugins para o projeto atual ou para todos os projetos, selecionando Enable for Current Project ou Enable for All Projects. Em Settings | Plugins, clique no ícone de engrenagem no plug-in que você quer ativar ou desativar e selecione a opção desejada.

Mapa de teclado para atalhos do sistema no macOS na configuração

Mapa de teclado para atalhos do sistema no macOS

O mapa de teclado para atalhos do sistema macOS (Settings | Keymap) tem como objetivo fornecer um mapa de teclado alternativo do macOS que ofereça compatibilidade estendida com os atalhos do sistema, evitando o uso de teclas de função para ações essenciais.

Flame Graph no Profiler em ação

Profiler – Flame Graph

Melhoramos o mecanismo de busca do Flame Graph no Profiler e sua visualização para permitir que você encontre métricas dos métodos mais rapidamente. Você pode clicar no ícone da lupa ou digitar sua solicitação de pesquisa dentro do painel do Flame Graph.

Além disso, acrescentamos um campo de pesquisa, setas para uma navegação rápida nos resultados da busca e a capacidade de pesquisar em todo o Flame Graph ou apenas numa subárvore específica.

Mudanças no desenvolvimento Web

Criando um componente React a partir do seu uso

Crie um componente React a partir do seu uso

Como cortesia da equipe WebStorm, o GoLand agora também oferece suporte avançado ao desenvolvimento web. Uma das mudanças futuras nessa área é a capacidade de criar um componente React a partir de uma referência não resolvida. Coloque o cursor sobre um componente não resolvido, pressione Alt+Enter e selecione a inspeção correspondente.

O GoLand encontra o pnpm na sua máquina

Suporte completo para pnpm

O GoLand oferece suporte total para o gerenciador de pacotes pnpm, juntamente com o npm e o yarn. Quando você abre um projeto com um arquivo pnpm-lock e tem o pnpm instalado na sua máquina, o GoLand mudará automaticamente o gerenciador de pacotes desse projeto para pnpm. O IDE também possui uma opção pnpm dedicada na lista de gestores de pacote em Settings | Languages and Frameworks | Node.js and NPM.

Configurações do Webpack

Suporte básico para múltiplas configurações de webpack

O GoLand 2020.3 permitirá que você escolha entre detectar arquivos de configuração do webpack de forma manual ou automática. As novas opções podem ser encontradas em Settings | Languages & Frameworks | JavaScript | Webpack.

Trabalho com bancos de dados

Acrescentando Couchbase Query como fonte de dados

Suporte a Couchbase

Graças aos nossos colegas da equipe DataGrip, o GoLand expandiu sua família de bancos de dados suportados com um novo membro: o Couchbase! Observe que o IDE suporta o serviço Couchbase Query, mas não o serviço Couchbase Analytics.

GoLand mostra as permissões de acesso nos DDLs de um objeto

Suporte para grants

O GoLand sabe sobre permissões de acesso aos objetos e os mostra nos DDLs de um objeto. Isto funciona para MySQL, PostgreSQL, Greenplum, Redshift e SQL Server.

O GoLand mostra o valor formatado num editor separado

Editor separado para valores de células

Melhoramos o editor separado para valores de células:

  • Agora ele mostra o valor formatado mesmo se o valor não estiver formatado corretamente.
  • É possível editar o valor na visualização formatada e atualizá-lo com a formatação original em XMLs e JSONs de uma linha.
  • Se a largura da tela for fundamental para o seu fluxo, você pode mover o editor de valor da célula para a parte inferior do editor de dados.
  • Agora, este painel também pode exibir imagens!
Extrator 'One-Row' em ação

Importação/exportação para bancos de dados

Acrescentamos dois extratores novos para tornar mais fácil seu trabalho com dados:

  • One-Row vai ajudá-lo a copiar uma coluna para uma string separada por vírgulas.
  • SQL-Insert-Multirow gera uma única instrução INSERT com múltiplas novas linhas a serem inseridas.

Além disso, agora há uma nova opção na configuração do formato CSV: never quote values.