中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

通过终端工具进行源码扫描

命令功能

分析用户C/C++/ASM/Fortran/Go/解释型语言软件的可迁移性。

命令格式

/opt/DevKit/tools/devkit sourcescan -S/--source <source dir> -C/--compiler <compiler> --fc-ver <gfortran version> --c <true/false> --go <true/false> --interpreted <true/false> -T/--tools <constructtools> --cmd <cmd> -m <MACRO> --tos <target os>

“/opt/DevKit/tools/”为工具存放目录,请根据实际情况替换。

参数说明

表1 参数说明

命令

参数选项

说明

-S/--source

SOURCE_DIR

待扫描的源码文件所在路径。

必配参数。

路径使用全路径。

例如:/path/to/sourcecode

说明:
  • 解压后的源码文件路径中仅包含如下关键字,或关键字前带“_”,或关键字后带“_”,或关键字后为文件后缀时,工具默认该文件无需迁移,不进行扫描。可在porting.log中查看未进行扫描的文件。
  • 关键字:PPC,PPC64,s390,s390x,powerpc,alpha,MIPS,itanium,WIN64,WIN32,BOOST_COMP_MSVC,arm,aarch64,sparc,sparc64
  • 支持上传tar,tar.bz,tar.bz2,tar.gz,tar.xz,tbz,tbz2,tgz,txz,zip格式的压缩包,只允许同时上传一个压缩包。源码文件压缩包小于或等于1GB,解压后小于或等于剩余磁盘空间的一半。
  • 只允许同时上传一个文件夹,文件夹中的文件总量小于或等于1GB。

-C/--compiler

compiler

指定编译器版本。

可选参数。

例如:bisheng compiler2.5.0.1

目标系统默认的编译器版本:

  • 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
  • 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 SP1默认为GCC 7.3.0
  • Kylin V10 SP2默认为GCC 7.3.0
  • kylin V10 SP3默认为GCC 7.3.0
  • KylinSecOS 3.4默认为GCC 7.3.0
  • LinxOS 6.0.90默认为GCC 6.3.0
  • NeoKylin V7U5默认为GCC 4.8.5
  • NeoKylin V7U6默认为GCC 4.8.5
  • openEuler 20.03默认为BiSheng Compiler 2.5.0
  • 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
  • openEuler 22.03 SP1默认为GCC 10.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
  • UOS20-1020e默认为GCC 7.3.0
  • UOS20-1050e默认为GCC 7.3.0
  • uosEuler 20默认为GCC 7.3.0

当前版本支持的GCC编译器版本:

  • 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
  • BiSheng Compiler

    2.1.0/2.3.0/2.4.0/2.5.0/2.5.0.1

说明:

若指定编译器版本为BiSheng Compiler 2.5.0时,示例如下

-C 'bisheng compiler2.5.0'

--fc-ver

fortran_compiler_version

指定fortran编译器版本。

可选参数。

例如:gfortran7

当前版本支持的fortran编译器版本:

  • GFORTRAN 7/8/9
  • FLANG 2.1.0/2.3.0/2.4.0/2.5.0/2.5.0.1

--c

  • true
  • false

扫描c/c++/asm 语言

可选参数

--go

  • true
  • false

扫描 go语言。

可选参数。

--interpreted

  • true
  • false

扫描解释型语言。

可选参数。

目前支持的解释型语言包括Python、Java和Scala。

-T/--tools

tools

指定构建工具及命令行。

默认是make。

可选参数。

支持:

  • make
  • cmake
  • automake
  • go

--cmd

CMD

提供完整的软件构建命令,构建命令中必须要有make字段。

必配参数。

例如:‘make all’

  • “-T/--tools”设置为make时,构建命令必须设置为以make开头。make工具支持参数-C和-f,其中-C用于指定工作目录,-f用于指定makefile。
  • “-T/--tools”设置为cmake时,构建命令必须设置为以cmake开头。cmake工具支持的参数请参考cmake 3.13.4官方使用手册。
  • “-T/--tools”设置为automake时,构建命令必须设置为make。automake工具不支持任何参数。

-m/--macro

MACRO

自定义x86宏。

可选参数。

使用英文“;”分割多个自定义宏。

--tos

tos

软件需要迁移的Target Linux OS的名称和版本。

必配参数。

例如:CentOS 7.6

当前版本支持的目标操作系统:

  • BC-Linux 7.6/7.7
  • CentOS 7.4/7.5/7.6/7.7/8.0/8.1/8.2
  • Deepin V15.2
  • Debian 10
  • EulerOS 2.8
  • iSoft 5.1
  • Kylin V10 SP1
  • Kylin V10 SP2
  • kylin V10 SP3
  • KylinSecOS 3.4
  • LinxOS 6.0.90
  • NeoKylin V7U5
  • NeoKylin V7U6
  • openEuler 20.03
  • openEuler 20.03 SP1
  • openEuler 20.03 SP2
  • openEuler 20.03 SP3
  • openEuler 22.03
  • openEuler 22.03 SP1
  • SUSE SLES 15.1
  • Ubuntu 18.04.x
  • Ubuntu 20.04.x
  • UOS 20 SP1
  • UOS20-1020e
  • UOS20-1050e
  • uosEuler 20
  • 更多

使用实例

此处以分析TestData工程代码并输出csv格式、json格式、HTML格式的分析报告为例,请根据实际情况将“/home/TestData/”替换成实际需要扫描的代码路径。

./devkit sourcescan -S /home/TestData --cmd 'make all' --tos openeuler22.03 -C 'bisheng compiler2.5.0.1'

返回信息如下,在返回信息中输入普通用户密码(新建用户首次使用时需要输入密码)。

Task is running. Progress: 100%...
 Source code porting analysis succeeded.
Success to download report to  /home/report/sourcescan/20230607114650/report.csv
Success to download report to  /home/report/sourcescan/20230607114650/report.json
Success to download report to  /home/report/sourcescan/20230607114650/report.html
  • 生成的分析报告默认保存在终端工具存储路径下的“./report/yyyymmddhhmmss/”的目录中。
  • 不同的目标操作系统支持的SO库不一样,所以分析报告会有差异。

输出说明

表2 输出说明

参数

说明

Scanned time

扫描时间。

Configuration

Source Code File Path

扫描的源码文件存放路径。

Target OS

目标操作系统。

Target OS Kernel Version

内核版本。

Compiler Version

编译器版本。

Build Tool

构建工具。

Software make command

编译命令。

Interpreted(Python,Java,Scala)

分析对象是否包括解释型语言文件。

  • True:是
  • False:否

Go

分析对象是否包括Go语言文件。

  • True:是
  • False:否

Custom x86 Macros

自定义x86宏

Summary

Compatible: x, To be Verified: x, Total Dependencies: x

显示兼容鲲鹏平台的文件数,待验证文件数,依赖库文件总数。

Source Need Migrated

源码是否需要迁移。

  • Yes
  • No

Scanned xx C/C++/Fortran files, xx Makefile/CMakeLists.txt/Automake related files, total xx files need to be migrated.

显示需要迁移的C/C++/Fortran文件和Makefile/CMakeLists.txt/Automake related文件总数以及文件个数。

Total xx lines C/C++/Makefile/CMakeLists.txt/Automake code and xx lines embedding ASM code need to be migrated.

显示源码总行数以及需要迁移的内联汇编代码行数。

Scanned xx pure assembly files, xx pure assembly files to be migrated.

显示全汇编文件总数以及需要迁移的汇编文件个数和汇编代码行数。

Scanned x Go files, total x Go files xx lines need to be migrated.

显示Go文件总数一级需要迁移的Go文件个数和代码行数。

Scanned xx python files, total xx files xx lines need to be migrated.

显示Python文件总数以及需要迁移的Python文件个数和Python代码行数。

Scanned xx java files, total xx files xx lines need to be migrated.

显示Java文件总数以及需要迁移的Java文件个数和Java代码行数。

Scanned xx scala files, total xx files xx lines need to be migrated.

显示Scala文件总数以及需要迁移的Scala文件个数和Scala代码行数。

Estimated transplant workload: xx person/months.(C/C++/Fortran/Go, 500

Line/PM; ASM, 250Line/PM)

显示源码迁移预估人力(x/人月)。

预估标准:1人月迁移工作量=500行C/C++/Fortran/Go源代码,或250行汇编代码。

Architecture-related Dependencies

显示依赖库文件扫描的详细信息:

  • File Name:文件名称
  • File Type:文件类型
  • Analysis Results:分析结果
  • Handling Suggestions:处理建议
  • URL:下载地址

Source files scan details are as follows:

显示源文件分析报告的详细信息:

filename:扫描文件全路径。

filetype:扫描文件的类型。

line number:函数在文件中的行号。

rows:函数在文件中的总行数。

category:关键字所属类型。

keyword:关键字名称。

suggestion:迁移建议或者提示建议。

description:关键字用法描述。