O blog da AWS

Otimize o desenvolvimento de software com o Amazon CodeWhisperer

Por Dhaval Shah, Nikhil Sharma e Vamsi Cherukuri

 

As empresas se diferenciam ao oferecer novos recursos aos clientes com mais rapidez. Elas devem aproveitar a automação para acelerar o desenvolvimento de software, otimizando a qualidade do código, melhorando o desempenho e garantindo que seu software atenda aos requisitos de segurança e conformidade. Treinado com bilhões de linhas de código da Amazon e de código aberto, o Amazon CodeWhisperer é um companheiro de codificação de Inteligência Artificial (IA) que ajuda os desenvolvedores a escreverem o código gerando sugestões (de linha e de função completa) em tempo real em seus IDEs (Ambientes de Desenvolvimento Integrado). O Amazon CodeWhisperer tem dois níveis: o nível individual, que é gratuito para uso pessoal, e o nível profissional, que fornece recursos administrativos para organizações que desejam conceder a seus desenvolvedores acesso ao CodeWhisperer. Este blog fornece uma visão geral de alto nível de como os desenvolvedores podem usar o CodeWhisperer.

Começando

Começar a usar o CodeWhisperer é simples e está documentado aqui. Após a configuração, o CodeWhisperer se integra ao IDE e fornece sugestões de código com base nos comentários escritos no IDE. Use a tecla TAB para aceitar uma sugestão, ESC para rejeitar a sugestão ALT+C (Windows) /option + C (MAC) para forçar uma sugestão e as teclas de seta esquerda e direita para alternar entre sugestões.

Atualmente o CodeWhisperer suporta a geração de código para 15 linguagens de programação. O CodeWhisperer pode ser usado em vários IDEs, como Amazon Sagemaker Studio, Visual Studio Code, AWS Cloud9, AWS Lambda e muitos IDEs da JetBrains. Consulte a documentação do Amazon CodeWhisperer para obter as atualizações mais recentes sobre linguagens e IDEs compatíveis.

Sugestões de código contextual

O CodeWhisperer examina continuamente o código e os comentários em busca de sugestões contextuais de código. Ele gerará trechos de código usando essas informações contextuais e a localização do cursor. Abaixo está ilustrado um exemplo de uma sugestão de código baseado em comentários embutidos no Visual Studio Code que demonstra como o CodeWhisperer pode fornecer sugestões de código específicas ao contexto sem exigir que o usuário substitua manualmente variáveis ou parâmetros. No comentário, o arquivo e o bucket do Amazon Simple Storage Service (Amazon S3) são especificados, e o CodeWhisperer usa esse contexto para sugerir código relevante.

Image depicts a person typing on a computer keyboard, with a code editor window on the screen. The code shows a function for uploading a file from a local directory to an Amazon S3 bucket

O CodeWhisperer também suporta e recomenda a escrita de código declarativo e código procedural, como scripts de shell e linguagens de consulta (query). O exemplo a seguir mostra como o CodeWhisperer recomenda que os blocos de código em um script de shell percorram uma lista de servidores para executar o comando hostname e salvar sua resposta em um arquivo de saída.

Image is a gif of a person typing on a computer keyboard, with a terminal window on the screen displaying a shell script named 'shell_script.sh.' The code defines a list of servers and outputs the file path. As the person types, the code updates with the output path displayed below.

No exemplo a seguir, com base no comentário, o CodeWhisperer sugere um código SQL (Structured Query Language) para usar expressões de tabela comuns.

"Image is a gif of a person typing on a computer keyboard, with a code editor window on the screen displaying a SQL query. The query uses common table expressions to find the age of a product from an inventory table. As the person types, the query updates with the output displayed below in the form of SQL code. The background is a blurred office environment

O CodeWhisperer trabalha com os populares Ambientes de Desenvolvimento Integrado (IDEs). Para obter mais informações sobre os IDEs suportados, consulte a documentação do CodeWhisperer. Abaixo está ilustrado o CodeWhisperer integrado ao console AWS Lambda.

"Image is a gif of a person typing on a computer keyboard, with an AWS Lambda console on the screen. The person is entering a prompt to list all the Amazon S3 buckets. As the person types, the console updates with the output code displayed below, which can be executed to show all the S3 buckets."

O Amazon CodeWhisperer é um assistente de codificação de IA versátil que pode ajudar em uma variedade de tarefas, incluindo tarefas relacionadas à AWS e integrações de API, bem como integrações de API externas (fora da AWS). Por exemplo, como ilustrado abaixo, o CodeWhisperer está sugerindo código para as APIs do Twilio.

"Image is a gif of a person typing on a computer keyboard, with an integrated development environment (IDE) on the screen. The person is entering a prompt to write a code that uses the Twilio API to make a voice call. As the person types, the IDE updates with the output function displayed below, which can be executed to make the voice call."

Agora que vimos como o CodeWhisperer pode ajudar a escrever código com mais rapidez, a próxima seção explora como usar a IA com responsabilidade.

Use a IA com responsabilidade

Os desenvolvedores geralmente utilizam o código-fonte aberto, mas enfrentam desafios de atribuição de licenças, como atribuir os autores originais ou manter o texto da licença. O desafio está em identificar e atribuir adequadamente os componentes relevantes de código aberto usados em um projeto. Com a abundância de bibliotecas e estruturas de código aberto disponíveis, pode ser demorado e complexo rastrear e atribuir cada parte do código com precisão. O não cumprimento dos requisitos de atribuição de licenças pode resultar em problemas legais, violação dos direitos de propriedade intelectual e danos à reputação do desenvolvedor. O rastreamento de referência do CodeWhisperer monitora continuamente o código sugerido em busca de semelhanças com o código-fonte aberto conhecido, permitindo que os desenvolvedores tomem decisões informadas sobre incorporá-lo ao projeto e garantir a atribuição adequada.

"Image is a gif of a code editor window displaying a counting sort function, with a section of the code highlighted. The highlighted section is the implementation of counting sort by digit, suggested by CodeWhisperer. The gif includes a caption mentioning that the implementation is being referenced from MIT. This showcases the capability of CodeWhisperer's reference tracking."

Segurança de aplicação pró ativa

O CodeWhisperer pode escanear o código em busca de vulnerabilidades difíceis de encontrar, como aquelas que estão entre os dez principais Open Web Application Security Project (OWASP), ou aquelas que não atendem às melhores práticas da biblioteca de criptografia, às melhores práticas de segurança interna da AWS, e outras. No momento em que este artigo foi escrito, o CodeWhisperer oferece suporte à verificação de segurança nas linguagens Python, Java e JavaScript. Abaixo está uma ilustração da identificação dos CWEs (Common Weakness Enumeration) mais conhecidos, juntamente com a capacidade de analisar profundamente a linha de código com problema através de um clique.

"Image is a gif of a code editor window displaying a code to download a file, with a section of the code highlighted. Below the code, there is an illustration of the identification of the most common Common Weakness Enumerations (CWEs) found in the code. However, it is mentioned that not all CWEs have been identified. Additionally, the illustration showcases the feature of being able to dive deep into the problematic line of code by clicking a button."

No exemplo a seguir, o CodeWhisperer fornece uma análise arquivo por arquivo dos CWEs e destaca os 10 principais CWEs do OWASP, como “Unsensitized input is run as code”, “Cross-site scripting”, “Resource leak”, “Hardcoded credentials”, “SQL injection”, “OS command injection” and “Insecure hashing”.

Image displays a screen with a proceeding from CodeWhisperer. The text highlights the file-by-file analysis of Common Weakness Enumerations (CWEs) and emphasizes the top 10 OWASP CWEs. These include CWE-94, CWE-95, and CWE-96, which pertain to the unsanitized input being executed as code. Additionally, CWE-20, CWE-79, and CWE-80 are related to cross-site scripting. Furthermore, CWE-400 and CWE-664 are associated with resource leaks, while CWE-798 relates to hardcoded credentials. CWE-89 refers to SQL injection, and CWE-77, CWE-78, and CWE-88 are connected to OS command injection. Lastly, CWE-327 and CWE-328 relate to insecure hashing.

Gerando os casos de teste

Um bom desenvolvedor sempre escreve testes. O CodeWhisperer pode ajudar a sugerir casos de teste e verificar a funcionalidade do código. O CodeWhisperer considera valores limite (boundary values), edge cases e outros problemas potenciais que talvez precisem ser testados. No exemplo abaixo, um comentário referente ao uso da função fact_demo () leva o CodeWhisperer a sugerir um teste de unidade para fact_demo () enquanto aproveita os detalhes contextuais.

"Image is a gif displaying a code editor window, with a section of code highlighted. A comment within the code refers to the use of the fact_demo() function. CodeWhisperer is seen suggesting code for unit testing, leveraging contextual details related to the fact_demo() function. The background is a blurred office environment."

Além disso, o CodeWhisperer pode simplificar a criação de código repetitivo para testes unitários. Por exemplo, se você precisar criar dados de amostra usando instruções INSERT, o CodeWhisperer poderá gerar as inserções necessárias com base em um padrão.

"Image is a gif of a person typing on a computer keyboard, with an integrated development environment (IDE) on the screen. The person is entering a prompt to insert sample users into a table, with details such as username, password, and status. As the person types, CodeWhisperer builds out the insert query for the user. The IDE updates with the output query displayed below, which can be executed to insert the sample users into the table."

CodeWhisperer com Amazon SageMaker Studio e Jupyter Lab

O CodeWhisperer funciona com o SageMaker Studio e o Jupyter Lab, fornecendo suporte ao preenchimento de código para Python em células de código. Para utilizar o CodeWhisperer, siga as instruções de configuração para ativá-lo no Amazon SageMaker Studio e no Jupyter Lab. Para começar a codificar, consulte Ações do usuário. A ilustração a seguir mostra as recomendações de código do CodeWhisperer no SageMaker Studio. Ele demonstra o código sugerido com base em comentários para carregar e analisar um conjunto de dados.

"Image is a gif of an illustration showcasing CodeWhisperer's code recommendations in SageMaker Studio. The illustration shows a code editor window with a section of code highlighted. The code pertains to loading and analyzing a dataset. CodeWhisperer is seen providing code recommendations based on comments within the code. The recommendations appear in the form of a pop-up, with suggested changes displayed."

Conclusão

Este blog destacou as várias maneiras que os desenvolvedores podem aproveitar o CodeWhisperer para aumentar a produtividade, otimizar os fluxos de trabalho e garantir o desenvolvimento de código seguro. Ao adotar os recursos de IA do Code Whisperer, os desenvolvedores podem experimentar maior produtividade, aprendizado acelerado e economia significativa de tempo.

Para aproveitar as vantagens do CodeWhisperer e otimizar seu processo de codificação, aqui estão as próximas etapas:

  1. Visite a página de recursos para saber mais sobre os benefícios do CodeWhisperer.
  2. Inscreva-se e comece a usar o CodeWhisperer.
  3. Leia sobre as histórias de sucesso do CodeWhisperer

 

Este artigo foi traduzido do Blog da AWS em Inglês.


Sobre os autores

Vamsi Cherukuri é um Senior Technical Account Manager na Amazon Web Services (AWS), com mais de 15 anos de experiência de desenvolvimento em Analytics, modernização de aplicaç              ões e plataformas de dados. Com paixão por  tecnologia, Vamsi tem prazer em ajudar os clientes a alcançar rápidos resultados comerciais por meio de sua jornada de transformação na nuvem. Em seu tempo livre, ele encontra paz nas atividades de correr e andar de bicicleta, mergulhando frequentemente no emocionante reino das maratonas.

 

 

 

 

Dhaval Shah é arquiteto sênior de soluções na AWS, especializado em aprendizado de máquina. Com um forte foco em negócios digitais nativos, ele capacita os clientes a aproveitar a AWS e impulsionar o crescimento de seus negócios. Como entusiasta de ML, Dhaval é movido por sua paixão por criar soluções impactantes que trazem mudanças positivas. Em seus momentos de lazer, ele se entrega ao amor por viagens e aprecia momentos de qualidade com sua família.

 

 

 

 

Nikhil Sharma é líder de arquitetura de soluções na Amazon Web Services (AWS), onde ele e sua equipe de arquitetos de soluções ajudam os clientes da AWS a resolver desafios comerciais críticos usando tecnologias e serviços de nuvem da AWS.

 

 

 

 

Revisores

Gerson Itiro Hidaka atualmente trabalha como Enterprise Solution Architect na AWS e atua no atendimento a clientes na área de Mid-Enterprise no Brasil. Entusiasta de tecnologias como Internet das Coisas (IoT), Drones, Devops e especialista em tecnologias como virtualização, serverless, container e Kubernetes. Trabalha com soluções de TI a mais de 25 anos, tendo experiência em inúmeros projetos de otimização de infraestrutura, redes, migração, disaster recovery e DevOps em seu portifólio

 

 

 

 

Andre Mello é Arquiteto de Soluções na AWS.