Revisões de Código em Java
Guia de Estilo Java
Os desenvolvedores devem seguir o Guia de Estilo Java do Google.
Análise de Código / Verificação de Estilo
Acreditamos firmemente que um estilo consistente aumenta a legibilidade e a manutenção de uma base de código. Portanto, recomendamos o uso de analisadores para impor regras de estilo e consistência.
Fazemos uso do Checkstyle usando a mesma configuração usada no Azure Java SDK.
FindBugs e PMD também são comumente usados.
Formatação Automática de Código
O Eclipse e outros IDEs Java oferecem suporte para formatação automática de código. Se estiver usando o Maven, alguns desenvolvedores também fazem uso do formatter-maven-plugin.
Validação de Build
É importante impor o estilo de código e as regras na integração contínua (CI) para evitar que os membros da equipe façam merge de código que não esteja em conformidade com os padrões em seu repositório Git. Se estiver construindo usando o Azure DevOps, o Azure DevOps oferece suporte para tarefas de build do Maven e Gradle usando ferramentas de análise de código PMD, Checkstyle e FindBugs como parte de cada build.
Aqui está um exemplo de YAML para uma tarefa de build Maven com todas as três ferramentas de análise habilitadas:
- task: Maven@3
displayName: 'Maven pom.xml'
inputs:
mavenPomFile: '$(Parameters.mavenPOMFile)'
checkStyleRunAnalysis: true
pmdRunAnalysis: true
findBugsRunAnalysis: true
Aqui está um exemplo de YAML para uma tarefa de build Gradle com todas as três ferramentas de análise habilitadas:
- task: Gradle@2
displayName: 'gradlew build'
inputs:
checkStyleRunAnalysis: true
findBugsRunAnalysis: true
pmdRunAnalysis: true
Checklist de Revisão de Código
Além do Checklist de Revisão de Código, você também deve procurar por itens específicos de revisão de código em Java:
- O projeto utiliza Lambdas para tornar o código mais limpo?
- A injeção de dependência (DI) é usada? Está configurada corretamente?
- Se o código usa o Spring Boot, você está usando @Inject em vez de @Autowire?
- O código lida com exceções corretamente?
- O Azul Zulu OpenJDK está sendo usado?
- Uma ferramenta de automação de build e gerenciamento de pacotes (Gradle ou Maven) está sendo usada?