Windows下配置 SonarQube 服务器(超详细有相关问题解决方法)
简介
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 FilesJavajdk-17
设置 CLASSPATH 环境变量为 .;%JAVA_HOME%lib
在 PATH 环境变量中添加 %JAVA_HOME%in
三、下载并安装数据库
下载并安装SQL Server 2022(或其他支持的数据库)。
安装完成后,创建一个名为 sonar 的数据库。
四、安装SonarQube
下载 SonarQube
从 SonarQube 官网下载最新版本的安装包,并解压到指定目录。
配置SonarQube
编辑 SonarQube 的 confsonar.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 仪表板中,点击右上角的 Projects(项目)菜单。
- 点击 Create Project(创建项目)按钮。
配置项目
- 在 Create Project 页面中,输入项目的 Project Key(项目键)和 Project Name(项目名称)。
- 点击 Set Up(设置)按钮。
分析项目
生成项目密钥,按步骤执行分析项目指令
六、启动 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.
解决方案:更改数据库的排序规则。以下是步骤:
- 备份数据库:在进行任何更改之前,确保你已经备份了数据库,以防出现意外情况。
- 更改数据库排序规则:
• 如果你使用的是 SQL Server,可以使用以下 SQL 命令来更改数据库的排序规则:
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 Filessonarqube-10.7.0.96327datawebdeploy
可能的原因包括:
- 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进程。
关闭所有进程后,重启,解决该问题。