本章介绍sonarqubes+SonarScanner CLI的应用,需要先安装对应产品,详见前一篇文章代码扫描:sonarqubes+SonarScanner CLI安装部署

一、创建工程

通过http://192.168.1.*:9900进入sonarqubes。

点击Projects>Create Project,显示如下界面.

1.1创建本地工程

输入工程名称,其他采用默认,点击Next。

1. Project display name(项目显示名称)
含义:这是项目在用户界面上显示的名称,用于人类可读的标识。
2. Project key(项目密钥)
项目密钥是您项目的唯一标识符,最多可包含400个字符。允许使用字符包括字母数字、'-'(短横线)、'_'(下划线)、'.'(句点)和':'(冒号),其中至少需包含一个非数字字符。
默认和Project display name一样
3. Main branch name(主分支名称)
含义:指定该项目的默认主分支名称。这是代码库中的主要开发分支,通常是稳定版本的来源。
默认值:main(当前已填写)

1.2设置新代码

选择第一个“Follows the instance's default”,在点击“Create Projet”。

1. Follows the instance's default
(遵循实例的默认设置)
当前默认值:Previous version(前一个版本)
含义:使用平台全局设定的“新代码”标准。
适用场景:如果你希望保持与组织统一的标准,无需额外配置。
2. Is custom
(自定义设置)
功能:允许你选择以下三种方式之一来定义“新代码”:
Previous version:以最近一次发布/构建的版本为基准,之后提交的代码视为“新代码”。
A number of days:指定多少天内的代码为“新代码”(例如:过去30天内修改的代码)。
A reference branch:以某个特定分支(如 main、develop)作为基准,该分支之外的变更被视为“新代码”。

1.3代码分析方法

点击“Locally”,进入下一步设置

选项图标说明
With Jenkins🐙使用 Jenkins 作为持续集成工具进行代码分析。
适用于使用 Jenkins 构建流水线的团队。
With GitHub Actions🐱‍💻使用 GitHub Actions 自动触发代码分析。
适合托管在 GitHub 上的项目,自动化程度高。
With Bitbucket Pipelines🟦使用 Bitbucket 的内置 CI 工具(Pipelines)进行分析。
适合使用 Atlassian 生态(如 Bitbucket + Jira)的团队。
With GitLab CI🦊使用 GitLab 的 CI/CD 功能执行分析。
适用于 GitLab 托管的仓库。
With Azure Pipelines💼使用 Microsoft Azure DevOps 的 CI 管道进行分析。
适合使用 Azure 生态的企业。
Other CI—如果你使用的是其他 CI 工具(如 CircleCI、Travis CI、TeamCity 等),可以选择此项。
它会引导你手动配置分析命令或使用通用的 Sonar Scanner 工具。
Locally—在本地机器上运行分析。
仅建议用于测试、调试或高级用例(例如学习、临时检查)。
不推荐用于生产环境或团队协作场景。

注意事项:
选择后通常会跳转到对应的配置向导,生成所需的脚本、令牌(Token)、配置文件(如 sonar-project.properties 或 .sonarcloud.properties)等。
大多数现代 CI 工具都支持与 SonarQube/SonarCloud 的无缝集成,推荐优先使用官方支持的方式。
“Locally” 虽然方便快速测试,但无法实现自动化质量门禁(Quality Gate),不适合团队协作。

1.4生成token

字段说明
Token name*为该令牌命名,便于识别。
例如:Analyze "dms_report_server"
这只是一个标签,不影响功能。
Expires in设置令牌的有效期。
可选:30 天、90 天、1 年、永不过期(Never)
⚠️ 建议不要设为“永不过期”,除非你确定长期使用且能管理好安全性。
Generate点击后生成一个唯一的随机字符串(即令牌)。
请务必复制并保存,因为之后无法再查看!

注:将这个token拷贝到记事本中,后面会用到。

2.创建sonar-project.properties

在对应工程下创建sonar-project.properties文件

2.1.java工程

java工程的配置内容,如下:

sonar.projectKey=dms_java_server
sonar.projectName=Java工程
sonar.host.url=http://192.168.1.204:9900

# 源码路径(假设是 Maven 项目)
sonar.sources=src/main/java
sonar.tests=src/test/java

# 二进制文件路径(用于覆盖率等)
sonar.java.binaries=target/classes
sonar.java.test.binaries=target/test-classes

# 文件过滤
sonar.inclusions=**/*.java
sonar.exclusions=**/target/**

2.2 vue工程

配置内容,如下:

sonar.projectKey=jtyh
sonar.projectName=前端工程
sonar.sources=src
sonar.inclusions=**/*.js,**/*.ts,**/*.vue
sonar.exclusions=**/node_modules/**,**/dist/**
sonar.javascript.vue.enabled=true
sonar.host.url=http://192.168.1.204:9900

3.开始代码扫描

进入工程路径,如E:\project\dms_java_server

3.1执行

sonar-scanner -Dsonar.scanner.skipJreProvisioning=true -Dsonar.token=sqp_eb97f6ae23818171e54b2c5f3987991a08e8384d

3.2测试结果

指标

值

等级

含义

Security

0 Open issues

✅ A

安全性良好

Reliability

442 Open issues

❌ E

可靠性极差

Maintainability

2.7k Open issues

✅ A

可维护性优秀

Coverage

0.0%

�� ⚠️

测试覆盖缺失

Duplications

28.3%

�� ⚠️

重复代码严重

Security Hotspots

8

❌ E

存在潜在安全风险点

更多推荐