---
title: 创建源码迁移任务
description: "源码迁移通过对源码的深度分析，精准识别需要修改的点，提供跨架构源码迁移、SQL源码迁移和配置迁移三种核心模式，最终可输出行级精度的源码迁移指导方案。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/sourcecodeporting/DevKit_Porting_0011.html
sourcePath: /source/zh/kunpengdevps/portingadvisor/sourcecodeporting/DevKit_Porting_0011.html
indexId: 3c22cc272c3043ac7acac426bf5eb135477d30277ee5cd2d75c3a682d9281b9281
---
# 创建源码迁移任务

源码迁移通过对源码的深度分析，精准识别需要修改的点，提供跨架构源码迁移、SQL源码迁移和配置迁移三种核心模式，最终可输出行级精度的源码迁移指导方案。

- 支持从x86架构向鲲鹏架构的源码迁移，包括从旧版本鲲鹏平台向新版本鲲鹏平台的迁移能力，覆盖跨架构及鲲鹏平台内部不同代次的迁移能力。

- 以项目工程为单位进行源码扫描，可以提升扫描结果准确性。
- 导入过滤列表的文件将会在任务执行过程中被忽略，不体现在相应报告中，过滤列表包括SO依赖库、JAR包或其他依赖二进制文件等。若需要进行依赖过滤操作，请参见  依赖过滤列表导入
。


#### 前提条件

- 已成功登录鲲鹏DevKit。
- 若架构源码迁移报告需要显示源码迁移人力，请单击页面右上角，在“扫描参数设置”中将“显示工作量评估结果”设置为“是”。
- 如果用户所处的环境Glibc版本低于2.28，则无法使用最新的汇编文件自动翻译功能，如有需要，请单击页面上的“查看安装指导”，按照指示进行操作。


#### 注意事项

- 任务运行过程中会执行上传源码包中构建文件的构建命令，请确保上传的内容为需要进行分析检查的内容且不存在安全问题，避免影响服务器正常运行。
- 如有正在进行的架构源码迁移任务，则需等待任务完成后方可选择“架构源码迁移”。


#### 操作步骤

1. 在页面左侧，选择“源码迁移”单击进入创建迁移任务区。
2. 在创建迁移任务区对以下参数进行配置。
  图1 源码迁移（VS Code）

  图2 源码迁移（WebUI）

**表1 源码迁移参数说明**

| 参数 | 说明 |
| --- | --- |
| 基本配置 | 基本配置 |
| 任务名称 | 源码迁移任务名称，工具默认会自动生成任务名称，也可根据实际情况进行自定义修改。 只能由中文、字母、数字、“.”、“\-”和“\_”组成。 长度为1字符 ~ 64字符。 说明： 若通过Code Server登录DevKit，任务名称不支持中文。 |
| 源码类型 | 选择需要扫描的源码类型。可选择： C/C++/ASM Fortran Go Python Java Scala C\# |
| 源码迁移服务 | 选择需要扫描的源码迁移服务。可选择： 架构源码迁移：检查分析C/C++/ASM/Fortran/Go/解释型语言等源码文件，定位出需迁移代码并给出迁移指导，支持迁移编辑及一键代码替换功能。 SQL迁移：提取源码、注解、MyBatis Mapper XML及SQL文件中的SQL语句及关联语句，并进行SQL兼容性评估、转换与patch文件生成。仅支持鲲鹏平台。 配置迁移：扫描配置文件中路径、驱动等相关配置项，并根据指导建议进行相应修改。仅支持鲲鹏平台。 说明： 当“源码类型”勾选“Java或C\#”时，可选择SQL迁移和配置迁移，且仅支持鲲鹏平台。C\#不支持架构源码迁移。 支持Java源码包和.NET源码包扫描。 对于Dockerfile和Docker Compose文件，会识别文件中不支持Arm架构的语句，提供指导建议。对于文件的匹配规则请参见Dockerfile和Docker Compose白名单及替换名单使用说明。 支持识别源码中驱动、依赖、Druid、JPA配置，并提供Quick Fix修改建议。 支持通过“/opt/DevKit/devkitplugins/porting/config/sysmig/sql\_analysis/sqlSeparatorConfig.json”文件中“CustomSeparator”字段自定义SQL语句分隔符。其中“/opt”为工具安装目录，请根据实际情况替换。 SQL文件的大小会影响扫描建议展示加载和报告生成时间，例如1万行的SQL文件，加载时间大约需要10秒。 |
| 源码文件存放路径 | 本地项目工程或源码文件存放路径。 VS Code支持以下两种方式： 手动填写源码文件的绝对路径。 单击右侧“选择文件夹”，选择源码文件存储文件夹。 说明： 若源码为压缩包格式，请先解压然后选择解压后文件夹。 WebUI支持以下两种方式： 手动填写源码文件存放路径的相对路径。 若手动上传文件至工具指定路径（路径不存在则需手动创建），需为安装DevKit时使用的用户开通读写和执行权限，再单击此输入框选择下拉框中对应的源码或文件夹。 单击右侧“上传”，选择上传压缩包或文件夹。 若上传源码文件压缩包，工具会自动解压至与压缩包同名的文件夹。例如上传test.zip压缩包会自动解压至test文件夹。 支持上传tar、tar.bz、tar.bz2、tar.gz、tar.xz、tbz、tbz2、tgz、txz、zip格式的压缩包，只允许同时上传一个压缩包。源码文件压缩包大小不超过限制（默认1024MB），解压后小于或等于剩余磁盘空间的一半。 仅支持单目录的压缩包，若解压后第一层包含多个文件夹，可将多个目录放至同一目录下，选择文件夹上传方式。 若上传本地解压的源码文件夹，只允许同时上传一个文件夹，且文件夹小于或等于剩余磁盘空间的一半。 须知： 若上传文件数量过多，建议使用压缩包方式，以避免因电脑性能或浏览器限制导致页面无响应或浏览器崩溃。 |
| 目标操作系统 | 选择目标系统版本，“源码迁移服务”为“架构源码迁移”时显示该参数。可选择： BC\-Linux 7.6/7.7 CentOS 7.4/7.5/7.6/7.7/8.0/8.1/8.2 CTyunOS 22.06 Deepin V15.2 Debian 10 EulerOS 2.8 iSoft 5.1 Kylin V10/V10 SP1/V10 SP2/V10 SP3/V10 SP3\-2403 KylinSecOS 3.4/3.5.2 LinxOS 6.0.90/6.0.100 LinxOS\-EL 6.0.99 NeoKylin V7U5/V7U6 openEuler 20.03 openEuler 20.03 SP1/SP2/SP3 openEuler 22.03 openEuler 22.03 SP1/SP2/SP3/SP4 openEuler 24.03 LTS/SP1 SUSE SLES 15.1 Ubuntu 18.04.x/20.04.x UOS 20 SP1 uosEuler 20 uos20\-1020e uos20\-1050e uos20\-1060e 更多 说明： 单击“更多”后，根据页面上的步骤升级依赖字典，然后查看更新后的操作系统列表。 |
| 目标系统内核版本 | 目标操作系统对应的内核版本，“源码迁移服务”为“架构源码迁移”时显示该参数。 BC\-Linux 7.6支持4.19.25 BC\-Linux 7.7支持4.19.25 CentOS 7.4支持4.11.0 CentOS 7.5支持4.14.0 CentOS 7.6支持4.14.0 CentOS 7.7支持4.18.0 CentOS 8.0支持4.18.0 CentOS 8.1支持4.18.0 CentOS 8.2支持4.18.0 CTyunOS 22.06支持4.19.90 Deepin V15.2支持4.19.34 Debian 10支持4.14.0 EulerOS 2.8支持4.19.36 iSoft 5.1支持4.19.90 Kylin V10支持4.19.90 Kylin V10 SP1支持4.19.90 Kylin V10 SP2支持4.19.90 Kylin V10 SP3支持4.19.90 Kylin V10 SP3\-2403支持4.19.90 KylinSecOS 3.4支持4.19.90 KylinSecOS 3.5.2支持5.10.0 LinxOS 6.0.90支持4.19.0 LinxOS\-EL 6.0.99支持4.19.90 LinxOS 6.0.100支持4.19.90 NeoKylin V7U5支持4.14.0 NeoKylin V7U6支持4.14.0 openEuler 20.03支持4.19.90 openEuler 20.03 SP1支持4.19.90 openEuler 20.03 SP2支持4.19.90 openEuler 20.03 SP3支持4.19.90 openEuler 22.03支持5.10.0 openEuler 22.03 SP1支持5.10.0 openEuler 22.03 SP2支持5.10.0 openEuler 22.03 SP3支持5.10.0 openEuler 22.03 SP4支持5.10.0 openEuler 24.03 LTS支持6.6.0 openEuler 24.03 SP1支持6.6.0 SUSE SLES 15.1支持4.12.14 Ubuntu 18.04.x支持4.15.0 Ubuntu 20.04.x支持5.4.0 UOS 20 SP1支持4.19.0 uosEuler 20支持4.19.90 uos20\-1020e支持4.19.90 uos20\-1050e支持4.19.90 uos20\-1060e支持4.19.90 |
| 编译器版本 | 选择编译器版本，“源码迁移服务”为“架构源码迁移”时显示该参数。 目标系统默认的编译器版本： BC\-Linux 7.6默认为GCC 4.8.5 BC\-Linux 7.7默认为GCC 4.8.5 CentOS 7.4默认为GCC 4.8.5 CentOS 7.5默认为GCC 4.8.5 CentOS 7.6默认为GCC 4.8.5 CentOS 7.7默认为GCC 4.8.5 CentOS 8.0默认为GCC 8.2.0 CentOS 8.1默认为GCC 8.3.0 CentOS 8.2默认为GCC 8.3.0 CTyunOS 22.06默认为GCC 7.3.0 Deepin 15.2默认为GCC 6.3.0 Debian 10默认为GCC 8.3.0 EulerOS 2.8默认为GCC 7.3.0 iSoft 5.1默认为GCC 7.3.0 Kylin V10默认为GCC 7.3.0 Kylin V10 SP1默认为GCC 7.3.0 Kylin V10 SP2默认为GCC 7.3.0 Kylin V10 SP3默认为GCC 7.3.0 Kylin V10 SP3\-2403默认为GCC 7.3.0 KylinSecOS 3.4默认为GCC 7.3.0 KylinSecOS 3.5.2默认为GCC 10.3.0 LinxOS 6.0.90默认为GCC 6.3.0 LinxOS\-EL 6.0.99默认为GCC 7.3.0 LinxOS 6.0.100默认为GCC 8.3.0 NeoKylin V7U5默认为GCC 4.8.5 NeoKylin V7U6默认为GCC 4.8.5 openEuler 20.03默认为BiSheng Compiler 2.5.0.1 openEuler 20.03 SP1默认为GCC 7.3.0 openEuler 20.03 SP2默认为GCC 7.3.0 openEuler 20.03 SP3默认为GCC 7.3.0 openEuler 22.03默认为BiSheng Compiler 2.5.0.1 openEuler 22.03 SP1默认为GCC 10.3.0 openEuler 22.03 SP2默认为GCC 10.3.0 openEuler 22.03 SP3默认为GCC 10.3.0 openEuler 22.03 SP4默认为GCC 10.3.0 openEuler 24.03 LTS默认为GCC 12.3.0 openEuler 24.03 SP1默认为GCC 12.3.0 SUSE SLES 15.1默认为GCC 7.4.0 Ubuntu 18.04.x默认为GCC 7.3.0 Ubuntu 20.04.x默认为GCC 9.3.0 UOS 20 SP1默认为GCC 8.3.0 uosEuler 20默认为GCC 7.3.0 uos20\-1020e默认为GCC 7.3.0 uos20\-1050e默认为GCC 7.3.0 uos20\-1060e默认为GCC 7.3.0 C/C++/ASM和Go可选择： BiSheng Compiler 2.1.0/2.3.0/2.4.0/2.5.0/2.5.0.1/3.0.0/3.1.0/3.2.0/4.0.0/4.1.0/4.2.0/5.0.0 GCC 4.8.5/4.9.3/5.1.0/5.2.0/5.3.0/5.4.0/5.5.0/6.1.0/6.2.0/6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0/10.1.0/10.2.0/10.3.0/10.3.1/12.3.0 GCC for openEuler 2.3.7/2.3.8/3.0.1/3.0.2/3.0.3 说明： C/C++/ASM与GO语言共用编译器版本。 C/C++/ASM和Fortran源码类型都选择的情况下，BiSheng Compiler版本与FLANG版本之间相互绑定。 Fortran可选择： GFORTRAN 7/8/9/12 FLANG 2.1.0/2.3.0/2.4.0/2.5.0/2.5.0.1/3.0.0/3.1.0/3.2.0/4.0.0/4.1.0/4.2.0/5.0.0 |
| 构建工具 | 选择构建工具，“源码迁移服务”为“架构源码迁移”时显示该参数。可选择： make cmake automake go bazel blade other 说明： “go”选项仅在“源码类型”勾选了“Go”且未同时勾选“Fortran”时可用。 “bazel”和“blade”选项仅在“源码类型”为“C/C++/ASM”，或与“Java/Python/Scala”组合时可用。 bazel构建工具仅支持BUILD、BUILD.bazel构建文件中编译选项识别和BUILD、BUILD.bazel、MODULE.bazel构建文件中CPU选项识别。 blade构建工具仅支持\*.conf、BLADE\_ROOT、BLADE\_ROOT.local、BUILD构建文件中编译选项的识别。 “源码类型”同时选择“C/C++/ASM”和“Go”时： 若构建工具选择“make”，则C/C++扫描源码和Makefile（构建扫描），Go扫描源码。 若构建工具选择“go”，则C/C++扫描源码和Makefile（全量扫描），Go扫描源码。 “other”表示不支持的构建工具，若选择将会进行全量扫描，可能存在误报风险，请谨慎选择。 |
| 编译命令 | 源码编译命令，bazel和blade构建工具不支持配置“编译命令”。 编译命令需根据构建工具配置文件确定，具体请参考通过构建工具配置文件识别编译命令。 |
| 高级配置 | 高级配置 |
| 自定义x86宏 | 自定义x86平台宏。 输入自定义宏时，多个宏之间请用“;”进行分隔。 |
| 迁移源数据库 | 指定迁移源数据库，可提升源码SQL迁移的准确性。 说明： 当MySQL迁移至Vastbase时，若当前环境未部署Vastbase\-transform.jar，需配置相关下载信息，否则将不会对SQL进行兼容性评估与转换。 若未选择迁移源和目标数据库，将不会解析源码文件中的SQL语句。 |
| 连接迁移源数据库 | 通过JDBC连接源数据库，导出源数据库DDL，以提升SQL语句解析的准确性。默认“暂不指定”，可手动添加数据库连接配置。 单击“添加配置”，添加数据库连接配置，参数说明详见数据库连接配置。 添加完成单击“确定”。 单击“连接迁移源数据库”下拉框，选择添加的配置。 说明： 选择“迁移源数据库”后显示该参数。 |
| 源数据库密码 | 请输入源数据库密码。 说明： 选择“连接迁移源数据库”后显示该参数。 |
| 迁移目标数据库 | 指定迁移目标数据库，可提升源码SQL迁移的准确性。 |
| 工具包来源 | 选择工具包来源。 外网地址下载：将自动从鲲鹏镜像仓下载Vastbase\-transform.jar至DevKit工具安装节点。 工具包上传：请复制下方提示信息中下载工具包链接，自行获取Vastbase\-transform.jar。 说明： 选择“外网地址下载”时请确保节点已安装并配置wget。 |
| 工具包上传 | 单击“上传”，上传已下载Vastbase\-transform.jar。 说明： “工具包来源”选择“工具包上传”时显示该参数。 |
| 连接迁移目标数据库 | 通过JDBC连接目标数据库，对SQL语句进行动态兼容性评估，以提升兼容性评估的准确性。默认“暂不指定”，可手动添加数据库连接配置。 单击“添加配置”，添加数据库连接配置，参数说明详见数据库连接配置。 添加完成单击“确定”。 单击“连接迁移目标数据库”下拉框，选择添加的配置。 说明： 选择“迁移目标数据库”后显示该参数。 |
| 目标数据库密码 | 请输入目标数据库密码。 说明： 选择“连接迁移目标数据库”后显示该参数。 |
| 配置DDL | 需要扫描SQL的源码包建议配置DDL（数据定义语言），DDL记录了数据库表、字段的完整信息，通过DDL语句可以提升SQL语句解析的准确性。DDL文件获取请参见导出数据库定义语言文件方法。 说明： 若上传DDL文件的同时指定了“连接迁移源数据库”，将以上传的DDL文件为准。 |
| 迁移目标中间件类型 | 不涉及 宝兰德迁移策略：上传的源码包包含内置Tomcat相关配置文件，且需要迁移至内置宝兰德。 东方通迁移策略：上传的源码包包含内置Tomcat相关配置文件，且需要迁移至内置东方通。 |


3. 单击“开始迁移”，生成迁移报告。
  弹窗页面显示源码迁移进度，迁移完成后，会自动跳转至迁移报告界面。

  用户可在任务进行过程中单击“取消迁移”，然后单击“确定”取消迁移任务。 支持多个用户同时创建分析任务，当用户超过9个会出现排队等待现象，不影响使用。 任务分析失败或评估结果为无需迁移时会产生空白报告。 解压后的源码文件路径中包含如下关键字，或关键字前带“_”，或关键字后带“_”，或关键字后为文件后缀时，工具默认该文件无需迁移，不进行扫描。可在porting.log中查看未进行扫描的文件。 关键字：PPC，PPC64，s390，s390x，powerpc，alpha，MIPS，itanium，WIN64，WIN32，BOOST_COMP_MSVC，arm，aarch64，sparc，sparc64 分析结果可能因环境不同而产生差异，属于正常情况。 若提示任务超时，请参见用户进行任务时提示任务超时的解决方法进行处理。
