博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【代码审计】SonarQube配置外部数据存储和基本使用
阅读量:5978 次
发布时间:2019-06-20

本文共 3094 字,大约阅读时间需要 10 分钟。

hot3.png

        在上篇文章《【代码审计】使用SonarQube进行代码质量分析管理 》中,我们说明了项目代码质量的重要性,以及当前代码质量分析管理的一些工具,然后详细说明了SonarQube质量分析管理工具的安装部署和代码扫描分析的过程。上文我们说到SonarQube是使用自己默认的内置的数据库,在一些功能上会受到限制,本文我们将内置存储改为外置mysql存储,然后在分析项目代码,对项目代码严重性地方进行修复工作,然后介绍SonarQube其他的一些基本的使用(设置、插件安装等)

一、准备工作

1.代码分析管理平台SonarQube(已部署)

2.mysql数据库服务5.6-5.7

二、配置外部数据存储

1.配置SonarQube数据服务

打开我们上文安装的SonarQube的根目录,然后进入conf目录,修改sonar.properties文件

095516_hKSp_2846946.png

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

参数说明:

sonar.jdbc.url  数据库连接地址

sonar.jdbc.username  数据库用户名

sonar.jdbc.password  数据库密码

我们在数据库中创建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;

095643_8zdL_2846946.png

2.验证配置

启动sonarqube服务,初始化数据库信息(使用上文我们编写的启动脚本)

111619_tqEC_2846946.png

此刻,SonarQube已经启动成功,我们访问http://127.0.0.1:9000,发现访问不到页面

110823_AzlJ_2846946.png

此时我们只能去看sonar的日志,定位到sonar的log目录下,找到web.log文件

111532_6veN_2846946.png从日志中我们明显的看到以下错误,该版本的必须使用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及以上就行),升级过程忽略,大家可自行百度,或者 重新卸载安装也是可以的

114811_Ukyp_2846946.png

此时我们重启sonarqube,访问http://127.0.0.1:9000

114933_9UZM_2846946.png

结果还是报错:

123156_hWUR_2846946.png

报Unknown character set: 'utf8mb4'异常,查找了许多资料,以为mysql6.0版本不支持,最后发现不是mysql的问题,而是mysql驱动引起的问题。将mysql驱动改成 mysql-connector-java-5.1.6-bin.jar

122943_7KWC_2846946.png123604_RWc0_2846946.png

本以为就完美解决了,天公不作美,又有新问题了,启动访问不到,继续看日志

133836_AuWU_2846946.png

查了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 ,我们看到程序在进行数据初始化,如下:

095214_Z6MY_2846946.png

我们使用客户端连接mysql数据库看看表中数据:

103243_sHli_2846946.png

注意:后面又切回SonarQube7.1也是正常的,所以大家注意下最好使用mysql5.6-5.7版本

104836_DAs0_2846946.png

此时我们可以看到使用了外置的mysql数据库后,这里的警告提示消失了

4.配置Scanner扫描工具

打开我们上文安装的Scanner的根目录,然后进入conf目录,修改sonar-scanner.properties文件

104341_Tq6Q_2846946.png

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

三、使用SonarScanner扫描分析项目代码

由于我们使用了外置的数据库之前扫描分析的信息就丢失了,我们使用scanner重新扫描分析项目代码进入我们要扫描的项目的更目录下面,运行终端执行sonar-scanner

113507_Ylfm_2846946.png

等待项目被扫描分析完成

113554_Wsmd_2846946.png

114729_uQeu_2846946.png

扫描分析完成我们登陆SonarQube代码分析管理平台等待分析结果     110908_sHsb_2846946.png

稍等一会就分析完成了,我们可以看待项目分析的详情:

111146_ttan_2846946.png

111544_i7MB_2846946.png

四、在SonarQube代码分析管理平台解决代码问题

我们在项目代码分析详情中点击问题标签,可以看到项目列出来的不同级别的问题列表

111705_3I5Y_2846946.png

我们点击右侧阻断性的问题(最严重,必须要改的)

111850_tg1F_2846946.png

我们点击一个进入,可以看到错误的代码块位置,以及系统的改错提示

112350_aJiU_2846946.png

在这里可以去修复这个问题,也可以去修改这个问题的级别,可以评论,可以给该问题打上标签,可以将该问题分配给该项目其他成员

五、其他功能介绍

1.插件安装

系统默认是英文,可以安装中文插件(本文已安装)

113250_XaxS_2846946.png

插件市场中我们可以安装、卸载、更新插件,当然也可以去github下载第三方开发的插件安装

2.系统日志

113602_RKy9_2846946.png

在这里我们可以查看系统、web、引擎的基本信息、改动日志级别、下载系统信息、下载日志信息、在线重启SonarQube数据管理系统

3.权限控制

113950_poct_2846946.png

在权限控制中,可以管理系统的用户(新增、删除、禁用、修改密码、分配组、查看详情)、管理系统群组(创建、删除、更新、管理群组中人员)、给用户或者群组分配系统功能操作权限、配置权限模板等

4.代码规则

114527_kYLF_2846946.png

在这里可以配置各种语言的代码分析规则(可以配置自定义的规则)

5.质量配置

114651_ITy1_2846946.png

在质量配置中可以自定义不同语言系统分析代码质量使用的质量阀值(影响代码分析结果)

六、总结

         本文中踩了不少的坑,主要还是sonar和mysql的版本兼容性问题,这里也再次提醒大家(按照sonar的配置文件提示使用mysql版本,sonar7.1使用mysql5.6-5.7),其他就是简单的使用的配置了。

 

         

       

转载于:https://my.oschina.net/zss1993/blog/1817912

你可能感兴趣的文章
java基础笔记
查看>>
继续C#开发or转做产品
查看>>
python学习day-8 迭代器 生成器 装饰器
查看>>
git config配置文件
查看>>
vue2.0小示例一个~~新鲜出炉哦。欢迎大家留言
查看>>
cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
查看>>
ASP.NET MVC 学习6、学习使用Code First Migrations功能,把Model的更新同步到DB中
查看>>
kaptcha图形验证码组件
查看>>
android系统release签名
查看>>
我是怎么通过技术白手起家创业 续2
查看>>
java mail发送邮件
查看>>
摘要:ASP.NET的路由
查看>>
LeetCode - Palindrome Number
查看>>
bzoj 2763: [JLOI2011]飞行路线
查看>>
css实现文本超出两行隐藏
查看>>
jQuery实现enter键登录
查看>>
bitmap文件格式分析
查看>>
HTML Clipboard Format [MSDN资料]
查看>>
UVA - 10859 Placing Lampposts 放置街灯
查看>>
前端模块管理器命令:npm & bower
查看>>