代码质量分析工具SonarQube的安装使用、汉化、数据库配置

之前用过Coding.net的代码质量分析功能,实用强大,但是最近突然找不到这个功能了(坑!)。。。
虽然官网上仍然把代码质量分析当一个主要功能介绍,但找不到任何相关的文档和说明,就好像这个功能消失了一样(WHAT??)。。。
联系客服也毫无回应(什么情况??)。。。

我们的需求是,找一个能够统计代码注释率,分析代码质量,适用于多种编程语言的工具。试用了几个最后确定用SonarQube

接下来介绍

  • 如何使用 SonarQube 分析本地的项目
  • 如何安装汉化包
  • 如何更改数据库配置

安装和使用

首先,到官网下载最新版本。我下载的是V7.0。
然后按照Get Started in Two Minutes启动 SonarQube 服务器:

  • 解压(放哪儿都行)
  • windows:在解压后的文件夹中,找到bin目录,选择系统,比如我选的windows-x86-64,然后直接双击 StartSonar.bat启动服务器。
  • 打开页面 http://localhost:9000
  • 点击页面上的Log in按钮登录,账号密码都是admin

怎么分析项目呢?

第一次登录会看到 Tutorial,按照提示设置用于验证身份的token。生成的token需要复制记下来!不会再显示第二次!在用户 > 我的账户 > 安全中可以生成新token(令牌),或者回收已创建的 token。

如果想强化安全,不想在执行代码扫描或调用Web Service时使用真实SonarQube用户的密码,可以使用用户令牌来代替用户登录。这样可以通过避免把分析用户的密码在网络传输,从而提升安全性。

然后选择要分析的项目的主要语言以及当前操作系统,然后定义用于标识项目的key

然后会提示下载安装扫描器。并修改环境变量。比如windows需要将扫描器的bin目录添加至%PATH%环境变量。当然,扫描器以后就不需要再下载了。

接下来就可以扫描项目了。按照说明,复制命令,在要分析的项目目录下执行。比如我的命令是这样的:

sonar-scanner.bat -Dsonar.projectKey=myproject -Dsonar.sources=. -Dsonar.host.url=http://localhost:9000 -Dsonar.login=(已创建的token)
分析完成

看到这些输出就说明分析完成了,页面 http://localhost:9000 此时会自动刷新,然后就可以查看分析结果了。

配置项目的扫描器参数
重新扫描只需要再次执行上面的命令。但是每次都执行这么长的命令很麻烦啊。还好扫描器是可以配置的。
只需要在要分析的目录下,创建一个文件sonar-project.properties。内容如下:

# your authentication token
sonar.login=[之前生成的token]

# must be unique in a given SonarQube instance
sonar.projectKey=[项目key]
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=[项目名称]
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set. 
# Comma-separated paths to directories containing source files.
# 限定要分析的路径
sonar.sources=.

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

# Set the language of the source code to analyze
# 限定要分析的代码语言,比如js。
# 不设置则默认分析多种语言
sonar.language = js

然后在文件sonar-project.properties所在目录下,也就是要分析的目录下,启动扫描器。比如windows上,运行sonar-scanner.bat
关于扫描器更多的参数配置查看:Analysis Parameters

新建项目分析
页面上找到Administration > Projects,点击右上角按钮create project

汉化

分析结果出来了但还是有点懵?不知道具体含义?
安装汉化包试试:页面上找到Administration > Marketplace,在搜索框中输入chinese,出现一个Chinese Pack,点击右侧的install按钮。
安装成功后,会提示重启 SonarQube 服务器。
稍等一会,再看页面上已经显示中文了。

配置数据库

这时候页面底部会提示,嵌入数据库适用于测试环境。以后不能迁移数据到别的数据库服务器了。另外也不能升级 SonarQube 的版本了。

SonarQube 默认数据库为 h2。我们可以配置成别的数据库,比如MySQL,Oracle等等。

举例MySQL,配置步骤:

  1. 首先确保已安装数据库,并启动服务器。

  2. 连接mysql:mysql -u root -p

  3. 为 SonarQube 创建数据库:

    CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
    CREATE USER 'sonar' IDENTIFIED BY 'password';
    GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'password';
    GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    
  4. 修改 SonarQube 的配置文件,在解压后的目录中,修改conf\sonar.properties文件,添加三行配置,或者找到注释中的默认设置,取消注释,再修改。:

    # 连接 mysql 数据库的用户名,密码
    sonar.jdbc.username=root
    sonar.jdbc.password=123456
    # 上一步创建的数据库的 url
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    
    

    不同数据库设置不同,在注释中有提示,比如 mysql 对应设置有注释#----- MySQL 5.6 or greater...。更多说明可以看官方文档的Installing the Server

  5. 修改完成后,重启 SonarQube 服务器。就ok了(页面底部不会再提示使用的是嵌入的默认数据库了)。

启动SonarQube报错:远程主机强迫关闭了一个现有连接

  1. 如果是初次启动报错,那检查数据库版本是否符合要求。比如我这个注释里面写着MySQL 5.6 or greater,所以MySQL数据库版本不能低于5.6。
  2. 版本符合要求的前提下,我遇到过另一种情况,开机之后,首次运行SonarQube,控制台报错并闪退。这种情况的话,检查MySQL服务器是否已经启动,数据库是否能够连接。

结尾

综上就是对 SonarQube 入门使用的说明。它还有很多强大功能有待挖掘。

我认为,对于开发者来说,好的工具真的非常重要。找到合适的工具,能够提高之后的工作效率,以及开发质量。多花点时间,也是值得的。

参考阅读

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

推荐阅读更多精彩内容

  • 1.SonarQube Sonar的功能:是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检...
    Broom阅读 9,386评论 0 6
  • 新晋测试小白最近在研究sonarqube的静态代码检查,整理了关于sonarqube 如何在mac os x系统下...
    测试小白_stone阅读 1,905评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 荒村远,流水育山青。冬到疾风催落叶,夏来狂雨涤生灵。天地护伶仃。 荒村赞,法治更温馨。右里暗争成过往,左邻红脸是曾...
    繁花落尽深眸阅读 251评论 6 15
  • 三年前,我不喝茶的主要原因是不懂茶道,觉得喝与不喝一个样。这三年不喝茶,主要是肠胃不争气,沾绿茶就拉稀。基于此,...
    宗林的李阅读 383评论 4 3