Setor: Transporte

Produtos da JetBrains usados: Qodana, IntelliJ IDEA

Tamanho da organização: Mais de 200 funcionários

Tamanho da equipe: 6 equipes, 60 desenvolvedores no total

Pilha de tecnologia: Java, Spring, Jenkins

O caminho para um trânsito confiável: como a Moovit evita incidentes de produção com a análise de código do Qodana

Moovit é o criador do mais popular aplicativo de mobilidade. Os aplicativos para iOS, Android e Web da Moovit oferecem aos usuários uma experiência de mobilidade inteligente para chegar facilmente ao seu destino usando qualquer meio de transporte público ou compartilhado. Os usuários de transporte coletivo podem se beneficiar da bilhetagem móvel para planejar, pagar e usar serviços de transporte coletivo. Inaugurada em 2012, a Moovit agora atende a mais de 1,5 bilhão de usuários em mais de 3.500 cidades em 112 países, em 45 idiomas.

O desafio: detectar ponteiros nulos e outras falhas que podem causar interrupções

O transporte público é fundamental para empregos, educação, saúde e muito mais, mas seu sistema de navegação pode ser desafiador e estressante. A Moovit, empresa criadora do mais popular aplicativo de mobilidade, disponível para iOS, Android e Web, oferece aos usuários uma experiência de mobilidade inteligente para planejar e navegar facilmente até seu destino usando transporte público e compartilhado. A Moovit guiou mais de 1,5 bilhão de usuários em mais de 3.500 cidades em 112 países.


Com tantas pessoas dependendo de informações e orientações de trânsito, inclusive informações em tempo real, a estabilidade do sistema é crítica. A equipe de infraestrutura da Moovit é responsável por manter a estabilidade de todo o sistema da Moovit para projetos de B2C e B2B. A equipe enfrentava o grande desafio de identificar problemas que estavam chegando à produção e interrompendo os serviços da empresa. Uma de suas principais preocupações era detectar NullPointerExceptions, que são causas comuns de interrupções e acredita-se que tenham desempenhado um papel no incidente do CrowdStrike.


Para reduzir os riscos às operações de serviço e manter a alta qualidade do código, a Moovit começou a procurar uma ferramenta de análise de código estático que atendesse aos seguintes critérios:

  • Varreduras rápidas para detecção antecipada de problemas. A equipe precisava de uma ferramenta que pudesse identificar problemas no início do ciclo de desenvolvimento, com integrações para gates de qualidade do Jenkins e o IntelliJ IDEA.
  • Capacidade de criar regras e configurações personalizadas. A equipe precisava ser capaz de definir regras personalizadas e aplicar convenções de código específicas da empresa.
  • Escalabilidade e custo-benefício. A solução precisava lidar com a grande base de código da Moovit sem sobrecarga significativa de desempenho ou custos exorbitantes.

Resultados: Menos problemas na produção, mais confiança do desenvolvedor

Atualmente, o Qodana é usado por seis equipes da Moovit, com um total de 60 desenvolvedores. Como o Qodana é baseado no mesmo mecanismo de análise do IntelliJ IDEA, os desenvolvedores da Moovit sincronizaram seus perfis de inspeção no IntelliJ IDEA e no Qodana.


O processo resultante envolve as seguintes etapas:

  1. Os desenvolvedores primeiro executam verificações pré-commit do Qodana no IntelliJ IDEA e corrigem quaisquer problemas.
  2. Em seguida, eles enviam solicitações de merge (MRs) para um repositório Bitbucket. Um trabalho de build começa no Jenkins, onde um gate de qualidade adicional do Qodana bloqueia o código se ele exceder um determinado número de problemas ou se contiver problemas de alta gravidade.
  3. Se o merge foi bloqueado pelo gate de qualidade do Qodana, o desenvolvedor recebe uma mensagem do Slack com um link para o relatório no Qodana Cloud. Em seguida, ele usa o recurso "Open in IDE" para aplicar as correções recomendadas no IntelliJ IDEA antes de repetir o commit do código.

"A principal vantagem foi que não precisávamos predefinir uma lista de inspeções, pois o Qodana monitora uma ampla gama de problemas de alta gravidade. Simplesmente revisamos sua lista padrão de problemas críticos e removemos apenas aqueles que não eram relevantes para nossas necessidades."

— Amit Weinblum, líder da equipe de infraestrutura da Moovit

Redução do número de incidentes de produção

A equipe de infraestrutura relatou menos problemas de produção, especialmente aqueles que poderiam ter sido detectados durante o desenvolvimento, graças à detecção proativa e à resolução logo no início do processo.

"Ainda somos relativamente iniciantes com o Qodana, mas já houve dois casos importantes em que pensei: 'Eles salvaram minha equipe de trabalhar até tarde da noite'. Isso teve um impacto positivo no meu trabalho, pois agora tenho mais confiança de que seremos alertados sobre problemas críticos."

— Dor Rud, líder da equipe de back-end da Moovit

Aplicação mais fácil das regras críticas do código

A Moovit valorizou a capacidade de criar suas próprias regras personalizadas que diferem das inspeções padrão do Qodana, personalizar a gravidade dos problemas e adicionar ou remover facilmente inspeções de seu perfil, o que permitiu monitorar as alterações de código que realmente importam para eles.

Aumento da produtividade dos desenvolvedores e aceitação das práticas recomendadas de qualidade de código

Os desenvolvedores gostaram da precisão da análise e da integração com o IntelliJ IDEA, o que lhes permitiu resolver os problemas mais rapidamente e com menos interrupções em seu workflow.

Outro fator importante foi o poder da marca JetBrains, que ajudou a convencer os desenvolvedores a adotar o Qodana como uma etapa adicional de análise de código. Eles confiavam nos resultados porque já eram fãs do IntelliJ IDEA e de outros produtos da JetBrains. Por fim, sua velocidade e confiabilidade aumentaram a percepção positiva da análise estática dentro da organização.

"Sinceramente, estávamos preocupados com a reação negativa que teríamos de enfrentar quando apresentamos o Qodana. Geralmente é muito difícil impor uma política da empresa aos desenvolvedores. Graças à boa reputação da JetBrains e ao fato de que o Qodana relata problemas realmente críticos, os desenvolvedores não estão ignorando o Qodana ou procurando soluções alternativas, mas corrigindo os problemas."

— Dor Rud, líder da equipe de back-end da Moovit

"Como qualquer ferramenta de análise de código, o Qodana acrescenta uma etapa adicional ao pipeline e torna o ciclo de desenvolvimento mais lento, mas é um inconveniente de curto prazo. A longo prazo, ele estabilizou nosso sistema de produção e permitiu que os desenvolvedores evitassem corrigir problemas tarde demais no pipeline. Estamos vivendo uma mudança de paradigma, em que as equipes de desenvolvimento seguem as políticas e economizam algumas noites sem dormir com o Qodana."

— Amit Weinblum, líder da equipe de infraestrutura da Moovit