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

源码迁移

stage('source-code-migration') { 
              steps { 
                echo '====== 源码迁移 ======' 
                sh 'if [ ! -d "./report_dir" ]; then mkdir -p ./report_dir; fi
/usr/bin/rm -rf ./report_dir/*.html'
                script{
                  def SRC_MIG_STATUS_CODE = sh(returnStatus: true,
                                              script: 'devkit porting src-mig -i ../src/wtdbg2 -c make -r html -o ./report_dir')
                  switch(SRC_MIG_STATUS_CODE) {
                      case 0:
                          currentBuild.result = 'SUCCESS'
                          echo '【源码迁移】--> 无扫描建议 <--'
                          break
                      case 1:
                          currentBuild.result = 'UNSTABLE'
                          echo '【源码迁移】--> 扫描结果仅存在建议项 <--'
                          break
                      case 5:
                          currentBuild.result = 'FAILURE'
                          echo '【源码迁移】--> 扫描结果存在必须修改项 <--'
                          break
                      case 3:
                          currentBuild.result = 'ABORTED'
                          echo '【源码迁移】--> 扫描结果超时 <--'
                          break
                      case 4:
                          currentBuild.result = 'ABORTED'
                          echo '【源码迁移】--> 扫描命令错误 <--'
                          break
                      default:
                          currentBuild.result = 'ABORTED'
                          echo '【源码迁移】--> 异常终止{Ctrl + C | Ctrl + Z} <--'
                          break
                  }
                }
                sh 'mv ./report_dir/src-mig*.html ./report_dir/SourceCodeScanningReport.html' 
              } 
              post { 
                always { 
                  publishHTML(target: [allowMissing: false, 
                              alwaysLinkToLastBuild: false, 
                              keepAll              : true, 
                              reportDir            : './report_dir', 
                              reportFiles          : 'SourceCodeScanningReport.html', 
                              reportName           : 'Source Code Scanning Report'] 
                              ) 
                } 
              } 
            }

具体参数如表1所示。

表1 源码迁移参数说明

参数

参数选项

参数说明

-i/--input-path

path

必选参数。待扫描源码的文件夹或压缩包路径,若存在多个扫描路径需使用英文逗号分割。

例如:/home/test1,/home/test2。

-c/--cmd

cmd

指定源代码的构建命令,例如:make all。如果扫描的源码只包含解释型语言,则为可选参数,否则为必选参数

-s/--source-type

c,c++,asm,fortran,go,interpreted

可选参数。待扫描源码类型。

-t/--target-os

target-os

可选参数。迁移的目标操作系统,如果用户不输入则默认为当前操作系统。

例如:bclinux7.7。

-p/--compiler

gcc,clang

可选参数。编译器版本,默认为选定目标操作系统的默认GCC版本。

例如:gcc7.8.5。

-f/--fortran-compiler

flang-ver

可选参数。fortran代码的编译器版本,默认为flang 2.5.0.1。

-b/--build-tool

make,cmake,automake,go

可选参数。构建工具,默认make,只有在--source-type中没有c/c++/asm/fortran并且包含go时可以选go。

-o/--output

/home/test/report

可选参数。扫描报告的存放地址和文件名称,默认存放在当前执行路径下,名称默认为功能名_时间戳_uuid(4位)。

--set-timeout

time

可选参数。命令行的超时时间,默认无超时时间。

-l/--log-level

0,1,2,3

可选参数。设置日志等级,日志等级分类有0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。

-r/--report-type

all,json,html,csv

可选参数。 扫描报告的格式,默认为all,即默认生成json、html、csv三种报告。

--ignore

/opt/ignore.json

可选参数。屏蔽扫描规则信息。

  • 使用源码迁移功能时,代码示例中需要添加待扫描源码的文件夹或压缩包路径、源码的构建命令、报告输出格式以及报告存放地址。

    格式:devkit porting pkg-mig -i 待扫描源码的文件夹或压缩包路径 -c 源码的构建命令 -r 输出报告形式 -o 报告存放地址

    示例:devkit porting src-mig -i ./wtdbg2 -c make -r html -o ./report_dir

  • 使用源码迁移功能时,若是扫描软件包建议放在构建流程节点后,若是源码文件建议放到构建流程节点前。
  • 源码迁移报告结果详细内容请参见查看分析结果