乐趣区

关于ios:sonariOS的实践

架构与整合(Architecture and Integration)

iOS 开发交换技术群:563513413,不论你是大牛还是小白都欢送入驻,分享 BAT, 阿里面试题、面试教训,探讨技术,大家一起交流学习成长!

先简略介绍一下 SonarQube 的总览

SonarQube 是由四局部组成的, 如下图所示:
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

1.SonarQube Server
2. 一个 SonarQube 的数据库
3. 服务器上安装了多个 SonarQube 插件,可能包含语言,SCM,集成,身份验证和治理插件
4. 在构建 / 继续集成服务器上运行一个或多个 SonarScanner,以剖析我的项目

SonarQube 在 CI 中地位

以下架构显示了 SonarQube 如何与其余 ALM 工具集成以及应用 SonarQube 的各种组件的地位
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

阐明: 开发人员提交代码到 SCM(代码治理平台),CI 服务器会触发主动构建,并执行运行 SonarQube 剖析所需的 SonarScanner,并推送剖析报告到 SonarQube Server,数据存储到 SonarQube 配置的数据库。开发人员通过 SonarQube UI 评审,评论他们的问题,以治理和缩小技术债权。并且经理从剖析中接管报告。

Mac 环境装置 Sonar

Mac 环境

12
复制代码
MacOS:10.15.5   java:1.8.0_111
复制代码

重点阐明
装置不同版本的 SonarQube 有不同的要求。
1. 例如 SonarQube 7.9 之后数据库就不再反对 MySQL 了。所以依照本文装置要先看下你要装置 SonarQube 对应版本的要求。这个也是我一开始,装置最新版本 SonarQube,数据库配置了 MySQL,所以服务始终没有起来的起因。
2.Sonar 7.9 及更高版本须要 JAVA 11。

共事和我说装置 SonarQube 用 Docker 不便一些, 我为了在我本人电脑上搭建 Sonar 的环境,抉择了低一点的版本。

我应用的是 SonarQube:7.5 和 sonar-scanner-4.3.0.2102
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

环境配置大抵分为以几个步骤
1. 下载 SonarQube server
2. 下载 SonarScanner
3. 配置环境变量
4. 配置数据库
5. 下载 Swift/OC 的插件
6. 启动 SonarQube server

1. 下载 SonarQube server

将 sonarqube-enterprise-7.5.zip 解压,放在 /usr/local 目录下,倡议重新命名删掉版本后缀。

2. 下载 SonarScanner

将 sonar-scanner-cli-4.4.0.2170-macosx.zip 解压,放在 /usr/local 目录下,倡议重新命名删掉版本后缀。

如下图所示
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

3. 配置环境变量

关上命令行工具

12
复制代码
cd ~/   open .bash_profile
复制代码

增加如下配置, 并保留。

1234567
复制代码
# add sonar-scannersSONAR_RUNNER_HOME=/usr/local/sonar-scannerPATH=$PATH:$SONAR_RUNNER_HOME/bin# add sonarqubeSONARQUBE_HOME=/usr/local/sonarqube/PATH=$PATH:$SONARQUBE_HOME/bin/macosx-universal-64
复制代码

在终端中执行一下命令

1
复制代码
source ~/.bash_profile
复制代码

终端输出命令 sonar-scanner -v,显示如下

12345
复制代码
INFO: Scanner configuration file: /usr/local/sonar-scanner/conf/sonar-scanner.propertiesINFO: Project root configuration file: NONEINFO: SonarScanner 4.3.0.2102INFO: Java 11.0.3 AdoptOpenJDK (64-bit)INFO: Mac OS X 10.15.5 x86_64
复制代码

4. 配置数据库

我本机 MySQL 的版本如下

1
复制代码
mysql  Ver 14.14 Distrib 5.7.18, for macos10.12 (x86_64) using  EditLine wrapper
复制代码

关上终端,输出 mysql -u root -p,再输出数据库明码,进入 MySql,输出上面 sql 语句创立 sonar 所需的数据库。

12345
复制代码
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;
复制代码

持续输出输出 mysql> show databases ; 查看 sonar 所需的数据库是否创立胜利。如果创立胜利,显示如下表。

12345
复制代码
+--------------------+| Database           |+--------------------+| sonar              |+--------------------+
复制代码

Sonarqube 目录下找到 conf/sonar.properties 文件,编辑文件退出对应数据库的配置。
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

sonar.properties 文件,如下配置

123456789
复制代码
sonar.jdbc.username=rootsonar.jdbc.password=yourMySQLPasswordsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=falsesonar.jdbc.maxActive=60sonar.jdbc.maxIdle=5sonar.jdbc.minIdle=2sonar.jdbc.maxWait=5000sonar.jdbc.minEvictableIdleTimeMillis=600000sonar.jdbc.timeBetweenEvictionRunsMillis=30000
复制代码

阐明: 刚下载下来的 Sonarqube,conf/sonar.properties 的文件外面的内容都是正文掉的。须要依据本人状况配置 sonar.properties 中的信息。

5. 下载 Swift/OC 的插件

下载 Swift/OC 的插件

我是用的是 0.4.6 版本,如下图所示
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

将下载下来的 backelite-sonar-swift-plugin-0.4.6.jar,放到 SonarQube/extensions/plugins/ 目录下,如图所示
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

swift 插件应用,还有一些须要装置的要求,如下所示:

123456789
复制代码
a Mac with Xcode 7 or +SonarQube and SonarQube Scannerxcpretty (see instructions below)SwiftLint (HomeBrew installed and brew install swiftlint). Version 0.3.0 or above.Tailor (HomeBrew installed and brew install tailor). Version 0.11.1 or above.slather (gem install slather). Version 2.1.0 or above (2.4 since Xcode 8.3).lizard (PIP installed and sudo pip install lizard)OCLint installed. Version 0.11.0 recommended (0.13.0 since Xcode 9).Faux Pas command line tools installed (optional)
复制代码

举荐应用 HomeBrew 装置,比方 lizard 不反对 brew 装置,就依照 lizard 文档的步骤进行装置。

阐明:
如果你应用了 zsh, 并且曾经装置了 lizard, 然而终端运行报错起因 zsh: command not found

解决这个计划: 在.zshrc 中增加一行

12
复制代码
# User configurationsource ~/.bash_profile
复制代码

6. 启动 SonarQube server

1
复制代码
sonar.sh console
复制代码

浏览器输出 http://localhost:9000/, 能够看到治理台界面。如下图所示
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

输出 admin/admin 登录治理台。

iOS Demo 工程(demo project)

demo project

iOS 工程创立和配置能够参考这篇文章 sonarqube-integration-with-ios 的 Integrate with XCode project 局部。

重点阐明一下: 工程中须要 sonar-project.properties,最好从插件的官网下载。我发现 sonarqube-integration-with-ios 文章链接外面的 sonar-project.properties 文件和最新插件的官网提供 sonar-project.properties 曾经有点不一样了。咱们这里还是依照插件官网提供的为准。

sonar-project.properties 和 run-sonar-swift.sh 从插件官网下图所示的中央下载:
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

到了最激动人心的时候了,咱们 cd 到工程中。执行 sh run-sonar-swift.sh -v

执行实现,浏览器登录 http://localhost:9000/,就能够看到如下后果
[](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

[

](https://kingdomrain002.github…

待钻研和实际的事项

  1. 自定义扫描规定 如何新增规定
  2. sonarQube 部署在一台服务器(lunix)上,而 SonarScanner 在另外一台服务器(mac os)上,并尝试应用 Docker 装置。
  3. 示范视频(Demonstration video)
退出移动版