通过终端工具进行源码扫描
命令功能
分析用户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/”为工具存放目录,请根据实际情况替换。
参数说明
命令 |
参数选项 |
说明 |
---|---|---|
-S/--source |
SOURCE_DIR |
待扫描的源码文件所在路径。 必配参数。 路径使用全路径。 例如:/path/to/sourcecode
说明:
|
-C/--compiler |
compiler |
指定编译器版本。 可选参数。 例如:bisheng compiler2.5.0.1 目标系统默认的编译器版本:
当前版本支持的GCC编译器版本:
说明:
若指定编译器版本为BiSheng Compiler 2.5.0时,示例如下 -C 'bisheng compiler2.5.0' |
--fc-ver |
fortran_compiler_version |
指定fortran编译器版本。 可选参数。 例如:gfortran7 当前版本支持的fortran编译器版本:
|
--c |
|
扫描c/c++/asm 语言 可选参数 |
--go |
|
扫描 go语言。 可选参数。 |
--interpreted |
|
扫描解释型语言。 可选参数。 目前支持的解释型语言包括Python、Java和Scala。 |
-T/--tools |
tools |
指定构建工具及命令行。 默认是make。 可选参数。 支持:
|
--cmd |
CMD |
提供完整的软件构建命令,构建命令中必须要有make字段。 必配参数。 例如:‘make all’
|
-m/--macro |
MACRO |
自定义x86宏。 可选参数。 使用英文“;”分割多个自定义宏。 |
--tos |
tos |
软件需要迁移的Target Linux OS的名称和版本。 必配参数。 例如:CentOS 7.6 当前版本支持的目标操作系统:
|
使用实例
此处以分析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库不一样,所以分析报告会有差异。
输出说明
参数 |
说明 |
|
---|---|---|
Scanned time |
扫描时间。 |
|
Configuration |
Source Code File Path |
扫描的源码文件存放路径。 |
Target OS |
目标操作系统。 |
|
Target OS Kernel Version |
内核版本。 |
|
Compiler Version |
编译器版本。 |
|
Build Tool |
构建工具。 |
|
Software make command |
编译命令。 |
|
Interpreted(Python,Java,Scala) |
分析对象是否包括解释型语言文件。
|
|
Go |
分析对象是否包括Go语言文件。
|
|
Custom x86 Macros |
自定义x86宏 |
|
Summary |
Compatible: x, To be Verified: x, Total Dependencies: x |
显示兼容鲲鹏平台的文件数,待验证文件数,依赖库文件总数。 |
Source Need Migrated |
源码是否需要迁移。
|
|
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 |
显示依赖库文件扫描的详细信息:
|
|
Source files scan details are as follows: |
显示源文件分析报告的详细信息: filename:扫描文件全路径。 filetype:扫描文件的类型。 line number:函数在文件中的行号。 rows:函数在文件中的总行数。 category:关键字所属类型。 keyword:关键字名称。 suggestion:迁移建议或者提示建议。 description:关键字用法描述。 |