创建应用现代化改造评估

Migration Center App Modernization Assessment (codmod) 是一款 AI 赋能的工具,可自动执行应用现代化改造评估流程。本页面概述了安装、使用 codmod 工具以及排查相关问题的步骤。

应用现代化改造评估简介

典型的现代化评估流程需要几周时间,并且需要大量专业知识。通过自动执行此流程,codmod 工具可将此时间大幅缩短至几个小时。

此工具旨在提供有关当前应用架构、功能和可能阻碍向云端迁移的潜在阻碍因素的实证信息。

此工具适用于以下角色:

  • IT 架构师
  • 决策者
  • 应用所有者

codmod 工具旨在通过清晰展示所需更改以及将应用转换为 Google Cloud所带来的好处,来加快应用转换速度。codmod 是一款便携式 CLI 工具,可使用 Gemini 分析源代码并根据 Google Cloud 最佳实践提供建议。

准备工作

codmod 工具需要满足以下前提条件:

  • LinuxWindows(10 或更高版本)工作站。
  • 对已启用 Vertex AI API 的 Google Cloud 项目的访问权限。
  • 工作站上安装的 gcloud CLI。如需了解详情,请参阅安装 gcloud CLI

价格

使用 Gemini 进行代码评估的费用主要取决于代码库的大小,以令牌数衡量。下表显示了您可能会看到的费用估算值,这些估算值取决于您的代码行数和所选模型:

代码库 代码行数 (LOC) 估算费用
自适应 2.0-flash 2.5-pro(默认) 2.5-flash
Spring Petclinic 约 6,500 $20 2 美元 $30 $4
James Project ~1,000,000 $60 $30 $500 $40
Elasticsearch ~5,000,000 $200 $200 $3,000 $200

这些值可能过高,因为它们未考虑以下因素可能带来的节省:

  • 缩短了短查询的定价。
  • 降低了隐式缓存的价格。
  • 承诺使用折扣 (CUD)。

这些参数的费用预计在总费用中所占的比例微不足道,尤其是在代码库较大时。如需了解详情,请参阅 Gemini API 价格

其他信息

该工具使用 Vertex AI API 的高级代码理解和分析功能。如需详细了解可用模型及其功能,请参阅 Vertex AI API 文档中的 Google 模型

为保持最佳性能和成本效益,codmod 的代码库大小限制约为 600 万行代码。对于超出此限制的代码库,我们建议将其划分为更小的可管理部分以进行分析。分析较小的部分也有助于进行更集中的评估,并可能缩短总体处理时间。

设置 codmod

本部分提供了有关如何使用 codmod 工具的安装和身份验证说明。

安装 codmod

Windows

Windows PowerShell 中运行以下命令,下载最新版本的 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

运行以下命令可下载最新版本的 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

向 Google Cloud进行身份验证

如需使用 codmod 工具,您需要拥有 Google Cloud 项目。

  1. 确保已在控制台中或使用 CLI 在项目上启用了 Vertex AI API:

    gcloud services enable aiplatform.googleapis.com --project <project-id>
    
  2. 确保您在项目中拥有 roles/aiplatform.user 角色或类似角色。

  3. 如需进行身份验证,请运行以下命令:

    gcloud auth application-default login
    

或者,您也可以使用服务账号并设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量。如需了解详情,请参阅应用默认凭据的工作原理

管理 codmod 配置

以下部分介绍了如何使用 codmod config 命令配置 codmod

列出所有设置

如需查看所有当前配置属性及其值,请运行以下命令:

codmod config list

为标志设置默认值

如需为属性设置默认值,请使用 set 命令。例如,如需设置默认项目 ID,请运行:

codmod config set project "PROJECT_ID"

PROJECT_ID 替换为 Google Cloud 项目 ID。

如需设置默认区域,请运行以下命令:

codmod config set region "REGION"

REGION 替换为 Google Cloud 区域。请参阅可用地区列表。 如果您不确定要使用哪个区域,请使用 us-central1

获取特定值

如需查看单个属性的值,请使用 get 命令。例如,如需获取配置的项目 ID,请运行以下命令:

codmod config get project

取消设置默认值

如需移除已配置的默认设置并恢复为工具的原始默认设置,请使用 unset 命令。例如,如需移除默认项目 ID,请运行以下命令:

codmod config unset project

创建 codmod 评估报告

以下部分介绍了如何创建默认评估,以及如何根据您的需求对其进行自定义。

创建默认报告

如需创建评估报告,请运行 codmod 工具并添加以下标志:

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

替换以下内容:

  • CODEBASE:指定包含要分析的源代码的目录,可以多次指定。
  • OUTPUT:指定生成报告的保存路径。报告采用 HTML 格式。

您可以分别使用 -p "PROJECT_ID"-r "REGION" 标志替换默认项目和区域。

您还可以指定以下可选标志:

  • --modelset [2.0-flash|2.5-flash|2.5-pro|adaptive]:指定要使用哪些 Gemini 模型。默认值为 2.5-pro。与 2.5-pro 相比,自适应可显著降低成本,但可能会牺牲报告质量。
  • --context <string>:您想提供的有关项目的任何其他背景信息。该工具在生成报告时会考虑此上下文。
  • --context-file <path>:与 --context 相同,其中上下文在给定文件中提供。
  • --format <html|markdown|odt|json>:所生成报告的格式。默认值为 HTML。
  • --allow-large-codebase:默认情况下,codmod 会在分析超过 100 万行代码的代码库之前要求确认,以避免产生高昂的费用。此选项用作非互动式确认。您还可以通过运行 codmod config set allow_large_codebase true 将此功能设为默认启用。
  • --improve-fidelity:如果设置,codmod 会按顺序生成部分,而不是并行生成。这样可以提高最终报告不同部分之间的一致性,但需要更长的运行时间。
  • --force-include <strings>--force-exclude <strings>:默认情况下,codmod 会扫描包含 Java、.NET 和 Python 在内的常用文件扩展名。使用这些标志可包含或排除文件扩展名。实参必须是采用 RE2 语法的正则表达式。
  • --experiments:指定 --experiments=enable_pdf,enable_images 以支持 codmod 中的 PDF 和图片。

创建完整报告

如果您需要进行全面分析,请使用 create full 命令创建报告:

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

创建侧重于数据层的报告

如果需要更深入地关注数据层,可以创建侧重于此方面的报告:

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

针对特定转化意图创建报告

如果您想让报告侧重于特定的现代化意图,可以使用以下受支持的意图之一:

  • Microsoft 工作负载转型 (MICROSOFT_MODERNIZATION):与在 Microsoft 操作系统上运行的应用搭配使用,评估将侧重于转型历程,即基于 .NET 对框架进行现代化改造,以使用最新版本并减少对 Microsoft 许可的依赖。
  • 云到云工作负载转换 (CLOUD_TO_CLOUD):与其他超大规模云平台基础设施上运行的应用搭配使用。评估将重点关注转换应用所需的建议更改,例如将其他云供应商服务映射到Google Cloud 服务。
  • 旧版 Java 转换 (JAVA_LEGACY_TO_MODERN):与运行 Java 8 或类似版本的应用搭配使用时,评估将侧重于查找升级依赖项以及代码中受更改为 Java 21(当前 LTS)影响的区域。
  • 旧版 Java WILDFLY 转换 (WILDFLY_LEGACY_TO_MODERN):与在最新版本之前的 WildFly 应用服务器版本上运行的 Java EE/Jakarta EE 代码库搭配使用。评估将侧重于确定升级依赖项以及受 WildFly 应用服务器版本升级影响的代码区域,包括因 API 差异和兼容性而需要的更改。

如需创建以意图为重点的报告,请使用 --intent 标志:

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

创建包含其他部分的报告

该工具支持包含默认情况下未包含的其他部分,以降低费用。支持以下部分:

  • files:项目文件夹的结构化分层视图以及每个文件夹内容的说明,可帮助您了解项目文件。
  • classes:一个代码类目录,其中包含每个类及其对其他类的依赖关系的相关信息。支持的语言为 Java 和 C#。

如需创建其他部分,请使用 --optional-sections 标志:

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

SECTIONS 替换为以英文逗号分隔的值列表。

创建自定义报告

如果您想探索一些特定的自定义主题,可以使用以下命令根据您提供的上下文创建自定义报告:

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

默认情况下,系统会使用 LLM 扩展所提供的上下文并对其进行调整,以确保生成连贯的版块。您可以通过指定 --improve-context=false 来停用此行为。

其他标志:

  • --from-template <path>:指定一个模板文件,该文件以文本或 PDF 文件格式定义文档结构。codmod 会检测结构,并请求批准以继续生成报告。
  • --skip-template-approval:使用 --from-template 标志时,跳过审批请求。

修改现有报告

您可以根据特定部分在报告中创建新部分或修改现有部分。例如,您可能想重点关注系统架构的某个特定方面,或某种特定类型的安全漏洞。

修改报告的命令需要以下标志:

  • --context--context-file 之一:指定修改请求。
  • --from-report:指定现有报告文件的路径。
  • --from-section:要用作新部分的基础的部分的名称(例如“概览”“架构”)。

如需显示特定报告中的所有可用部分,请运行以下命令:

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

修改报告部分

运行以下命令以修改现有部分:

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

创建新的报告部分

使用以下命令创建新部分:

codmod create section -c "CODEBASE" --from-report "REPORT" \
  -o "REGENERATED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"
  • create section 命令中的 from-section 标志是可选的。
  • 默认情况下,系统会使用 LLM 扩展所提供的上下文并对其进行调整,以确保生成连贯的版块。您可以通过指定 --improve-context=false 来停用此行为。

请注意以下几点:

  • create sectionrevise section 仅支持 html 报告格式。
  • create sectionrevise sectionlist-sections 期望 --from-report 标志指向 HTML 格式的报告。

估算评估费用

借助 codmod 工具,您可以计算创建报告的大致费用,从而了解使用该工具的费用。如需查看费用估算,请运行以下命令:

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

create sectioncreate custom 命令不支持费用估算。

设置详细程度级别

codmod 详细程度使用 --verbosity LEVEL 标志进行配置。日志的详尽程度级别为以下之一:debuginfowarnerrornone。默认值为 warn

问题排查

  • 权限被拒绝:如果您遇到“权限被拒绝”错误,请确保您已通过运行 chmod +x codmod 命令向 codmod 二进制文件授予执行权限。
  • CLI 似乎挂起:分析可能需要很长时间,但您通常可以在 CLI 的进度条中看到进度。如果进度条在 15 分钟后仍为 0%,请验证您是否拥有相关模型的足够配额。默认情况下,codmod 使用 gemini-2.5-pro 模型。不过,由于不同的模型集使用不同的模型来实现不同的目的,因此此情况可能会发生变化。
  • 报告错误:如果出现需要调查的错误,请收集调试信息以协助我们的开发团队。日志可提供用于问题排查的关键详细信息。运行以下命令来收集日志,然后将生成的归档文件压缩并发送给 codmod-feedback-external@google.com 团队。

    codmod collect-logs -o "codmod_logs.zip"
    

开源许可

您可以运行以下命令,下载最新版 codmod 的依赖项的开源许可声明:

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

获取支持和提供反馈

为了帮助我们改进此产品的质量,我们会收集伪匿名化的使用情况数据。我们会按照我们的隐私权政策(Google Cloud 隐私权声明)处理这些数据。 您可以随时运行以下命令来更改偏好设置:

codmod config set disable_usage_reporting true

您可以通过以下方式获取支持和提供反馈:

  • 如需获得有关 codmod 的支持,请点击生成的 HTML 报告中的支持按钮,或发送电子邮件至 codmod-feedback-external@google.com
  • 如需针对 codmod 分享反馈,请点击生成的 HTML 报告中的反馈按钮。