简介
SonarQube 服务器是一个开源的代码质量管理平台,它专门用于持续分析和测量项目源代码的质量 。通过 SonarQube,我们可以检测出项目中的重复代码、潜在的 Bug、代码规范、安全性漏洞等问题,并通过 SonarQube 的 Web 界面展示出来。 SonarQube 支持对多种编程语言的扫描,包括但不限于 Java、C#、JavaScript、C++、Python 等。它涵盖了编程语言的静态扫描规则,包括代码编写规范和安全规范 。
SonarQube官方文档 SonarQube官方下载地址
一、环境准备
确保你的系统符合以下要求:
操作系统:Windows 11 内存:至少 4GB RAM 硬盘空间:至少 1GB 可用空间 Java:JDK 17 数据库:SQL Server 或其他支持的数据库版本
确保当前sonarqube版本的要求
例如我使用的是sonarqube 10.7,他需要 JDK17以上的版本。 以下为我部署时用到的所有文件: sonarqube-10.7.0.96327 jdk-17_windows-x64 sonar-scanner-cli-6.2.1.4610-windows-x64 SQL Server 2022
二、下载并安装 Java
SonarQube 需要 Java 环境。你可以从 Oracle 官网下载 JDK 17 的安装包,并按照默认设置进行安装。 安装完成后,配置环境变量JAVA_HOME、CLASSPATH、Path。 设置 JAVA_HOME 环境变量为 JDK 的安装路径,例如:D:\\Program Files\\Java\\jdk-17 设置 CLASSPATH 环境变量为 .;%JAVA_HOME%\\lib 在 PATH 环境变量中添加 %JAVA_HOME%\\bin
三、下载并安装数据库
下载并安装SQL Server 2022(或其他支持的数据库)。 安装完成后,创建一个名为 sonar 的数据库。
四、安装SonarQube
下载 SonarQube
从 SonarQube 官网下载最新版本的安装包,并解压到指定目录。
配置SonarQube
编辑 SonarQube 的 conf\\sonar.properties 配置文件。
# 在配置文件开头增加以下配置
# 数据库连接参数
sonar.jdbc.username=sa
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:sqlserver://你的IP地址;databaseName=sonar;integratedSecurity=false;encrypt=false
# Web配置
sonar.web.host= 你的IP地址
sonar.web.port=9000
# 文件配置
sonar.path.data=data
sonar.path.temp=temp
启动 SonarQube
在 SonarQube 的 bin 目录下,根据你的操作系统执行相应的启动脚本。 启动StartSonar.bat
启动成功后,访问 http://localhost:9000 进入 SonarQube 登录界面,默认用户名密码为 admin/admin。
五、使用 SonarQube 分析代码
创建新项目
配置项目
分析项目
生成项目密钥,按步骤执行分析项目指令
六、启动 SonarQube相关问题解决
SonarQube启动过程中会产生三个日志,日志都在${安装目录}/logs/,分别为es.log、sonar.log、web.log。 运行时出现的问题都可以通过查看这三个日志来进行定位解决。
1、SonarQube 在启动时遇到了数据库排序规则不匹配的问题, SonarQube 需要使用 Chinese_PRC_CS_AS(区分大小写和重音)。 web.log报错
ERROR web[][o.s.s.p.w.PlatformServletContextListener] Web server startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@4e25154f–org.sonar.server.platform.db.CheckDatabaseCharsetAtStartup': Initialization of bean failed; nested exception is Database collation must be case–sensitive and accent–sensitive. It is Chinese_PRC_CI_AS but should be Chinese_PRC_CS_AS.
解决方案:更改数据库的排序规则。以下是步骤:
ALTER DATABASE [YourDatabaseName] COLLATE Chinese_PRC_CS_AS;
2、SonarQube 在启动时无法绑定到指定的网络地址或端口。 web.log报错
WARN web[][o.s.p.ProcessEntryPoint] Fail to start Web Server
java.lang.IllegalStateException: Fail to create or clean–up directory D:\\Program Files\\sonarqube–10.7.0.96327\\data\\web\\deploy
可能的原因包括:
- sonar.properties 配置 解决方案:确认 SonarQube 的网络配置是否正确。如果 sonar.web.host 配置为 localhost 或其他无效地址,可能会导致绑定失败。需要显式设置为 127.0.0.1 或实际的 IP 地址。
# Web配置
sonar.web.host= 你的IP地址
sonar.web.port=9000
- 端口冲突 解决方案:如果端口 9000 被占用,可以修改 SonarQube 的端口。 运行以下命令检查端口 9000 是否被占用。
netstat –ano | findstr :9000
- 运行中的服务未关闭 解决方案:SonarQube 每次重启前都需要手动关闭java进程。 关闭所有进程后,重启,解决该问题。
评论前必须登录!
注册