Criar uma avaliação de modernização de aplicativos

A avaliação de modernização de apps do Migration Center (codmod) é uma ferramenta com tecnologia de IA que automatiza o processo de avaliação de modernização do seu aplicativo. Nesta página, descrevemos as etapas para instalar, usar e resolver problemas da ferramenta codmod.

Sobre a avaliação de modernização de apps

O processo típico de avaliação de modernização leva algumas semanas e exige muita experiência. Ao automatizar esse processo, a ferramenta codmod reduz significativamente esse tempo para algumas horas.

Essa ferramenta tem como objetivo fornecer informações baseadas em evidências sobre a arquitetura, a funcionalidade e os possíveis bloqueadores do aplicativo atual que podem diminuir a velocidade da transformação para a nuvem.

Essa ferramenta é destinada às seguintes funções:

  • Arquitetos de TI
  • Tomadores de decisão
  • Proprietários do aplicativo

A ferramenta codmod tem como objetivo acelerar a transformação de aplicativos, oferecendo visibilidade clara das mudanças necessárias e dos benefícios obtidos com a transformação do aplicativo em Google Cloud. O codmod é uma ferramenta CLI portátil que usa o Gemini para analisar o código-fonte e fornece recomendações com base nas práticas recomendadas do Google Cloud .

Antes de começar

A ferramenta codmod requer os seguintes pré-requisitos:

  • Uma estação de trabalho Linux ou Windows (10 ou mais recente).
  • Acesso a um projeto Google Cloud com a API Vertex AI ativada.
  • Uma instalação da CLI gcloud na sua estação de trabalho. Para mais informações, consulte Instalar a CLI gcloud.

Preços

O custo de usar o Gemini para avaliação de código é determinado principalmente pelo tamanho da base de código e é medido em tokens. A tabela a seguir mostra as estimativas de custos que você pode esperar com base nas suas linhas de código e no modelo escolhido:

Base de código Linhas de código (LOC) Custo estimado
adaptive 2.0-flash 2.5-pro (padrão) 2.5-flash
Spring Petclinic ~6.500 US$ 20 US$ 2 US$ 30 US$ 4
Projeto James ~1.000.000 US$ 60 US$ 30 US$ 500 US$ 40
Elasticsearch ~5.000.000 US$ 200 US$ 200 US$ 3.000 US$ 200

Esses valores podem ser uma estimativa exagerada porque não consideram possíveis economias devido ao seguinte:

  • Preços reduzidos para consultas curtas.
  • Preços reduzidos para o cache implícito.
  • Descontos por compromisso de uso (CUDs).

Espera-se que os custos desses parâmetros sejam uma parte insignificante do custo total, especialmente para bases de código maiores. Para mais informações, consulte Preços da API Gemini.

Mais informações

A ferramenta usa os recursos avançados de análise e compreensão de código da API Vertex AI. Para mais informações sobre os modelos disponíveis e os recursos deles, consulte Modelos do Google na documentação da API Vertex AI.

Para manter a performance ideal e a eficiência de custos, o codmod tem um limite de tamanho de base de código de aproximadamente 6 milhões de linhas de código. Para bases de código que excedem esse limite, recomendamos dividi-las em partes menores e gerenciáveis para análise. Analisar seções menores também pode ajudar em avaliações mais focadas e reduzir o tempo geral de processamento.

Configurar codmod

Esta seção fornece instruções de instalação e autenticação para usar a ferramenta codmod.

Instalar codmod

Windows

Execute o seguinte comando no Windows PowerShell para baixar a versão mais recente do codmod:

$version=curl.exe -s https://codmod-release.storage.googleapis.com/latest
curl.exe -O "https://codmod-release.storage.googleapis.com/${version}/windows/amd64/codmod.exe"

Linux

Execute o comando a seguir para fazer o download da versão mais recente de codmod:

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/linux/amd64/codmod"
chmod +x codmod

Autenticar-se no Google Cloud

Para usar a ferramenta codmod, você precisa de um projeto Google Cloud .

  1. Verifique se a API Vertex AI está ativada no projeto no console ou usando a CLI:

    gcloud services enable aiplatform.googleapis.com --project <project-id>
    
  2. Verifique se você tem o papel roles/aiplatform.user ou semelhante no projeto.

  3. Para autenticar, execute o seguinte comando:

    gcloud auth application-default login
    

Como alternativa, use uma conta de serviço e defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS. Para saber mais, consulte Como o Application Default Credentials funciona.

Gerenciar a configuração do codmod

As seções a seguir explicam como configurar codmod com o comando codmod config.

Listar todas as configurações

Para conferir todas as propriedades de configuração atuais e os valores delas, execute o seguinte comando:

codmod config list

Definir um valor padrão para uma flag

Para definir um valor padrão para uma propriedade, use o comando set. Por exemplo, para definir o ID do projeto padrão, execute:

codmod config set project "PROJECT_ID"

Substitua PROJECT_ID pelo ID do projeto Google Cloud .

Para definir a região padrão, execute:

codmod config set region "REGION"

Substitua REGION pela região Google Cloud . Consulte a lista de regiões disponíveis. Se você não tiver certeza sobre qual região usar, use us-central1.

Receber um valor específico

Para conferir o valor de uma única propriedade, use o comando get. Por exemplo, para receber o ID do projeto configurado, execute o seguinte comando:

codmod config get project

Remover um valor padrão

Para remover um padrão configurado e reverter para a configuração padrão original da ferramenta, use o comando unset. Por exemplo, para remover o ID do projeto padrão, execute o seguinte comando:

codmod config unset project

Criar um relatório de avaliação de codmod

As seções a seguir descrevem como criar a avaliação padrão e como personalizá-la de acordo com suas necessidades.

Criar o relatório padrão

Para criar um relatório de avaliação, execute a ferramenta codmod com as seguintes flags:

codmod create -c "CODEBASE" -o "OUTPUT"

Substitua:

  • CODEBASE: especifica o diretório que contém o código-fonte a ser analisado e pode ser especificado várias vezes.
  • OUTPUT: especifica o caminho em que o relatório gerado é salvo. O relatório está em formato HTML.

É possível substituir o projeto e a região padrão com as flags -p "PROJECT_ID" e -r "REGION", respectivamente.

Também é possível especificar as seguintes flags opcionais:

  • --modelset [2.0-flash|2.5-flash|2.5-pro|adaptive]: especifica quais modelos do Gemini usar. O valor padrão é 2.5-pro. A opção adaptativa oferece uma redução significativa de custos, mas pode haver uma compensação na qualidade do relatório em comparação com 2.5-pro.
  • --context <string>: qualquer contexto adicional que você queira fornecer sobre o projeto. A ferramenta considera esse contexto ao gerar o relatório.
  • --context-file <path>: igual a --context, em que o contexto é fornecido no arquivo especificado.
  • --format <html|markdown|odt|json>: o formato usado para o relatório gerado. O padrão é HTML.
  • --allow-large-codebase: por padrão, o codmod pede confirmação antes de analisar bases de código com mais de um milhão de linhas de código para evitar custos altos. Essa opção serve como uma confirmação não interativa. Também é possível ativar esse recurso por padrão executando codmod config set allow_large_codebase true.
  • --improve-fidelity: quando definido, codmod gera seções em série em vez de em paralelo. Isso melhora a consistência entre diferentes seções do relatório final, mas exige um tempo de execução maior.
  • --force-include <strings>, --force-exclude <strings>: por padrão, o codmod verifica extensões de arquivo conhecidas, incluindo Java, .NET e Python. Use estas flags para incluir ou excluir extensões de arquivo. O argumento precisa ser uma expressão regular com a sintaxe RE2.
  • --experiments: especifique --experiments=enable_pdf,enable_images para compatibilidade com PDFs e imagens em codmod.

Criar um relatório completo

Se você precisar de uma análise completa, crie um relatório usando o comando create full:

codmod create full -c "~/mycodebase/" -o "report.html"

Criar um relatório focado na camada de dados

Se for necessário analisar a camada de dados com mais atenção, crie um relatório focado nessa área:

codmod create data-layer -c "CODEBASE" -o "OUTPUT"

Criar um relatório para uma intenção de transformação específica

Se você quiser focar o relatório em uma intenção de modernização específica, use uma das seguintes opções:

  • Transformação de carga de trabalho da Microsoft (MICROSOFT_MODERNIZATION): use com aplicativos executados no SO da Microsoft. A avaliação vai se concentrar em jornadas de transformação que modernizam frameworks baseados em .NET para usar a versão mais recente e reduzir as dependências de licenças da Microsoft.
  • Transformação de carga de trabalho de nuvem para nuvem (CLOUD_TO_CLOUD): use com aplicativos executados em outras infraestruturas de hiperescala. A avaliação vai se concentrar nas mudanças recomendadas para transformar o aplicativo, como mapear outros serviços de fornecedores de nuvem para serviçosGoogle Cloud .
  • Transformação legada do Java (JAVA_LEGACY_TO_MODERN): use com aplicativos que executam a versão Java 8 ou semelhante. A avaliação vai se concentrar em encontrar dependências de upgrade e áreas no código afetadas pela mudança para o Java 21 (a LTS atual).
  • Transformação legada do Java WILDFLY (WILDFLY_LEGACY_TO_MODERN): use com bases de código Java EE/Jakarta EE executadas em versões do servidor de aplicativos WildFly anteriores à mais recente. A avaliação vai se concentrar em identificar dependências de upgrade e áreas no código afetadas pelo upgrade da versão do servidor de aplicativos WildFly, incluindo as mudanças necessárias para diferenças e compatibilidade de API.

Para criar um relatório focado em intenção, use a flag --intent:

codmod create -c "CODEBASE" -o "OUTPUT" --intent "INTENT"

Criar um relatório com mais seções

A ferramenta permite incluir outras seções que não estão incluídas por padrão para reduzir custos. As seguintes seções são compatíveis:

  • files: uma visualização hierárquica estruturada das pastas do projeto e descrição de cada conteúdo para ajudar você a se orientar nos arquivos do projeto.
  • classes: um catálogo de classes de código com informações sobre cada classe e suas dependências em outras classes. As linguagens compatíveis são Java e C#.

Para criar as seções adicionais, use a flag --optional-sections:

codmod create -c "CODEBASE" -o "OUTPUT" --optional-sections "SECTIONS"

Substitua SECTIONS por uma lista de valores separados por vírgulas.

Criar um relatório personalizado

Se quiser analisar alguns tópicos personalizados específicos, crie um relatório personalizado com base no contexto fornecido usando o seguinte comando:

codmod create custom -c "CODEBASE" -o "OUTPUT" --context "CONTEXT"

Por padrão, um LLM é usado para ampliar o contexto fornecido e adaptá-lo para garantir que uma seção coerente seja gerada. É possível desativar esse comportamento especificando --improve-context=false.

Outras flags:

  • --from-template <path>: especifica um arquivo de modelo que define a estrutura do documento em formato de texto ou PDF. codmod detecta a estrutura e pede aprovação para continuar gerando o relatório.
  • --skip-template-approval: pula a solicitação de aprovação ao usar a flag --from-template.

Modificar um relatório

Você pode criar uma seção em um relatório ou modificar uma seção existente com base em uma seção específica. Por exemplo, você pode querer se concentrar em um aspecto específico da arquitetura do sistema ou em um tipo específico de vulnerabilidade de segurança.

Os comandos que modificam um relatório exigem as seguintes flags:

  • Um de --context e --context-file: especifique a solicitação de modificação.
  • --from-report: especifica o caminho do arquivo de relatório atual.
  • --from-section: nome da seção a ser usada como base para uma nova seção (por exemplo, "Visão geral", "Arquitetura").

Para mostrar todas as seções disponíveis em um relatório específico, execute o seguinte comando:

codmod list-sections --from-report "REPORT"

Revisar uma seção de um relatório

Execute o seguinte comando para modificar uma seção:

codmod revise section -c "CODEBASE" --from-report "REPORT" \
  -o "REVISED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"

Criar uma nova seção de relatório

Crie uma seção usando o seguinte comando:

codmod create section -c "CODEBASE" --from-report "REPORT" \
  -o "REGENERATED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"
  • A flag from-section no comando create section é opcional.
  • Por padrão, um LLM é usado para ampliar o contexto fornecido e adaptá-lo para garantir a geração de uma seção coerente. É possível desativar esse comportamento especificando --improve-context=false.

Observe o seguinte:

  • create section e revise section são compatíveis apenas com o formato de relatório html.
  • create section, revise section e list-sections esperam que a flag --from-report aponte para um relatório em formato HTML.

Estimar custos de avaliação

A ferramenta codmod ajuda você a entender o custo de uso dela, permitindo calcular o custo aproximado de criar um relatório. Para conferir a estimativa de custo, execute o seguinte comando:

codmod create --estimate-cost -c "CODEBASE"

As estimativas de custo não são compatíveis com os comandos create section e create custom.

Definir o nível de detalhamento

A verbosidade codmod é configurada usando a flag --verbosity LEVEL. O nível de detalhamento dos registros é um dos seguintes: debug, info, warn, error ou none. O valor padrão é warn.

Solução de problemas

  • Permissão negada:se você encontrar um erro de "permissão negada", verifique se concedeu a permissão de execução ao binário codmod executando o comando chmod +x codmod.
  • A CLI parece estar travada:a análise pode levar muito tempo, mas geralmente é possível ver o progresso na barra de progresso da CLI. Se a barra de progresso permanecer em 0% após 15 minutos, verifique se você tem cota suficiente para o modelo relevante. Por padrão, o codmod usa o modelo gemini-2.5-pro. No entanto, isso está sujeito a mudanças, já que diferentes conjuntos de modelos usam modelos diferentes para finalidades diferentes.
  • Relatório de erros:se um erro precisar ser investigado, colete as informações de depuração para ajudar nossa equipe de desenvolvimento. Os registros fornecem detalhes importantes para a solução de problemas. Execute o comando a seguir para coletar os registros, compacte e compartilhe o arquivo resultante com a equipe em codmod-feedback-external@google.com.

    codmod collect-logs -o "codmod_logs.zip"
    

Licenças de código aberto

Para baixar os avisos de código aberto das dependências da versão mais recente do codmod, execute:

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/THIRD_PARTY_NOTICES.txt"

Receber suporte e enviar feedback

Para melhorar a qualidade deste produto, coletamos dados de uso pseudoanonimizados. Esses dados são tratados de acordo com nossa política de privacidade Google Cloud Aviso de privacidade. Você pode mudar sua preferência a qualquer momento executando o seguinte comando:

codmod config set disable_usage_reporting true

Você pode receber suporte e enviar feedback das seguintes maneiras:

  • Para receber suporte para codmod, clique no botão Suporte no relatório HTML gerado ou envie um e-mail para codmod-feedback-external@google.com.
  • Para compartilhar feedback sobre codmod, clique no botão Feedback no relatório HTML gerado.