细说Sonar(一)-工具的安装

在互联网企业,每个角色都得是五十八般武艺样样精通,作为一名合格的QA,如果只会只是整整CMMI文档,弄弄ISO材料,没有点编程基础,那估计会举步维艰,所以没办法谁让咱在互联网公司呢(自冠),QA的小伙伴还要了解一丢丢的技术吧。

本次系列文章主要从5W2H的角度介绍下主角Sonar工具,小编在整理学习的过程中,才真正发现Sonar工具很强大,乐观估计我平时工作中只用到了10%的功能。

1、What(Sonar是什么?)

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。

2、Why(Sonar能带来什么?)

复杂度分布(complexity):代码复杂度过高将难以理解。

重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方。

单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况

代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范。

注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读。

潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug。

结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度。

3、How(如何安装,本章节的重点)

4、When

组织需要对代码进行静态检查的时候可考虑引入Sonar扫描工具。

5、Where

Sonar支持linux和windows两种环境,安装部署可以采用Sonarqube+Jenkins持续集成方式、Sonarqube+maven、Sonarqube+SVN模式。小编的安装部署步骤也是最简单的Sonarqube+SVN,各自独立模式。

6、Who

安装步骤并不复杂,所以只要稍微有点计算机知识的均可尝试安装,有问题可以度娘解决。

7、How much

Sonarqube工具是免费开源的,主要是前期部署安装投入的人力,可节省后期代码规范化要求的人力投入,所以从这个角度来讲对于提升工作效率还是有帮助的。

具体安装步骤如下:

第一步:搭建服务端:

创建用户组:登录到linux环境中,命令:groupadd -g 550sonargroup(groupadd)并把设置组ID加入到系统中 /etc/group

创建用户useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。命令:useradd sonar –d /home/sonar –gsonargrp –m,用户信息会被保存到/etc/passwd 文件中。

设置sonar的用户密码,命令:Passwd sonar,根据命令提示输入两次用户密码。

Unzip解压sonar包,命令:unzip sonarqube-4.4.1.zip,解压之后,进入到bin目录下会看到:

然后查看linux系统的位数命令:getconf LONG_BIT显示为64位。

下载好sonarQube后,解压打开conf目录,修改 wrapper.conf

搭建数据库,Sonar支持多种数据库类型,小编搭建的数据库类型为mysql型的,数据库的搭建大家可在网上随意搭建步骤。

mysql数据库搭建完成之后,添加sonar用户,命令如下:

mysql>CREATEDATABASE sonar CHARACTERSET utf8 COLLATE utf8_general_ci;

mysql>CREATEUSER'sonar' IDENTIFIED BY'sonar';

mysql>GRANTALLON sonar.*TO'sonar'@'%' IDENTIFIED BY'sonar';

mysql>GRANTALLON sonar.*TO'sonar'@'localhost' IDENTIFIED BY'sonar';

mysql> FLUSH PRIVILEGES;

sonarQube配置mysql,修改/conf/sonar.properties

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.jdbc.url=jdbc:mysql://数据库IP:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.web.host=你的本地IP

sonar.web.context=/sonar

sonar.web.port=9000

设置环境变量 用java–version命令查看,Sonar要求JDK为1.8以上。

修改sonar配置文件,编辑/home/sonar/sonarqube-4.4.1/conf/sonar.properties文件,配置数据库设置,默认已经提供了各类数据库的支持这里使用mysql,因此取消mysql模块的注释

vi sonar.properties

sonar.jdbc.username=sonar(创建的数据库用户名)

sonar.jdbc.password=sonar(创建的数据库密码)

sonar.jdbc.url=jdbc:mysql://172.16.6.225:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

添加数据库驱动,除了Oracle数据库外,其它数据库驱动都默认已经提供了,目录在/home/sonar/sonarqube-4.4.1/extensions/jdbc-driver,且这些已添加的驱动是sonar唯一支持的,因此不需要修改

如果是Oracle数据库,需要复制JDBC驱动至/extensions/jdbc-driver/oracle目录

一切就绪之后进入/home/sonar/sonarqube-4.4.1/bin/linux-x86-64目录,执行./soar.sh start命令启动sonar服务,结果启动失败,查看log日志下的sonar.log报错如下:

看日志提示是权限不对,百度之后解决方案是在home/sonar/sonarqube-4.4.1/conf/wrapper.conf下增加:

wrapper.java.command=/usr/java/jdk1.8.0_72/bin/java

将sonar服务器进行汉化,直接将汉化包 sonar-l10n-zh-plugin-1.8.jar放在/home/sonar/sonarqube-4.4.1/extensions/plugins目录下,重启sonar。

./sonar.sh start 启动服务

./sonar.sh stop 停止服务

./sonar.sh restart 重启服务

sonar启动成功的显示:第一次启动sonar的时候从日志中显示Sonar会将数据库脚本信息直接刷入到第八步所建的sonar数据库中,即初始化数据库。

启动成功之后打开页面如下:

Sonar的扫描机制:就是通过插件+数据库中的rules机制共同作用来扫描源码的。可以在/home/sonar/sonarqube-4.4.1/extensions/plugins目录下查看sonar默认的插件。

Sonar系统表可以直接登录到mysql数据库中去查看,直接在本机安装客户端工具NavicatforMySQL可以直接链接sonar数据库,其中有rules表。

第二步:搭建客户端。

客户端是装在本机,本机首先要安装JDK,具体可以问度量。

将sonar-scanner-2.6.1.zip解压到某个目录下,我的是F:\TOOL\sonar-scanner-2.6.1\sonar-scanner-2.6.1

配置系统环境变量,变量名:SONAR_RUNNER_HOME 变量值:F:\sonar-scanner-2.5,Path中最后增加;%SONAR_RUNNER_HOME%\bin

在本机运行cmd,输入sonar-runner 出现以下画面则表示配置成功。配置环境变量的好处就是在任一目录下运行sonar-runner都可以直接运行sonar命令。

配置文件的修改。在待扫描的工程下新建一个sonar-project.properties文件,sonar-project.properties所在位置和配置文件中的内容如下所示:

sonar.projectKey=my:project(可以自己随便取,项目标识,类似于主键)

sonar.projectName=myshop(这个工程的名字,最终在sonar首页显示的名字会是这个)

sonar.projectVersion=1.0(项目的版本号)

sonar.sources=src(需要扫描的源代码目录,多个目录采用英文逗号隔开)

sonar.exclusions=**/jquery-ui.js(不需要扫描的文件)

执行扫描,有两种方式可以进行扫描,第一种就是利用上面配置的环境变量,直接进入CMD模式敲命令sonar-runner进入扫描;第二种就是将sonar.bat文件copy到工程目录下,与sonar-project.properties 在同一目录,PC机上双击bat运行。也可以执行sonar-runner的命令

最终执行结果如下,表示执行成功。

在浏览器上打开http://localhost:9000,你将会看到使用sonar-scanner扫描过的项目,看扫描结果:

下一章节将重点介绍Sonar扫描结果的查看。

附:

sonarQube官网地址:http://www.sonarqube.org/

sonarQube官方文档地址:http://docs.codehaus.org/display/SONAR/Documentation

sonarQube示例地址:http://nemo.sonarqube.org/

网上另两篇相关的文章:

http://www.cnblogs.com/gao241/p/3190701.html

http://www.myexception.cn/open-source/1307345.html

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180627G0IWGM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券