JenkinsSonar-配置

1.前言

上文已经把Sonar所需的环境给搭建起来,接下来就需要配置Sonar以及将其应用到Jenkins,以下是本文内容的目录。

  • 配置软件
    • Mysql
    • SonarQube
      • 配置文件
      • 插件更换
      • 激活规则
    • SonarQube Scanner
  • 项目配置
    • 配置脚本
  • Jenkins配置

2.配置软件

2.1Mysql

根据上文安装好Mysql之后,还需要创建一个数据库供Sonar使用,在Mysql界面上执行以下语句即可。

1
2
3
4
5
6
7
8
9
10
#创建一个依据UTF8编码的sonar数据表。
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
#创建一个名为sonar,密码为sonar的账号
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
#授权sonar用户拥有sonar数据库
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
#授权sonar用户拥有sonar数据库
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
#重新加载权限
FLUSH PRIVILEGES;

2.2SonarQube

根据上文安装好Mysql之后,还需要配置具体的信息才能让SonarQube关联起来。

2.2.1配置文件

Sonar的配置文件在/usr/local/sonarqube-5.6.6/conf/sonar.properties下,配置参考内容如下:

1
2
3
4
5
6
7
8
#访问端口
sonar.web.port=9002
#mysql链接地址
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#mysql的账号
sonar.jdbc.username=xxx
#mysql的密码
sonar.jdbc.password=xxx
2.2.2插件更换

这里需要说明一下,因为Sonar本身是支持各种开发语言的,但是支持这些语言的前提是需要有对应的语法规则库作为插件提供给Sonar使用,但是发现官方的Objective-C语法库是需要付费的,所有在GitHub找到一些开源的语法库作为第三方库使用。比如sonar-objective-ciOS-sonarShell。并且这些库要跟对应的执行文件一并使用才能让Sonar运行成功,然后我发现sonar-objective-c是三年前的版本,支持的规则也不多,所以最后决定使用了[iOS-sonarShell

他们所对应的插件(jar包)需要放到Sonar的/usr/local/sonarqube-5.6.6/extensions/plugins目录下才能识别到,同时也需要保留run-sonar_V2.1.sh脚本与sonar-project.properties配置文件。

2.2.3激活规则

虽然说插件能识别到,但是还需要在Sonar上激活这些规则才能够使用。步骤:启动Sonar后,我们进入顶部的质量配置,再点击下面的创建按钮,就会有一个弹窗出现,通过选择弹窗第二行内容,就会发现我们所加入的语法库规则,选择成功后点创建就算添加成功了。添加成功后可以到顶部的代码规则页面,在页面左侧能查看到刚新加的语言规则,如下图所示。


2.3SonarQube Scanner

配置SonarQube好后,还需要配置具体的信息才能让SonarQube Scanner跑起来。

2.3.1配置文件

Sonar的配置文件在/usr/local/sonar-scanner-3.0.3.778-macosx/conf/sonar-scanner.properties下,配置参考内容如下:

1
2
3
4
5
6
7
8
#sonar本地地址
sonar.host.url=http://localhost:9002
#mysql链接地址
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
#mysql的账号
sonar.jdbc.username=root
#mysql的密码
sonar.jdbc.password=Fzs123321

3.项目配置

Sonar配置成功后,还需要将我们的项目应用到它的上面,通过扫描后得出代码质量的结果。现假设我有一个叫A名字的Objective-C项目,方便以下配置所用。

3.1配置脚本

将步骤2.2.2中保留下来的run-sonar_V2.1.shsonar-project.properties的文件复制一份到A项目的目录下,并修改sonar-project.properties的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#项目键
sonar.projectKey=A
#项目名
sonar.projectName=A
#项目号
sonar.projectVersion=1.0.0
#项目语言
sonar.language=objectivec
#工程文件目录
sonar.sources=A
#工程名称(二选一)
#sonar.objectivec.project=A.xcodeproj
sonar.objectivec.workspace=A.xcworkspace
#项目主题
sonar.objectivec.appScheme=A
#开启代码管理
sonar.scm.enabled=true
#代码库地址
sonar.scm.url=scm:xxxxxx

4.Jenkins配置

项目配置成功后,还需要到Jenkins对应项目下的构建操作中添加一个新的构建步骤,叫Execute shell。在Command栏目中加入我们需要执行的命令,命令参考如下:

1
2
3
4
#进去到项目工程目录
cd ${WORKSPACE}
#执行sonar扫描脚本
sh run-sonar_V2.1.sh