Windows 系统配置 SonarQube 本地服务
SonarQube 简介
SonarQube 是一个用于管理源代码质量开放平台,可以从多个维度检测代码质量,快速的定位代码中潜在的或者明显的 Bug、错误,提供重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、潜在 Bug、注释和软件设计报告。支持包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多种编程语言的代码质量管理与检测。通过插件机制,SonarQube 可以继承不同的测试工具,代码分析工具,以及持续集成工具。可与 IDE(如:Eclipse、IDEA 等)集成使用。
SonarQube 并不是简单地直接将各种质量检测工具(例如 FindBugs,PMD 等)的结果展现给客户,而是通过不同的插件算法来对这些结果进行再加工,最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理。更多相关介绍不在此赘述。
SonarQube 架构
引用 SonarQube 官网提供的架构图,
通过图中描述整个 SonarQube 的分析分为几个部分:
- 待分析的项目源代码
- SonarQube Scanner 源代码分析工具
- SonarQube Server 提供服务,用来提供分析报表及解决方法
- SonarQube Database 相关分析数据的持久化存储
本文则根据主要描述,记录本地 Windows 下 SonarQube Server 及 Databse 的配置。主要环境如下:
- Windows 10
- SonarQube 6.7 LTS
- MySQL 5.7.21
- JDK1.8.0_152
- Maven 3.5.3
SonarQube 服务环境配置
基本环境要求
本文使用的版本为 SonarQube 6.7.5 LTS , 官方下载地址。安装的基本要求如下:
- 运行 SonarQube 的唯一先决条件是在您的计算机上安装 Java(Oracle JRE 8 或 OpenJDK 8)
- SonarQube 服务器需要至少 2GB 的 RAM 才能有效运行
- 需要的磁盘空间量取决于使用 SonarQube 分析的代码量
- MySQL 5.6 +,仅支持 InnoDB 存储引擎,但不支持 MyISAM
- 要获得 SonarQube 提供的完整体验,必须在浏览器中启用 JavaScript,IE11+,其他浏览器建议最新版本
更多环境要求,见官方文档官方,详见。
另,需要分析 Maven 项目时,需要本地下载配置 Maven,版本 Maven 3.0+。
SonarQube 环境配置
官网下载 SonarQube 后,解压到任意目录(建议,非中文目录),目录结构大致如下:
各目录作用如下:
- bin 此目录放置各操作系统(LInux、Windows、MacOS)用于启动 SonarQube 服务的工具、脚本;
- conf 此目录存放 SonarQube 相关配置文件;
- data 此目录包含嵌入式数据库(H2 数据库引擎)的数据,建议只用于测试和演示;
- elasticsearch 此目录放置 elasticsearch 检索引擎相关内容;
- extensions 此目录存放 SonarQube 的插件、 扩展 jar 包;
- lib 此目录存放 SonarQube 所依赖的 jar 包;
- logs 此目录存放 SonarQube 相关日志信息;
- tmp 此目录包含服务器所需的临时数据,服务器启动时不要清理;
- web 此目录存放 SonarQube web 服务的静态资源。
SonarQube 服务数据库配置
SonarQube 支持大多数主流关系型数据库(例如 Microsoft SQL Server, MySQL, Oracle, PostgreSQL 等),默认使用 H2 数据库,可以直接运行启动,此处配置 MySQL 数据库。
-
MySQL 创建数据库
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
-
分配用户及权限
CREATE USER 'sonar' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; FLUSH PRIVILEGES;
-
修改 SonarQube 配置文件
找到..\sonarqube-6.7.5\conf
目录下的sonar.properties
,首先搜索# User credentials.
配置 JDBC 连接的用户名及密码(此处为上步创建的用户):sonar.jdbc.username=sonar sonar.jdbc.password=sonar
搜索
MySQL 5.6 or greater
,配置数据库链接 URL :sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
到此完成了 MySQL 的简单配置
注意: SonarQube 支持的为 InnoDB 引擎,可以在 MySQL 配置文件内的 [mysqld] 下配置 default-storage-engine=INNODB
来实现创建的表默认使用 InnoDB 引擎。
启动服务
在目录 ..\sonarqube-6.7.5\bin\windows-x86-64
下,双击 StartSonar.bat
启动服务,出现 [o.s.a.SchedulerImpl] Process[es] is up
提示时,表示 elasticsearch
启动成功
此时,可以在浏览器内访问 http://localhost:9000
来登陆 SonarQube 管理页面 (注意,运行期间不要关闭命令行)
首次启动时,会在配置 MySQL 数据库内生成相关的表及初始化数据
到此 SonarQube 服务启动成功,如想修改访问端口等内容,在 ..\sonarqube-6.7.5\conf\sonar.properties
文件内修改。
在目录 ..\sonarqube-6.7.5\bin\windows-x86-64
下可以看到多个 bat 批处理文件
- InstallNTService.bat 安装 sonarqube 为系统服务
- StartNTService.bat 启动 sonarqube 系统服务
- StartSonar.bat 命令行启 sonarqube 服务(关闭命令行即关闭服务)
- StopNTService.bat 停止 sonarqube 系统服务
- UninstallNTService.bat 卸载 sonarqube 系统服务
为了方便,且防止命令行意外关闭导致服务停止等情况,可以通过管理员方式运行 InstallNTService.bat
,将 SonarQube 服务添加到系统服务中, 或使用 sc
命令自行添加。如出现服务添加到系统服务后,启动立即停止的情况,则通过查看 ..\sonarqube-6.7.5\log
目录下的日志来查看问题,如无日志,尝试卸载服务,尝试使用 sc
命令添加服务。更多 sc
命令内容参看百度百科
插件安装
启动服务后,可以在 SonarQube 管理页面的应用市场内添加需要的插件,如汉化包、代码分析插件:
- Chinese Pack 汉化包插件
- Findbugs
- Checkstyle
- PMD
服务页面点击登陆,输入用户名密码 ,默认为 admin / admin
, 默认密码可以在 ..\sonarqube-6.7.5\conf\sonar.properties
文件内修改。
首次登陆账号,会提示配置分析的项目及 token,可跳过
配置完成后,点击 Finish..
,进入操作页面
下面安装 Chinese Pack (汉化包)
,演示插件安装。
导航栏选择 Administration
跳转到 Administration 页面,选择 Marketplace
进入应用市场
安装完成后,出现类似如下提示,点击 restart
重启服务即可
等待几秒钟,服务会自动重启,重新登录后,可以看到汉化结果
其他插件安装类似如上操作,根据需要选择安装即可。
安装相关问题记录及处理
启动服务时,提示 “Unable to start JVM”
出现类似提示时,可以尝试在文件 ..\sonarqube-6.7.5\conf\wrapper.conf
中添加 Java JDK 的路径,一般正常配置了 Java 环境变量,此处不需要配置。
启动服务时,提示“另一个程序正在使用此文件,进程无法访问。”
启动服务时,出现类似提示,是由于 Java(TM) Platform SE binary
此后台进程没有关闭,导致 jar 包被加载占用,无法访问。
此时使用任务管理器,关闭对应进程即可。
汉化包插件安装失败
安装汉化包,重启后,一直重启状态,或出现其他错误提示,可以尝试在 此处 下载对应 SonarQube 版本的汉化包,下载完成后,提取 jar 包,放置到目录 ..\sonarqube-6.7.5\extensions\plugins
下,重启服务即可。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于