在上篇文章《【代码审计】使用SonarQube进行代码质量分析管理 》中,咱们说明了项目代码质量的重要性,以及当前代码质量分析管理的一些工具,而后详细说明了SonarQube质量分析管理工具的安装部署和代码扫描分析的过程。上文咱们说到SonarQube是使用本身默认的内置的数据库,在一些功能上会受到限制,本文咱们将内置存储改成外置mysql存储,而后在分析项目代码,对项目代码严重性地方进行修复工做,而后介绍SonarQube其余的一些基本的使用(设置、插件安装等)java
1.代码分析管理平台SonarQube(已部署)mysql
2.mysql数据库服务5.6-5.7git
1.配置SonarQube数据服务github
打开咱们上文安装的SonarQube的根目录,而后进入conf目录,修改sonar.properties文件web
sonar.jdbc.url=jdbc:mysql://maxbill:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=sonar
sonar.jdbc.password=sonarsql
参数说明:数据库
sonar.jdbc.url 数据库链接地址工具
sonar.jdbc.username 数据库用户名url
sonar.jdbc.password 数据库密码spa
咱们在数据库中建立sonar数据库,并设置受权
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;
2.验证配置
启动sonarqube服务,初始化数据库信息(使用上文咱们编写的启动脚本)
此刻,SonarQube已经启动成功,咱们访问http://127.0.0.1:9000,发现访问不到页面
此时咱们只能去看sonar的日志,定位到sonar的log目录下,找到web.log文件
从日志中咱们明显的看到如下错误,该版本的必须使用mysql5.6及以上版本:
2018.05.23 11:10:49 ERROR web[][o.s.s.p.Platform] Web server startup failed: Unsupported
mysql version: 5.5. Minimal supported version is 5.6.
3.解决mysql版本低的问题
通过查询sonar的日志,咱们知道使咱们的mysql版本低致使的运行初始化异常,咱们升级mysql到6.0(备注:我主机上恰好有6.0的包,只要升级到6.0及以上就行),升级过程忽略,你们可自行百度,或者 从新卸载安装也是能够的
此时咱们重启sonarqube,访问http://127.0.0.1:9000
结果仍是报错:
报Unknown character set: 'utf8mb4'异常,查找了许多资料,觉得mysql6.0版本不支持,最后发现不是mysql的问题,而是mysql驱动引发的问题。将mysql驱动改为 mysql-connector-java-5.1.6-bin.jar
本觉得就完美解决了,天公不做美,又有新问题了,启动访问不到,继续看日志
查了N多的资料,没找到解决办法,看日志应该是7.1版本的BUG(最新的版本),因而下载6.7.3版本部署后,重复上面的配置步骤,启动访问http://127.0.0.1:9000 仍是访问不到,看日志如上的异常信息,因而排除sonarqube版本问题,怀疑是mysql版本致使,果断卸载mysql6.0从新安装mysql5.6版本,而后从新启动程序,访问http://127.0.0.1:9000 ,咱们看到程序在进行数据初始化,以下:
咱们使用客户端链接mysql数据库看看表中数据:
注意:后面又切回SonarQube7.1也是正常的,因此你们注意下最好使用mysql5.6-5.7版本
此时咱们能够看到使用了外置的mysql数据库后,这里的警告提示消失了
4.配置Scanner扫描工具
打开咱们上文安装的Scanner的根目录,而后进入conf目录,修改sonar-scanner.properties文件
sonar.jdbc.url=jdbc:mysql://maxbill:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
因为咱们使用了外置的数据库以前扫描分析的信息就丢失了,咱们使用scanner从新扫描分析项目代码进入咱们要扫描的项目的更目录下面,运行终端执行sonar-scanner
等待项目被扫描分析完成
扫描分析完成咱们登录SonarQube代码分析管理平台等待分析结果
稍等一会就分析完成了,咱们能够看待项目分析的详情:
咱们在项目代码分析详情中点击问题标签,能够看到项目列出来的不一样级别的问题列表
咱们点击右侧阻断性的问题(最严重,必需要改的)
咱们点击一个进入,能够看到错误的代码块位置,以及系统的改错提示
在这里能够去修复这个问题,也能够去修改这个问题的级别,能够评论,能够给该问题打上标签,能够将该问题分配给该项目其余成员
1.插件安装
系统默认是英文,能够安装中文插件(本文已安装)
插件市场中咱们能够安装、卸载、更新插件,固然也能够去github下载第三方开发的插件安装
2.系统日志
在这里咱们能够查看系统、web、引擎的基本信息、改动日志级别、下载系统信息、下载日志信息、在线重启SonarQube数据管理系统
3.权限控制
在权限控制中,能够管理系统的用户(新增、删除、禁用、修改密码、分配组、查看详情)、管理系统群组(建立、删除、更新、管理群组中人员)、给用户或者群组分配系统功能操做权限、配置权限模板等
4.代码规则
在这里能够配置各类语言的代码分析规则(能够配置自定义的规则)
5.质量配置
在质量配置中能够自定义不一样语言系统分析代码质量使用的质量阀值(影响代码分析结果)
本文中踩了很多的坑,主要仍是sonar和mysql的版本兼容性问题,这里也再次提醒你们(按照sonar的配置文件提示使用mysql版本,sonar7.1使用mysql5.6-5.7),其余就是简单的使用的配置了。