Amazon CodeGuru Reviewer

O Amazon CodeGuru Reviewer encontra problemas no seu código Java e Python e recomenda como corrigi-los. Por exemplo, o CodeGuru Reviewer detecta vulnerabilidades de segurança, segredos, vazamentos de recursos, problemas de concorrência, validação de entrada incorreta e desvio das práticas recomendadas para o uso de APIs da AWS e SDKs. Para começar a revisar o código, você pode associar seus repositórios de código existentes no GitHub, GitHub Enterprise, Bitbucket ou AWS CodeCommit com o CodeGuru.

Detecção de segurança

O CodeGuru Reviewer ajuda a melhorar a segurança do código e fornece recomendações baseadas nas vulnerabilidades comuns (OWASP Top 10) e nas práticas recomendadas de segurança interna da AWS. Ele usa raciocínio automatizado para analisar o fluxo de dados desde a fonte até o destino e através de múltiplas funções para detectar vulnerabilidades de segurança difíceis de encontrar. O CodeGuru Reviewer Security Detector oferece suporte ao Java 8 até o Java 11 e com o Python 3 e posterior. Você pode usá-lo para detectar problemas de segurança de código, como os seguintes:

  1. OWASP Top 10: confere os principais riscos de segurança das aplicações Web, como controle de acesso interrompido, injeção, falhas na integridade dos dados
  2. Práticas recomendadas de segurança da API da AWS: confere a segurança API para Amazon Elastic Compute Cloud e AWS Key Management Service
  3. Práticas recomendadas de segurança da AWS (a criptografia da AWS é implementada de acordo com os padrões da Amazon): aplique os conhecimentos internos de segurança da Amazon ao seu código
  4.  Práticas recomendadas para bibliotecas criptográficas Java: é possível conferir se o Javax.Crypto.Cipher foi inicializado e chamado corretamente
  5. Práticas recomendadas para bibliotecas criptográficas Python: é possível conferir se versões corretas dos algoritmos de hashing e criptografia do Python estão sendo usadas
  6. Aplicações Web seguras: é possível conferir problemas de segurança relacionados a aplicações Web, por exemplo, injeções LDAP
  7. Vazamentos de informações confidenciais: é possível conferir o vazamento de informações confidenciais (exemplo: fazer login nas credenciais da conta da AWS em texto sem formatação)
  8. Validação de entrada: verifica dados malformados ou maliciosos de fontes não confiáveis
  9. Injeção de logs: protege de vulnerabilidades do tipo Log4j ao controlar que o código previna de forma apropriada entradas de logs forjados ou injeção de conteúdo malicioso em logs

Você pode ir até o console do Amazon CodeGuru e invocar uma análise de segurança em todo o seu repositório ou integrar com CI/CD através do GitHub Actions.

Image under Security detection

Detecção de segredos

O CodeGuru Reviewer Secrets Detector utiliza análise baseada em machine learning para ajudá-lo a detectar segredos que estão codificados em seu repositório ou arquivos de configuração, incluindo senhas, chaves API, chaves SSH, tokens de acesso, strings de conexão de banco de dados e tokens JSON Web. Parte do CodeGuru Reviewer, Secret Detector é um mecanismo automatizado que confere o código para esses segredos e fornece passos de apontar e clicar para protegê-los usando a AWS Secrets Manager. É possível também pode identificar chaves específicas geradas pelos provedores de API mais comuns, incluindo AWS, Atlassian, GitHub, Salesforce, HubSpot e Stripe. Para a lista de segredos, consulte a documentação.

Detecção de segredos

Qualidade de código

O CodeGuru Reviewer identifica problemas de qualidade de código e capacita sua equipe de desenvolvimento para manter um alto padrão de codificação no processo de desenvolvimento de software:

  • Práticas recomendadas da AWS: uso correto de APIs da AWS (exemplo: sondagem, paginação)
  • Práticas recomendadas para Java e Python: uso correto de recursos populares de biblioteca e linguagem Java e Python.
  • Simultaneidade: detecta ausência de sincronização, resultando em funcionalidade incorreta ou sincronização excessiva que leva a problemas de performance
  • Inconsistência: analisa os padrões de codificação dentro de um repositório e ajuda a detectar quando há uma anomalia que se desvie do padrão
  • Manutenção do código: identifica complexidades de código ou qualquer característica no código fonte que torne o código mais difícil de ser mantido
  • Vazamentos de recursos: manuseio correto de recursos (exemplo: liberação de conexões de banco de dados)
  • Práticas recomendadas de codificação comuns: confere se há parâmetros e procura linhas de código que podem criar bugs (exemplo: esquecer de conferir se um objeto é nulo antes de configurá-lo, reatribuir um objeto sincronizado ou esquecer de inicializar uma variável ao longo de um caminho de exceção).
  • Clonagem de código: identifica o código duplicado que pode ser consolidado para proporcionar uma melhor manutenção do código
Qualidade de código

Recomendações automatizadas

Há dois tipos diferentes de revisões de código que o CodeGuru Reviewer pode fazer para fornecer recomendações - Revisões incrementais de código e de repositório completo 

Revisões incrementais de código 
As revisões incrementais de código são criadas automaticamente quando você cria uma solicitação extraída a partir de um repositório associado. Estas revisões de código conferem o código alterado em uma solicitação extraída. O CodeGuru Reviewer também fornece um painel de solicitação de extração que lista informações para todas as revisões de código (exemplo: status da revisão do código, número de linhas de código analisadas e o número de recomendações). A definição de preço mensal padrão do CodeGuru Reviewer inclui todas as análises de revisões incrementais de código para repositórios integrados.

Recomendações automatizadas

Revisão completa do código de análise do repositório
Com o CodeGuru Reviewer, você pode obter recomendações de revisão de código com a tecnologia ML para todas as linhas de código nos repositórios associados) sob um ramo de código especificado. Você pode executar varreduras completas de repositório para obter recomendações de revisão de código durante a migração de código, código due diligence e iniciativas periódicas de manutenção de código. No console do CodeGuru, você pode navegar até a guia “Repository Analysis” (Análise de repositório) na página “Code Reviews” (Revisões de código) para acionar uma nova análise em um repositório completo. Duas verificações de repositório completas vêm incluídas com o novo modelo de definição de preço baseado no tamanho do repositório. Para obter mais detalhes, acesse a página de definição de preço do CodeGuru. 

Revisão completa do código de análise do repositório
Revisões de código

Você pode ver todas as revisões de código na seção “Reviewer” (Revisor) da página “Code Reviews” (Revisões de código) do console. Essa página lista todas as informações de revisão de código, como o status da revisão de código, o repositório, o número de recomendações e muito mais. Você pode clicar em uma revisão de código concluída com êxito para exibir detalhes de recomendações, procurar recomendações e ver o número de linhas analisadas. Também é possível fornecer comentários sobre as recomendações do CodeGuru, clicando no ícone de polegar para cima ou para baixo abaixo da recomendação.

Integração CI/CD com o GitHub Actions

A experiência CI/CD para o CodeGuru Reviewer permite que você invoque a qualidade do código e a análise de segurança como uma etapa dentro do seu fluxo de trabalho CI utilizando o GitHub Actions. Ele pode ser configurado para ser executado e fornecer recomendações em uma execução do tipo pull, push ou programada do seu pipeline. Após invocar uma análise do CodeGuru Reviewer via CI/CD, você pode visualizar suas recomendações de qualidade e segurança de código dentro do CodeGuru Reviewer Console ou dentro da interface do usuário do GitHub. Com a integração do CI/CD, é possível monitorar continuamente a qualidade e segurança de seu código para ajudar a garantir que você não perca uma recomendação. No CodeGuru Reviewer, você pode usar a GitHub Action localizada no GitHub Marketplace para executar revisões de segurança e receber recomendações diretamente dentro da interface de usuário do GitHub. Uma vez integrado, as recomendações serão exibidas diretamente na guia GitHub Security (Segurança do GitHub).

Detecção de segurança

As recomendações também são fornecidas na solicitação de pull e no Console AWS. Se você clicar em uma recomendação no GitHub, verá informações mais detalhadas sobre a descoberta, como a ocorrência que ela cria na aplicação, o caminho da resolução, as Common Weakness Enumerations (CWEs) ligadas a ela e sua gravidade.

Solicitações pull

Amazon CodeGuru Profiler

O Amazon CodeGuru Profiler está sempre buscando otimizações de desempenho de aplicativos, identificando suas linhas de código mais "caras" e recomendando maneiras de corrigi-las para reduzir a utilização de CPU, cortar custos de computação e melhorar o desempenho dos aplicativos. Por exemplo, o CodeGuru Profiler pode identificar quando sua aplicação está consumindo capacidade excessiva da CPU em uma rotina de registro em log ao invés de executar na lógica empresarial principal.

Criação de perfil sempre ativado de aplicações em produção

O CodeGuru Profiler foi desenvolvido para ser executado continuamente em produção com o mínimo de sobrecarga da CPU, o que significa que você pode deixá-lo sempre ligado com impacto mínimo sobre a performance da aplicação. Ele permite que você crie um perfil e solucione problemas de sua aplicação usando padrões reais de tráfego de clientes e descubra facilmente problemas de performance. Com os dados do criador de perfil e recomendações baseadas em ML, você pode identificar e corrigir problemas de desempenho para suas aplicações em produção. O CodeGuru Profiler também fornece um resumo de heap, permitindo que você identifique quais objetos estão usando memória em qualquer ponto do tempo.

Compreenda o comportamento de tempo de execução de aplicações

O CodeGuru Profiler analisa constantemente as características de utilização de CPU, uso de heap e latência da aplicação para mostrar onde você gasta mais ciclos ou tempo em sua aplicação. Essa análise de CPU e latência é apresentada em um gráfico interativo de chama que ajuda você a entender facilmente quais caminhos de códigos consomem mais recursos, verificar se sua aplicação tem a performance esperada e descobrir áreas passíveis de otimização adicional.

Anomalia no processamento de imagem
 Clique para aumentar

Os gráficos de chama exibem a performance da sua aplicação ao agregar amostras de rastreamento de pilha durante um intervalo de tempo para produzir uma imagem precisa do comportamento da aplicação durante esse tempo. Você pode usar um gráfico de chama para entender quais caminhos consomem mais recursos, verificar se a aplicação apresenta a performance esperada e descobrir áreas passíveis de otimização adicional. Por exemplo, o método UploadGreyImage está gastando 134.868 USD por ano e está consumindo 10,22% do tempo do relógio de parede. Se você não esperava gastar tanto tempo assim, deveria investigar. 

Resumo de heap

A análise de uso de heap é apresentada em uma visualização de resumo de heap que mostra a você quais objetos estão alocados em seu heap, seja em classes do seu próprio domínio ou nas classes de bibliotecas ou do JDK.

Descubra anomalias e problemas comuns na performance da sua aplicação
 Clique para aumentar

O resumo de heap visualiza todos os objetos alocados no heap durante um intervalo de tempo especificado, juntamente com os respectivos tamanhos, quantidades e séries temporais. Por exemplo, no gráfico de série temporal você pode ver que às 16:20 há dois objetos que começam a crescer significativamente (java.util.LinkedHashMap$Entry e java.land.UUID), o que indica um possível vazamento de memória. Caso essa tendência crescente continue, ela pode resultar em uma situação de falta de memória se permanecer sem verificação.

Recomendações inteligentes

O CodeGuru Profiler identifica automaticamente os problemas de desempenho em seu aplicativo e fornece recomendações baseadas em ML sobre como corrigi-los. Essas recomendações ajudam a identificar e otimizar os métodos mais caros ou com uso mais intensivo de recursos em seu código, sem exigir que você seja um especialista em engenharia de desempenho. Essas otimizações ajudam você a reduzir o custo de sua infraestrutura, reduzir a latência e melhorar sua experiência geral do usuário final.

Recomendações inteligentes
 Clique para aumentar

Ao ver oportunidades de otimizar a performance da sua aplicação, o Amazon CodeGuru Profiler explica por que está recomendando uma alteração, qual é a causa do problema, como resolvê-lo e onde no código esse problema afeta sua aplicação. Essa recomendação mostra a você que essa linha dispendiosa de código custa 182.160,00 USD por ano e tem um impacto de 2,97% sobre sua utilização de CPU. Se você seguir as etapas de resolução sugeridas, poderá economizar até 182.160,00 USD.

Detecção de anomalias

O Amazon CodeGuru Profiler analisa constantemente seus perfis de aplicativo em tempo real e detecta anomalias no comportamento de seu aplicativo e de seus métodos. Cada anomalia é acompanhada no relatório de Recomendações do console do CodeGuru Profiler e você pode ver séries temporais de como a latência do método se comporta ao longo do tempo, com anomalias claramente destacadas. Se configurada, uma notificação do Amazon SNS também será enviada quando uma nova anomalia for detectada.

Detecção de anomalias
 Clique para aumentar
Definição de preço do Amazon CodeGuru
Saiba mais sobre a definição de preço do Amazon CodeGuru

Acesse a página de definição de preço do Amazon CodeGuru.

Saiba mais 
Cadastre-se para obter uma conta gratuita
Cadastre-se para obter uma conta gratuita

Obtenha acesso instantâneo ao nível gratuito da AWS. 

Cadastrar-se 
Comece a criar no console
Comece a criar no console

Comece a criar com o Amazon CodeGuru no Console de Gerenciamento da AWS.

Fazer login