使用 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的命令行窗口执行如下命令: