使用 Sonar 检测代码质量
经历了一段时间的加班赶项目进度之后,今天终于闲下来了。忽然不知道干啥。于是,想着做点什么吧。突然想起了码云上面有个代码分析的功能,用的是 Sonar
于是想来玩玩这个。
打开浏览器,搜索sonarqube,进入官网,找到download按钮,下载安装包。浏览器下载慢的话, 可以复制下载链接 到迅雷里边下载。
下载之后,解压到任意目录。
解压后,如果是 windows 64位系统,进入windows-x86-64 目录,双击InstallNTService.bat,成功之后,双击StartSonar.bat 启动。
然后打开浏览器输入:http://192.168.2.100:9000/。可以看到一个界面。
sonar需要java环境的支持,分析数据会保存到保存到数据库。支持mysql,oracle,PostgreSQL,SQLServer
所以,这里需要默认你已经配置好了Java开发环境,已经安装了mysql数据库。
打开 sonar 解压目录的,conf,可以看到sonar.properties 文件中有如下配置:
上面红色加粗的东西本来是注释掉的,现在我给解开了。并增加了配置。这里的配置,说明的数据库信息,和连接的用户信息。
但是,咱们还没有这个用户,和这个数据库,所以需要执行如下命令来创建用户和数据库。:
数据库弄好之后,同时需要复制一个数据库驱动放到安装目录的:extensionsjdbc-drivermysql 下面。比如我用的是:mysql-connector-java-6.0.3.jar
到这里工作完成一半了。如果要想运行分析,则还需要一个东西。根据官方的文档,有如下内容:
也就是,我们需要下载一个SonarQube Scanner 才能运行代码分析。上面提供了6种,我选择了第一种。下载点这里
1.下载之后,解压到随意目录。假设目录是:D:developsonarqube-6.2sonar-scanner-2.8
2. 将目录D:developsonarqube-6.2sonar-scanner-2.8bin 配置到环境变了path中。
3.打开D:developsonarqube-6.2sonar-scanner-2.8conf 下的sonar-scanner.properties 文件,进行如下配置:
假设上的步骤你都配合好了。并且,启动了SonarQube。
假设现在有项目myproject,进入到项目的根目录创建一个文件sonar-project.properties,文件内容如下:
进入CMD.进入到项目的目录,就是刚才包含sonar-project.properties文件的这个目录。
执行命令:sonar-scanner
然后就是等待执行结果,大概几分钟吧。成功之后,进入:http://192.168.2.100:9000/
可以看到项目分析的结果,当然了,可能需要等待一会儿才能看到,因为有处理时间,我在运行上面的命令之后,看到cmd窗口成功完成了。马上到这个页面看,发现还没有。
大概一分钟之后刷新,发现,有了!如下所示:
点这个进去看就知道了。里边有很详细的结果汇报。有问题的代码片段展示,并提示如何修改。还是挺好的。
错误记录:
当时分析了三四个项目,其中有一个失败了,其他都成功了,观看日志发现描述是这样的:
INFO: Analysis report generated in 9263ms, dir size=11 MB
INFO: Analysis reports compressed in 5699ms, zip size=4 MB
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 6:28.455s
INFO: Final Memory: 29M/1274M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
ERROR: Failed to upload report - 500: An error has occurred. Please contact your administrator
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
结果是“EXECUTION FAILURE” 失败了。
失败原因是啥呢? 注意我加粗的文字。 分析的报告大小是 11MB,压缩之后4MB。还是很大的。上传失败的原因是 MYSQL配置问题。
在mysql的终端窗口输入如下命令:
可以看到max_allowed_packet的大小,用这个值 max_allowed_packet / 1024 /1024 = ? M
所以把这个设置大点就好了。在mysql的命令行窗口执行如下命令: