
在现代软件开发中,保障代码质量至关重要。为了有效地检测和维护代码质量,诸如 Sonar 等代码扫描工具成为了开发人员的利器。
本文主要介绍如何在 Zadig 平台上,利用不同的扫描工具执行 Sonar 代码扫描,从而提高软件开发的效率和质量。通过详细的操作示例和配置说明,读者将了解到在 Zadig 上如何配置和使用 Maven、Gradle 以及 SonarScanner 等工具进行代码扫描的过程,为项目的质量控制提供了有力支持。此外,本文还探讨了 Zadig 代码扫描的进阶使用方法,如代码变更触发、开启质量门禁以及代码扫描模板的应用,旨在帮助开发团队更好地利用 Zadig 平台实现代码质量管理的自动化和规范化。
01-准备工作

集成代码扫描
下面通过具体例子详细介绍不同的 Sonar 扫描工具如何在 Zadig 上配置和使用。
02-不同 Sonar 扫描工具的使用
根据 Sonar 的官方说明,不同语言的 sonar 分析过程、内容和产生的分析结果各异。部分语言比如 JAVA、C# 等需针对编译后的文件 .class 、.dll 等进行分析,所以采用的扫描工具存在差异,一般 JAVA 使用 maven 来做 sonar 扫描;而 Gradle 项目可直接使用 gradle 做代码扫描,更为便捷;其他语言可以采用 SonarScanner CLI 执行扫描过程,Zadig 对此作了深度集成,无需额外下载、设置和维护 SonarScanner CLI ,减少工具本身的维护和管理负担。此外,Zadig集中管理 Sonar Server 地址和 Token 信息,在执行代码扫描时自动注入,无需额外配置,减轻管理负担,同时提升安全性。
Maven

spring-boot-demo 代码扫描配置
配置说明:
·
扫描环境:基础运行环境
·
Sonar 地址:选择集成的 Sonar Server 地址
·
代码信息:项目源码仓库地址
·
扫描脚本:
#!/bin/bash
set -e
cd $WORKSPACE/zadig/examples/spring-boot-demo
mvn clean verify sonar:sonar -Dsonar.projectKey=$PROJECT -Dsonar.projectName=$PROJECT -Dsonar.host.url=$SONAR_URL -Dsonar.working.directory=$WORKSPACE/$REPONAME_0/.scannerwork
其中:
·
$PROJECT:当前项目标识
·
$SONAR_URL:Sonar Server 地址
Gradle
以 Gradle 项目为例,介绍在 Zadig 上如何配置和使用 Gradle 构建工具进行代码扫描,项目源码参考:
sonarqube-scanner-gradle

sonarqube-scanner-gradle 代码扫描配置
配置说明:
·
扫描环境:基础运行环境,可选择官方的 sonar 镜像,也可自定义镜像(必须包含 Java)
·
Sonar 地址:选择集成的 Sonar Server 地址
·
代码信息:项目源码仓库地址
·
扫描脚本:
#!/bin/bash
set -e
cd zadig/examples/sonarqube-scanner-gradle
./gradlew -Dsonar.host.url=$SONAR_URL -Dsonar.working.directory=$WORKSPACE/$REPONAME_0/.scannerwork sonar
其中:
·
$SONAR_URL:Sonar Server 地址
SonarScanner

multi-service-demo 代码扫描基础配置

multi-service-demo SonarScanner 配置
配置说明:
·
扫描环境:基础运行环境,可选择官方提供的 sonar 镜像;也可自定义镜像(必须包含 Java 和 sonar-scanner)
·
Sonar 地址:选择集成的 Sonar Server 地址
·
代码信息:项目源码仓库地址
·
SonarScanner 扫描:添加步骤填写 sonar 扫描参数,例如:
03-进阶使用
代码变更触发
开发人员完成代码编写后,通常希望及时获得代码质量反馈。Zadig 支持代码变更自动触发执行代码扫描,并将结果反馈到代码的 MR/PR 上,为代码审核提供客观依据。
· 配置触发器
:编辑代码扫描 > 添加代码变更触发器。

触发器配置
· 效果展示
:在 GitLab 上提交代码,创建 Merge Request,自动触发代码扫描,并在 MR 上获得扫描结果。

代码扫描任务详情

代码扫描结果反馈
开启质量门禁
通过设置质量门禁,可以在提交代码前对其进行严格的质量检查,以确保它符合预先定义的质量标准和规范。这样做有助于提高代码质量,减少技术债。SonarQube 支持为项目设置这样的质量门禁规则,在 Zadig 中开启"质量门禁检查"后,系统会应用 Sonar 上的质量门禁规则。如果扫描任务满足了规则条件,则任务通过;如果不满足条件,则任务失败。

SonarQube 质量门禁规则

开启质量门禁检查

质量门禁结果详情
代码扫描模版
对于有多个代码仓库且扫描过程相似的情况,单独管理每个代码库的扫描过程会增加维护负担。为了减轻这种负担,Zadig 提供了代码扫描模板的功能,允许多个代码库共享同一份模板。这样,当扫描过程需要更新时,只需修改模板,关联的所有代码库的扫描过程就会同步更新,大大减少了维护的工作。
· 配置模板
:模板库 > 添加并配置代码扫描模板。

代码扫描模板配置
· 使用模板
:新建代码扫描 > 选择「使用模板」并选择模板 > 填写代码信息。

使用模板新建代码扫描
推荐阅读:
200 小时深度体验分析,DevOps 选型重磅发布 /
Jenkins 迁移 Zadig,新项目实施上线效率提升 6 倍 /
Zadig vs. Jenkins 详细比对:时代的选择与开发者之选 /
基于 Istio + Zadig,零负担实现云原生全链路灰度发布 /
ZADIG 专家版倾情上线:一键高效发布,119元/人月起,社区老友享年终福利!