代码扫描
- 支持在 Zadig 中使用 SonarQube 工具和自定义工具对代码进行扫描
- 支持前置脚本配置
- 支持质量门禁检查企业版
新建代码扫描
访问项目 -> 代码扫描,点击新建代码扫描
后填写配置。
基本信息
名称
:代码扫描名称,同一项目下不允许重复扫描工具
:可指定SonarQube
或其他扫描环境
:执行扫码任务时的具体运行环境- 若使用
SonarQube
工具进行代码扫描,系统已内置了支持该工具的环境sonar
,选择sonar
即可 - 若使用其他工具进行代码扫描,可参考自定义镜像按需添加
- 若使用
Sonar 地址
:使用SonarQube
工具做代码扫描时需配置该项- 需要事先在系统中集成 Sonar,参考文档:Sonar 集成
- 当代码扫描执行完成后,Zadig 会将结果上传到此处指定的系统中
代码信息
需事先在 Zadig 中集成代码源,参考文档:代码源集成。 选择要被扫描的代码库,一个代码扫描配置中可配置一个代码库。
参数说明:
代码源
:代码库所在的平台,目前支持 GitHub、GitLab、Gerrit、Gitee代码库拥有者
:支持开源库,以及所配置的代码源下的代码库拥有者代码库名称
:代码库的名称。对于 Gerrit 代码源,支持模糊匹配,如上图例中所示默认分支
:执行代码扫描任务时,默认选取的分支Remote name
:指定远程代码仓库的名称,默认origin
克隆目录名
:定义代码库被克隆后的目录名称,默认为代码库的名称子模块
:同步submodule
中配置的代码库
前置脚本
支持前置脚本的运行,在使用SonarQube 工具进行扫描前,可以按需运行脚本,如 Java 编译
参数配置
使用 SonarQube
工具进行代码扫描时配置的相关参数,其中 sonar.host.url
和 sonar.login
无需配置,在执行代码扫描时系统会自动注入。更多参数配置可参考 SonarQube 文档 (opens new window)。
若扫描环境为
sonar
,则参数配置中可使用$BRANCH
变量获取当前被扫描代码库的分支信息。
高级配置
说明:
策略配置
:配置代码扫描的超时时间,若超过设置的时间阈值后扫描仍未结束,则视为超时失败资源配置
:选择代码扫描任务运行时所使用的集群资源,其中本地集群指 Zadig 系统所在的集群,可参考集群管理集成更多集群资源操作系统规格
:配置资源规格用于执行代码扫描任务。平台默认提供 高/中/低/最低 四种配置供选择,可以根据实际需要自定义触发器与通知
:配置 Webhook 事件,自动触发代码扫描任务执行,配置细节参考:触发器与通知
质量门禁检查 企业版
开启质量门禁检查后,Zadig 将从 Sonar 中获取门禁规则,如果门禁未通过,任务状态将置为失败。同时返回具体规则和规则判定结果
如需设置规则,可前往 Sonar 系统,修改或新增 Quality Gate
触发器与通知
目前 GitHub/GitLab 代码源支持自动触发代码扫描功能
参数说明:
代码库
:即代码信息配置中的代码库目标分支
:监听代码变更事件的分支触发事件
: 指定触发代码扫描运行的 Webhook 事件,可选事件如下:Push commits
事件(Merge 操作)时触发Pull requests
提交 pull request 时触发Push tags
新建 tag 后触发
自动取消
:若勾选,则当多个 Webhook 事件先后触发代码扫描任务时,系统会自动取消队列中的任务文件目录
: 当指定文件或目录发生变化(新增/修改/删除)时,触发代码扫描,使用以下代码仓库文件结构示例说明:
├── reponame # 仓库名称
├── Dockerfile
├── Makefile
├── README.md
├── src
├── service1/
├── service2/
└── service3/
触发场景 | 文件目录配置 |
---|---|
所有文件更新 | / |
除 *.md 以外的其他文件更新 | / !.md |
除 service1 目录下的其他文件更新 | / !src/service1/ |
service1 目录下所有文件更新 | src/service1/ |
src 目录下(除 service1 目录下的文件)的文件更新 | src !src/service1/ |
执行代码扫描
选择具体的代码扫描 -> 点击执行
,可对指定分支或 Tag 中的代码进行扫描。
当代码扫描任务运行完毕,可点击链接快速跳转至 SonarQube 系统中查看结果。
使用
SonarQube
工具做代码扫描时支持该功能。