Skip to main content

Os 8 melhores plugins do IntelliJ para melhorar sua experiência de programação

Escrito por
Blog Design IntelliJ IDEA

26 de agosto de 2021

0 minutos de leitura

Para muitos desenvolvedores, uma boa IDE é como um canivete suíço: uma ferramenta que reúne, em um único programa, todo tipo de recurso necessário no dia a dia. Por isso, muitos desenvolvedores trabalham principalmente na IDE favorita, em vez de abrir várias ferramentas com funções específicas.

O relatório sobre o ecossistema JVM de 2021, lançado recentemente, mostra que o IntelliJ IDEA é de longe a IDE mais usada no ecossistema Java. No entanto, o relatório também indica que mais da metade dos desenvolvedores usa várias IDEs no sistema local. Por isso, talvez você queira ampliar os recursos da sua IDE com extensões ou plugins que atendam às suas necessidades e facilitem o uso. Neste post, apresentamos oito plugins prontos para uso em produção, disponíveis gratuitamente no marketplace, que podem melhorar sua experiência de programação.

As versões atuais do IntelliJ IDEA já vêm com muitos plugins, incluindo Maven, Gradle, Lombok, Docker e vários outros. A equipe da JetBrains também oferece muitos plugins para linguagens e frameworks específicos. Essa é uma das razões pelas quais eles quase sempre funcionam perfeitamente com o IntelliJ IDEA. Neste post, porém, vou destacar ótimos plugins adicionais, principalmente de terceiros, que trazem algo a mais para a sua rotina.

1. Maven Helper

No ecossistema Java, o Maven continua sendo o sistema de build mais usado e também oferece gerenciamento de dependências. O plugin Maven Helper, de Vojtech Krassa, oferece ferramentas simples para navegar pelas dependências, por exemplo, em uma visualização em árvore, e encontrar conflitos entre elas.

Analisador de dependências Maven do IntelliJ IDEA exibindo uma árvore de dependências do projeto, incluindo Spring Boot, Lombok e um conflito destacado com SnakeYAML.

Além disso, você pode predefinir e combinar objetivos do Maven para executar com um clique ou pelo menu de contexto. Isso inclui executar objetivos de plugins. No exemplo abaixo, criei um objetivo adicional que chama o objetivo package e ignora os testes.

Menu Maven do IntelliJ IDEA exibindo as etapas do ciclo de vida, com “package -DskipTests” destacado

2. Rainbow Brackets

Este é um plugin pequeno, simples e elegante que pode facilitar muito a sua vida. O Rainbow Brackets usa cores diferentes para colchetes e parênteses aninhados. Assim, fica muito mais fácil identificar onde termina uma expressão entre parênteses sem passar o cursor sobre ela.

Ele funciona com várias linguagens, como Java, Scala, Clojure, Kotlin, Python, Haskell, Agda, Rust, JavaScript, TypeScript, Erlang, Go, Groovy, Ruby, Elixir, ObjectiveC, PHP, HTML, XML, SQL, Apex language, C#, Dart, Pug/Jade, Bash e Vue.js.

No exemplo de Java abaixo, os parênteses coloridos diferentes facilitam bastante a leitura da linha com String.format(). Além disso, como o plugin é compatível com Clojure, talvez ele seja a solução que torne a sintaxe de Clojure menos ilegível para nós, meros mortais.

Editor de código Java com tema escuro, exibindo um método servlet userLink que localiza usuários e escreve nomes de usuário formatados e comentários em uma lista HTML.

3. Presentation Assistant

Parte do meu trabalho é fazer apresentações, o que também envolve bastante programação ao vivo. Sempre que chamo uma função usando um atalho de teclado, o plugin Presentation Assistant mostra na tela a função e a combinação de teclas que usei. Assim, fica muito fácil para as pessoas acompanharem e reproduzirem o que estou fazendo.

Além disso, quando chamo uma função usando o mouse, o plugin também exibe uma mensagem com o atalho correspondente. Ou seja, sempre que uso o mouse para acessar um recurso do IntelliJ que tem um atalho, vejo e aprendo a combinação na hora.

Sobreposição verde exibindo o atalho de teclado “Salvar tudo com ⌘S (Ctrl+S no Windows/Linux)”

4. RoboPOJOGenerator

Conectar sua aplicação a um endpoint REST é uma tarefa bastante comum hoje em dia. Na maioria dos casos, você precisa transformar a saída JSON do endpoint em uma representação de objeto na aplicação. Criar manualmente objetos para saídas JSON grandes pode ser bem trabalhoso. Felizmente, o plugin RoboPOJOGenerator faz o trabalho pesado por você. Basta inserir a saída JSON no gerador e, se quiser, escolher os frameworks que pretende usar. O RoboPOJOGenerator cria os POJOs (Plain Old Java Objects) com as anotações correspondentes aos frameworks escolhidos para Java e Kotlin. Na minha opinião, é um ótimo plugin para economizar tempo!

Interface do RoboPOJOGenerator exibindo dados de vulnerabilidades em JSON, Java selecionado, opções de framework e configurações de geração de código

5. Snyk Vulnerability Scanner

O plugin Snyk Vulnerabilty Scanner ajuda você a desenvolver aplicações Java com mais segurança. Ele verifica tanto as dependências de terceiros em busca de problemas de segurança conhecidos quanto o seu código personalizado.

Para as dependências de código aberto, ele recomenda uma versão do pacote que não contenha a vulnerabilidade. Se o pacote vulnerável for uma dependência transitiva, o plugin informa qual versão de nível superior você precisa atualizar. Se não houver uma dependência de nível superior corrigida, ele informa se existe uma versão da dependência transitiva que resolva o problema de segurança e qual é ela.

No seu código personalizado, o Snyk Vulnerabilty Scanner reconhece padrões de código vulneráveis, como injeção de SQL, cross-site scripting (XSS) e travessia de diretório. Ele mostra onde isso ocorre no código, o fluxo da vulnerabilidade e possíveis soluções que podem ajudar você a se proteger, reunidas a partir de código aberto. É como um corretor ortográfico para o seu código, que ajuda a evitar erros de segurança.

Para saber mais sobre esse plugin, leia o post do blog: Como corrigir problemas de segurança em Java enquanto programa no IntelliJ IDEA

Scanner de segurança do IntelliJ mostrando uma vulnerabilidade de Cross-site Scripting (XSS), detalhes do fluxo de dados e uma correção no código para escapar a entrada HTML.

6. AsciiDoc

Adoro o AsciiDoc. Embora seja parecido com Markdown, o AsciiDoc é um formato de texto altamente configurável e que atende às necessidades da maioria das pessoas. Você pode converter AsciiDoc para formatos como PDF, EPUB, HTML e muitos outros.

O plugin AsciiDoc facilita a criação, a edição e a visualização prévia de arquivos AsciiDoc no editor. Por exemplo, uso o plugin para escrever a documentação do meu código e gerar uma página HTML para a web ou um PDF, caso alguém prefira esse formato.

Fazer isso diretamente na IDE é ótimo e, com mais de 2,1 milhões de downloads, não sou o único que valoriza essa excelente extensão para o IntelliJ IDEA.

7. Randomness

O plugin Randomness é uma ferramenta pequena e muito útil. Quando o vi pela primeira vez, pensei: “Ok, isso pode ser interessante, mas será que vou usar tanto assim?”. Acabou que uso muito mais do que imaginei. A ferramenta gera dados aleatórios, como números, strings, palavras reais e UUIDs. Ela também pode criar arrays de um tipo específico.

Como faço muitas demonstrações, é muito prático poder gerar dados aleatórios ou uma coleção de dados com um atalho de teclado. Também uso o plugin nos meus testes de unidade para gerar dados aleatórios. A saída é altamente configurável, então você pode ajustá-la às suas necessidades.

Alguns exemplos: o tamanho de um array, o conjunto de caracteres usado em uma string aleatória e o tamanho de uma palavra. A única mudança que fiz foi configurar para que um array não gere mais os colchetes [], apenas o conteúdo. Assim, posso criar facilmente uma List com o método List.of() em Java, como no exemplo abaixo.

Editor de código com tema escuro mostrando um método de teste JUnit em Java vazio, anotado com @Test e chamado myTest

8. SonarLint

O plugin SonarLint é ótimo para garantir a qualidade do código. Ele ajuda a identificar code smells, maus hábitos e possíveis bugs. Por padrão, usa regras estáticas baseadas, em linhas gerais, em uma combinação das regras do PMD, findbugs e checkstyle. Um dos pontos fortes do plugin é que ele mostra informações em tempo real e se integra aos recursos do Git no IntelliJ. Antes de você fazer o commit do código, ele avisa se houver algum problema.

Se você usa o SonarQube ou o SonarCloud, pode sincronizá-los com o SonarLint local para aplicar ao seu código o mesmo conjunto de regras. Ainda assim, o SonarLint também é uma ótima ferramenta para qualquer desenvolvedor que o use de forma independente.

Painel do SonarLint no IntelliJ mostrando três problemas encontrados em um arquivo Java, incluindo uma sugestão para usar try-with-resources

Como já vimos, o Snyk Vulnerability Scanner não é redundante em relação ao SonarLint. Pelo contrário: embora o SonarLint possa encontrar problemas relacionados à segurança, esse não é o foco principal dele, e o Snyk é muito melhor nisso. Por outro lado, o SonarLint é atualmente muito melhor para encontrar os mais variados tipos de bugs e problemas de estilo do que o plugin da Snyk. No fim das contas, uso os dois plugins ao mesmo tempo e acho que eles se complementam.

Comece a participar de desafios de Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.

Leia mais

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

Blog

Por que agentes de programação com IA continuam criando falhas de controle de acesso

Agentes de programação com IA podem gerar uma lógica de autorização que compila e passa pela revisão, mas permite que um tenant acesse os dados de outro. Saiba por que é difícil detectar falhas de controle de acesso e como evitá-las.