SonarQube
SonarQube(前身为Sonar)是一个开源的代码质量管理平台。它提供了一个集中的平台,用于对源代码进行静态代码分析、测量代码质量、跟踪技术债务、管理代码复杂性以及监控代码规范和安全性等方面的指标。SonarQube支持多种编程语言,包括Java、C/C++、C#、Python、JavaScript等,并提供了丰富的插件生态系统,以扩展和定制功能。SonarQube还提供了直观的仪表板和报告,用于可视化和监控代码质量的变化趋势。
Docker形式安装SonarQube
编写docker-compose.yml
version: '3.1'
services:
db:
image: postgres
container_name: db
ports:
- 5432:5432
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:9.9-community
container_name: sonarqube
depends_on:
- db
ports:
- 9000:9000
networks:
- sonarnet
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
networks:
sonarnet:
driver: bridge
启动命令:docker-compose up -d
Windows启动失败查看SonarQube容器日志
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
启动失败解决办法:https://blog.csdn.net/qq_38680405/article/details/126700722
浏览器打开端口为9000
Maven与SonarQube集成
修改Maven配置文件:settings.xml
在profiles标签中新增SonarQube配置信息并激活配置
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.login>admin</sonar.login>
<sonar.password>123456</sonar.password>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>sonar</activeProfile>
</activeProfiles>
在项目根目录运行:mvn sonar:sonar
在SonarQube提供的可视化界面查看检查结果
SonarScanner
SonarScanner是SonarQube的命令行工具,用于将源代码发送到SonarQube服务器进行分析。它是一个独立的客户端工具,可以与SonarQube进行集成,以便在分析阶段捕获和处理代码。SonarScanner通过读取配置文件(如sonar-project.properties
)或通过命令行参数传递配置信息,确定需要分析的项目和相关设置。它会扫描项目的源代码,执行静态代码分析,并将结果提交到SonarQube服务器进行处理和展示。
SonarScanner支持多种构建工具和编程语言,包括Maven、Gradle、Ant、MSBuild等。它可以轻松地集成到持续集成(CI)和持续交付(CD)流程中,使开发团队能够在每次代码提交或构建时自动进行代码质量分析。
下载地址:https://docs.sonarqube.org/latest/analyzing-source-code/scanners/sonarscanner/
下载自己对应的操作系统文件
命令行方式检查代码
打开SonarScanner配置文件:sonar-scanner.properties
更改后的文件内容为
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server
# 对应sonarQube的url地址
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
执行检查
# 切换到SonarScanner目录
cd E:\environment\sonar-scanner-4.8.0.2856-windows\bin
# 执行
./sonar-scanner.bat -D sonar.java.binaries=./**/target -D sonar.source=./ -D sonar.login=sqa_684223ae6877050107f0b3e3368e72fc06759874 -D sonar.projectKey=bms-project -D sonar.projectBaseDir=E:\overload-working\bms-dianshang-project -D sonar.exclusions=RuoYi-Vue3/**
# 注释
# sonar.java.binaries 编译后的class文件位置
# sonar.source 源码位置
# sonar.login token
# sonar.projectKey 项目的Key
# sonar.projectBaseDir 项目的基本路径
# sonar.exclusions 需要排除的文件夹或者文件