Windows系统配置SonarQube本地服务

Windows系统配置SonarQube本地服务

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的分析分为几个部分:

  • 待分析的项目源代码
  • 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后,解压到任意目录(建议,非中文目录),目录结构大致如下:

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数据库。

  1. MySQL创建数据库

     CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
    
  2. 分配用户及权限

     
         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;
      
    
  3. 修改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 配置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 启动成功

SonarQube 服务启动

此时,可以在浏览器内访问 http://localhost:9000 来登陆SonarQube管理页面 (注意,运行期间不要关闭命令行

enter description here

首次启动时,会在配置MySQL数据库内生成相关的表及初始化数据

SonarQube 数据库初始化

到此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,可跳过

SonarQube 首次启动配置
SonarQube 首次启动配置2

配置完成后,点击 Finish..,进入操作页面

SonarQube 操作页面

下面安装 Chinese Pack (汉化包),演示插件安装。

导航栏选择 Administration跳转到Administration页面,选择 Marketplace 进入应用市场

SonarQube 安装汉化包

安装完成后,出现类似如下提示,点击 restart 重启服务即可

SonarQube 安装完成提示

等待几秒钟,服务会自动重启,重新登录后,可以看到汉化结果

SonarQube 汉化结果

其他插件安装类似如上操作,根据需要选择安装即可。


安装相关问题记录及处理

启动服务时,提示 “Unable to start JVM”

出现类似提示时,可以尝试在文件 ..\sonarqube-6.7.5\conf\wrapper.conf 中添加Java JDK的路径,一般正常配置了Java环境变量,此处不需要配置。

SonarQube Java JDK问题

启动服务时,提示“另一个程序正在使用此文件,进程无法访问。”

启动服务时,出现类似提示,是由于 Java(TM) Platform SE binary此后台进程没有关闭,导致jar包被加载占用,无法访问。

SonarQube Java后台占用

此时使用任务管理器,关闭对应进程即可。

SonarQube Java后台占用问题处理

汉化包插件安装失败

安装汉化包,重启后,一直重启状态,或出现其他错误提示,可以尝试在 此处 下载对应SonarQube版本的汉化包,下载完成后,提取jar包,放置到目录 ..\sonarqube-6.7.5\extensions\plugins 下,重启服务即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容