Novidades do GoLand

O GoLand 2021.1 permite que você crie e execute seu programa remotamente via Docker, SSH e WSL 2, use os novos recursos do Go 1.16, incluindo //go:embed, gere código rapidamente a partir de JSON e trate erros com facilidade usando novas correções rápidas.

O GoLand é mais do que apenas uma IDE para Go. Além dos recursos para trabalhar com o código Go, você ganha novos recursos para JavaScript, TypeScript e bancos de dados.

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

Alvos de Execução (Run Targets)

Configurando alvos criados na janela 'Configuração de Execução'

No GoLand 2020.1 você pode desenvolver na sua máquina com todo o código-fonte que você tem disponível localmente e usar computadores remotos como alvos de execução do seu código. Atualmente, o IDE suporta Docker, SSH e WSL 2 (Subsistema Windows para Linux).

Nas configurações, selecione Run | Manage Targets…, clique no ícone Add icon (+) e selecione os alvos com os quais você quer trabalhar. Depois de concluir a configuração, você precisa especificar a Configuração de Execução em Run | Edit Configurations… e selecionar o alvo com o qual você quer trabalhar.

Go 1.16

Adicionando uma pasta à diretiva embed

Suporte a //go:embed

A partir do Go 1.16, você pode incorporar arquivos e diretórios num binário Go em tempo de compilação.

Embedding works on a few types of variables: string, []byte, and embed.FS. Você precisa declarar essas variáveis no nível superior do seu pacote. Finalmente, você precisa incluir a diretiva //go:embed para que a incorporação funcione.

O GoLand fornece realce de código, navegação por referências dentro da diretiva embed para arquivos e pastas do seu projeto, refatoração Rename, Find Usages, complementação de código e algumas inspeções de código. Por exemplo, o GoLand vai avisá-lo se você tentar incorporar arquivos numa variável do tipo errado.

Substituindo o método 'Fatal' pelo método 'Error' através de correção rápida

Detectando usos incorretos de (t/b).Fatal

GoLang avisa sobre chamadas inválidas ao método testing.T Fatal dentro de uma goroutine criada durante o teste.

A correção rápida dedicada reescreverá o código que chama t.Fatal (ou método similar) de modo que sinalize a falha do teste usando t.Error e saia da goroutine mais cedo usando uma instrução return.

O IDE mostra um aviso e fornece uma solução rápida apropriada para resolver o problema

Detectando usos incorretos de asn1.Unmarshal

No Go 1.16, go vet detecta usos incorretos de asn1.Unmarshal, garantindo que o valor de onde é extraída uma fatia de bytes não seja nulo.

O GoLand 2021.1 fornece uma verificação semelhante com uma solução rápida para resolver esse problema.

Trabalhando com JSON

Colando dados JSON no editor através de copiar e colar

Gere um struct com campos e tags do JSON rapidamente através de cópia e cola dos dados JSON no editor.

Se você quiser ajustar o JSON antes de gerar uma struct, pressione Alt+Enter para chamar a intenção Generate type from JSON. GoLand irá abrir a janela Generate Go type from JSON com o JSON copiado. Você pode ajustá-lo como quiser na janela e depois pressionar o botão Generate que sua struct estará pronta. Também é possível colar o código JSON na janela manualmente.

Além disso, é possível converter JSON dentro de uma struct vazia já existente. Para fazer isso, basta clicar nesta struct vazia e chamar a intenção Generate struct fields from JSON pressionando Alt+Enter ou usando o menu Generate.

Além disso, o GoLand vai notificá-lo se você usar código JSON inválido na janela Generate Go type from JSON.

Gerando uma struct a partir de dados JSON através da janela 'Generate Go type from JSON'

Agora ficou muito mais fácil criar tags JSON e XML para todos os campos exportados da struct.

Quando você usa Alt+Enter para chamar Add key to tags na struct ou em qualquer campo da struct, o GoLand adiciona uma tag a todos os campos da struct com nomes de campo. Se você quiser alterar o estilo do nome do campo para todas as tags, pressione Alt+Enter outra vez em qualquer nome e escolha Change field name style in tags. Os estilos suportados são fieldName, FieldName, field-name e field_name.

Você pode atualizar todos os valores de tag de uma só vez com a ação de intenção Update key value in tags. Pressione Alt+Enter em qualquer valor de tag na sua struct que GoLand adicionará acentos circunflexos no final dos valores de tag em cada campo.

Além disso, o IDE fornece uma complementação para tokens bem conhecidos dentro de valores de tag fornecidos pelo SDK do JSON, XML e código ASN.1.

Um arquivo JSON em novo estilo suportado

Por último, mas não menos importante, o GoLand 2021.1 oferece suporte ao formato delimitado por novas-linhas JSON Lines usado para trabalhar com dados estruturados e registros. O IDE reconhece os tipos de arquivo .jsonl, .jslines, .ldjson e .ndjson.

Nesse formato, os arquivos contêm diversas linhas e cada nova linha é um objeto JSON separado por um caractere de nova-linha. As vírgulas não são necessárias nem no início nem no final das linhas e não há necessidade de ter todo o conteúdo do arquivo entre colchetes ou chaves.

Facilidades ao lidar com erros

A inspeção de código 'Unhandled Error' em ação com a correção rápida 'Wrap error handling in a closure'

A inspeção de código Unhandled Error ganhou uma família inteira de correções rápidas:

  • A correção rápida Handle error atribui resultados de chamadas a variáveis e gera uma verificação if error not nil.
  • A correção rápida Wrap error handling in a closure disponível para declarações defer e go, produz um código similar a Handle error mas embrulha tudo numa closure.
  • Estendemos a área de aplicação de Ignore explicitly para incluir declarações defer e go. A correção rápida atribui os resultados da chamada a variáveis em branco e embrulha tudo num closure.

Mais correções rápidas

Convertendo bytes em string através da nova correção rápida

Correção rápida para incompatibilidade de tipos dentro de literais compostos

Expandimos a área de aplicação da correção rápida que lida com incompatibilidade de tipos. Agora ela também sugere a implementação de uma interface e a conversão ao tipo esperado dentro de literais compostos.

A criação de tipos com todos os campos necessários através da nova correção rápida

A correção rápida Create Type gera os campos que faltam

A correção rápida Create Type não apenas sugere a criação de um tipo quando GoLand percebe que você está usando um que ainda não foi definido, mas também cria os campos para você.

Gerando getters e setters a partir do struct através da janela 'Select Fields'

Gere todos os getters e setters de uma vez

A geração de métodos get e set para cada campo em structs grandes pode ser uma tarefa tediosa. Agora você pode gerar getters e setters para toda a struct de uma só vez.

Pressione Alt+Enter em qualquer nome de campo na struct e, em seguida, escolha Generate getter and setters do menu drop-down. O GoLand abrirá a janela Select Fields onde você poderá gerar métodos get e set para todos os campos ou apenas para os campos que você precisar.

Refatorações

Extraindo um tipo da estrutura existente

A refatoração Extract Type

A refatoração Extract Type permite extrair um tipo de dentro de um tipo existente ou converter um tipo de estrutura anônima em um tipo com nome. Para executá-la, pressione Ctrl+Alt+Shift+T.

Go Modules

Renomeando o nome de um módulo através da refatoração 'Rename'

Refatoração Rename para o arquivo go.mod

Às vezes, você precisa renomear um módulo depois de ter experimentado suficientemente com o projeto e feito todo o seu trabalho inicial. Adicionamos a refatoração Rename ao arquivo go.mod. Ela permite que você renomeie o módulo com um novo nome com segurança, sem a necessidade de fazer uma pesquisa na árvore do projeto para substituir o nome do módulo antigo.

Execute a refatoração Rename sobre o nome do módulo usando Shift+F6. GoLand abrirá a janela Rename onde você poderá alterar o nome atual, decidir se você deseja alterá-lo nos comentários e strings e abrir uma pré-visualização da refatoração. A partir da aba Refactoring Preview você pode navegar até todos os usos deste nome de módulo. Você pode usar a operação undo para rapidamente reverter todas as alterações implementadas usando a refatoração.

Preenchimento Postfix

A nova complementação Postfix em ação

Nova complementação Postfix varCheckError

Digite .varCheckError depois de um identificador que retorna um erro, e o IDE irá adicionar automaticamente nomes de variáveis default e retornar o erro da função.

Formatador

Configuração de 'Import'

O formatador integrado agora pode agrupar importações da mesma maneira que goimports -local.

Para ativar esse suporte, vá para Settings | Editor | Code Style | Go | Imports e ative agrupamento de importações. Em seguida, você pode especificar quais importações devem ser agrupadas em blocos separados.

Execute e depure

Configuração de 'Process Elevation'

O GoLand 2021.1 permite que você execute uma sessão sudo estendida. Na primeira execução, o GoLand perguntará se você deseja manter o sudo em execução ou encerrá-lo imediatamente. Se você gostaria de alterar sua resposta, vá para Settings | Appearance & Behavior | System Settings | Process Elevation.

Observe que, ao ativar esta opção, você concede ao GoLand e a todos os plug-ins de terceiros acesso ao seu sistema.

Complementação de código

Os resultados da complementação de código com a complementação assistida por machine learning ativada

Ativamos a complementação assistida por machine learning. Esta alteração introduz os estágios iniciais de complementação de código com base em machine learning (ML) que é uma alternativa ao mecanismo de classificação padrão.

Marque Mark position changes in the completion popup em Settings | Editor | General | Code Completion para marcar as opções reordenadas pela complementação ML com ícones de seta para cima/para baixo na lista de complementação.

Melhorias na interface do usuário

Alterando o tema do IDE através do novo menu de acesso rápido

Menu de acesso rápido

O widget Configuration que estava disponível anteriormente no canto inferior esquerdo do IDE, foi substituído por um menu de acesso rápido. Este novo menu aparece no canto superior direito. Clique no ícone de engrenagem para alternar temas ou mapas de teclado, navegar até plug-ins ou ir para as configurações.

Acesso rápido a projetos recentes no Windows

Acesso rápido a projetos recentes no Windows através do menu 'Iniciar'

Agora você pode acessar seus projetos recentes clicando com o botão direito do mouse no ícone GoLand na barra de tarefas ou no menu Iniciar do Windows.

Nova exibição de dicas de ferramentas

Melhor exibição de dicas de ferramentas

As dicas de ferramentas agora são mostradas uma depois da outra para evitar que se sobreponham.

Configurações de 'Typography'

Variações de fontes

Agora você pode selecionar as variações de fonte do painel Settings | Editor | Font.

Outras alterações

Uma nova pré-visualização do navegador integrado em ação

Pré-visualização de HTML integrada

Adicionamos uma nova pré-visualização integrada do navegador que ajuda a visualizar arquivos HTML rapidamente. Quaisquer alterações feitas nos arquivos HTML no IDE, assim como nos arquivos CSS e JavaScript vinculados, serão salvas imediatamente e a pré-visualização será atualizada em tempo real.

Para abrir a pré-visualização, clique no ícone do logotipo GoLand no widget localizado no canto superior direito do editor.

Alterando o tamanho da aba no editor

Maximize as abas do editor na view repartida

Precisa de mais espaço ao trabalhar em múltiplos arquivos simultaneamente num editor repartido? Clique duas vezes na aba com a qual está trabalhando para maximizar a janela do editor para ela. Para trazer a aba de volta ao tamanho original, dê um duplo-clique nela novamente.

Plugin 'Makefile Language' instalado na página 'Plugins' no IDE

O plugin Makefile Language funciona por default

O plugin da Makefile Language (previamente de terceiros), que fornece suporte a linguagem GNU Make, agora é integrado por default. Começando com GoLand 2021.1, você obterá realce de sintaxe, documentação rápida, Find Usages para alvos e algumas ações de navegação e complementação de código para Makefile pronta para uso!

Code With Me

'Code With Me' em ação

O Code With Me, um novo serviço da JetBrains para desenvolvimento colaborativo e programação em pares, agora está incluído no GoLand.

Defina o nível de acesso necessário ao seu projeto e compartilhe o link com seus colegas. Seus colegas nem mesmo precisam ter um IDE próprio instalado para colaborar com você. Chamadas de áudio e vídeo incorporadas, incluindo mensagens de chat, ajudarão as equipes a discutir o código, compartilhar seu conhecimento e cooperar com mais eficiência.

Para empresas que exigem segurança extra, o Code With Me on-premises pode ser instalado e executado com segurança na rede privada da própria empresa.

Para saber mais sobre a disponibilidade do Code With Me com a sua licença atual da JetBrains, confira a página de preços.

Docker

Complementação de código no campo 'Run Options'

Configurações de execução/depuração melhoradas

Nós melhoramos a caixa de diálogo Run/Debug Configuration de várias maneiras:

  • Para adicionar todas as opções de build necessárias, clique em Modify options; para adicionar opções de execução, clique em Modify. O IDE agora valida cada opção para garantir que é compatível.
  • Para o Docker-compose, suportamos todas as opções existentes, incluindo aquela para declarar arquivos de variáveis de ambiente (.env).
  • Para Dockerfile, você não precisa se lembrar de todos os comandos de execução porque a complementação de código funciona no campo Run Options.
  • Para Imagem do Docker, você pode usar a complementação de código para inserir o nome da imagem no campo Image ID ou name.
O IDE constrói a imagem usando BuildKit

Suporte a BuildKit

Incluímos suporte experimental para o BuildKit, que torna a criação de projetos muito mais rápida. Você pode ativar essa opção em Run/Debug Configurations clicando Modify options e selecionando Enable BuildKit (experimental).

Clique no ícone do martelo próximo ao nome do estágio que o IDE construirá a imagem usando o BuildKit. Se você adicionar a seção Run em Run/Debug Configurations, o ícone irá mudar. Ao clicar nele, você não apenas criará uma imagem, mas também executará um contêiner.

Estágios de dobragem no editor

Melhorias na interface do usuário de Dockerfiles muiltiestágio

Se você usa múltiplas declarações FROM no seu Dockerfile, cada instrução FROM inicia um novo estágio. Agora, no GoLand 2021.1, é possível dobrar estágios e ver uma linha separadora distinta entre eles.

Pare o Docker através do botão dedicado na janela da ferramenta Services

Cancelamento da execução do Docker

Se você decidir interromper um Dockerfile em execução, poderá fazê-lo facilmente na janela de ferramentas Services. Selecione o item em execução, acesse o menu de contexto e clique em Stop Deploy.

Complementação de código na janela 'Bind Mounts'

Variáveis de ambiente e macros para mounts do Docker

Agora, ao usar bind mounts, é possível inserir um caminho para um diretório na máquina host mais rapidamente. O mecanismo de complementação permite que você selecione macros e variáveis de ambiente na opção Bind mount em Run/Debug Configurations.

Complementação de código para imagens no Dockerfile

Complementação de imagens em Dockerfiles

Por último, mas não menos importante, incluímos complementação para nomes de imagens.

Mudanças no desenvolvimento Web

Uma dica de ferramenta com documentação MDN no editor

Documentação MDN integrada

A documentação do MDN agora está incluída no GoLand. Isto ajudará a evitar problemas de conectividade com o site do MDN e fará com que a documentação no editor apareça mais rapidamente nos seus arquivos HTML, CSS e JavaScript. A documentação integrada também se tornará mais informativa: por exemplo, você agora poderá ver detalhes sobre as versões de navegador com suporte para APIs JavaScript.

Stylelint em ação com correção rápida correspondente

Suporte aprimorado para Stylelint

Ficou mais fácil inspecionar seu código CSS com o Stylelint. Agora você pode corrigir problemas usando este linter popular em apenas alguns cliques. Passe o mouse sobre um problema no seu arquivo ou coloque o sinal de intercalação sobre ele, pressione Alt+Enter e selecione Stylelint: Fix current file.

Além disso, agora você pode especificar um caminho para o arquivo de configuração no campo correspondente em Settings | Languages & Frameworks | Style Sheets | Stylelint.

O pop-up de documentação para um seletor

Especificidade dos seletores para CSS

When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check. Como alternativa, foque num seletor e pressione Ctrl+Q para ver essas informações no pop-up Documentation.

Trabalho com bancos de dados

Um novo campo 'ORDER BY' numa tabela

Melhor ordenação

Melhoramos o processo de ordenar dados:

  • Um novo campo ORDER BY funciona de forma semelhante ao campo WHERE (que antes era chamado Filter): insira uma cláusula funcional para aplicá-la à consulta da tabela.
  • A ordenação não é 'empilhada' por default. Isto significa que, se você clicar no nome de uma coluna para ordenar os dados com base nela, a ordenação baseada em outras colunas é ignorada. Se você preferir usar ordenação empilhada, clique no nome da coluna enquanto pressiona a tecla Alt.
  • Se você quiser usar ordenação no lado do cliente (o GoLand não irá executar novamente a consulta nem ordenar os dados na página atual), desmarque Sort via ORDER BY.
  • Também é possível abrir tabelas com ordenação predefinida com base na chave primária numérica.
'Select first N rows from a table' no editor

Modelos dinâmicos de contexto

Esta é nossa solução para quem quiser gerar instruções simples diretamente a partir do navegador do banco de dados. Os modelos dinâmicos gerais abrangem muitas situações em que você precisa rapidamente escrever uma consulta simples. Mas também entendemos que às vezes, quando você está no contexto do navegador de banco de dados e já está focando no objeto que precisa, há uma maneira melhor de obter uma consulta simples usando esse objeto.

Select first N rows from a table parece um modelo geral (e pode ser usado como tal). Já que esta sintaxe específica não pode ser usada em qualquer banco de dados, os dialetos correspondentes são configurados para o modelo. A principal diferença que torna este modelo aplicável no navegador do banco de dados é a expressão especial dbObjectName, que é usada para a variável $table$.

Adicionando permissão de acesso ao objeto através da nova janela

Interface do usuário para permissões de acesso

Adicionamos uma IU para editar concessões ao modificar objetos.

A janela Modify user, que você pode invocar num usuário no Database Explorer com Ctrl+F6, agora tem uma interface do usuário para adicionar permissões de acesso a objetos.

Disponível para PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server e Sybase.