Skip to content

工具检测

1 准备

  1. 使用星图云统一登录(SSO)登录过 iTest 测试云

  2. 申请鸿渐 SAST 使用授权,提供以下信息:

  • 星图云 ID:形式如 78xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx84 的 36 位数字字母短横线组合串

    使用 SSO 登录 iTest 测试云后,可从此处获取星图云 ID

    SAST
  • 部门:同一部门下,可以查看到相同的检测项目

  • 联系方式(可选)

  1. 等待管理员完成使用授权

2 创建项目

  1. 在 iTest 测试云工作台 > 工具检测 > 代码检测,新增检测项目,填写以下信息:
  • 项目名称(不允许重复,会检测唯一性)

  • 项目地址:项目仓库的 Git 地址

  • 用户名:Git 用户名

  • 密码:Git 密码或 Token(与用户名配合,有权限访问项目仓库即可)

  • 分支(可选):不填默认检测 main 分支

  • 企微消息(可选):企微群消息推送 Webhook 地址,可通过调用企微消息推送接口发送项目检测结果

SAST
  1. 点击确定,在检测项目创建成功后,通过复制 ID,获取到检测项目 ID,用于调用检测项目接口

3 接口调用

  1. 检测项目

    GET https://itest.geovisearth.com/admin-api/check/sast/hj/check

    Query 参数

    • id(string):项目 ID
    • sso(string):SSO ID
    • quick(可选,true 为进行快速检测):是否进行快速检测,注意当项目为首次检测时,会忽略此参数

    调用成功响应

    json
    {
      "code": 0,
      "msg": "",
      "data": true
    }
  2. 查询项目检测阶段信息

    GET https://itest.geovisearth.com/admin-api/check/sast/hj/checkStage

    Query 参数

    • id(string):项目 ID
    • sso(string):SSO ID

    调用成功响应

    1. 处于检测中时
    json
    {
      "code": 0,
      "msg": "",
      "data": [
        "2025-10-09 16:38:46: 准备检测环境,启动检测引擎",
        "2025-10-09 16:38:55: START(预处理阶段-准备检测)",
        "2025-10-09 16:38:55: JAVA_GENERATE_JSP(预处理阶段-JSP转换)",
        "2025-10-09 16:39:01: JAVA_AST(解析阶段-构建抽象语法树)",
        "2025-10-09 16:39:02: JAVA_CFG(基本分析阶段-控制流分析)",
        "2025-10-09 16:39:02: JAVA_CG(基本分析阶段-函数调用分析)",
        "2025-10-09 16:39:06: JAVA_VDG(值依赖分析阶段-构建值依赖图)",
        "2025-10-09 16:39:06: JAVA_XML(值依赖分析阶段-XML信息处理)",
        "2025-10-09 16:39:14: JAVA_CHECKER(检测阶段-Java检测器分析)",
        "2025-10-09 16:39:14: 完成Java语言规则结果存储,总条目为336",
        "2025-10-09 16:39:15: JAVA_MEASURE(检测阶段-Java度量分析)",
        "2025-10-09 16:39:15: 完成Java语言度量结果存储,总条目为15",
        "2025-10-09 16:39:15: START(预处理阶段-准备检测)",
        "2025-10-09 16:39:21: JAVASCRIPT_AST(解析阶段-构建抽象语法树)",
        "2025-10-09 16:39:22: JAVASCRIPT_CFG(基本分析阶段-控制流分析)",
        "2025-10-09 16:39:23: JAVASCRIPT_CG(基本分析阶段-函数调用分析)",
        "2025-10-09 16:39:28: JAVASCRIPT_VDG(值依赖分析阶段-构建值依赖图)"
      ]
    }
    1. 检测完成后
    json
    {
      "code": 0,
      "msg": "",
      "data": null
    }
  3. 企微消息推送

    GET https://itest.geovisearth.com/admin-api/check/sast/hj/notice

    Query 参数

    • id(string):项目 ID
    • sso(string):SSO ID

    调用成功响应

    json
    {
      "code": 0,
      "msg": "",
      "data": true
    }

4 接口使用演示

具体演示脚本内容,详见 win_sample_sast_check.ps1

使用方法

  1. 打开 Windows PowerShell,进入脚本所在目录 SAST

  2. 执行 .\win_sample_sast_check.ps1,输入项目 ID 并回车,输入 SSO ID 并回车 SAST

5 使用场景

根据实际业务,可以在多种场景下进行应用

5.1 Git Hooks

Git 服务器的 hooks/post-receive 中添加

bash
#!/bin/bash
while read oldrev newrev refname; do
   branch=$(git rev-parse --symbolic --abbrev-ref $refname)
   if [[ "$branch" == "main" ]]; then
        bash sast_check.sh -id "your_project_id" -sso "your_sso_id" > /dev/null 2>&1 &
    fi
done

5.2 GitLab CI/CD

在项目下的流水线脚本,如 .gitlab.ci.yml 文件中添加

yaml
stages:
  - sast

sast_check:
  stage: sast
  only:
    - main
  script:
    - bash sast_check.sh -id $CI_PROJECT_ID -sso $SAST_SSO_ID

5.3 Gitea Actions

在项目下的流水线脚本,如 .gitea/cicd.yml 文件中添加

yaml
name: SAST Check
on:
  push:
    branches:
      - main

jobs:
  sast-check:
    steps:
      - uses: actions/checkout@v4
      - name: Run SAST
        run: |
          bash sast_check.sh -id ${{ CI_PROJECT_ID }} -sso ${{ SAST_SSO_ID }}

协议与声明 | © 中科星图 版权所有 由中科星图股份有限公司与中科星图数字地球合肥有限公司联合运营