架构与整合(Architecture and Integration)
iOS开发交流技术群:563513413,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
先简单介绍一下SonarQube的总览
SonarQube是由四部分组成的,如下图所示:

1.SonarQube Server
2.一个SonarQube的数据库
3.服务器上安装了多个SonarQube插件,可能包括语言,SCM,集成,身份验证和管理插件
4.在构建/持续集成服务器上运行一个或多个SonarScanner,以分析项目
SonarQube在CI中位置
以下架构显示了SonarQube如何与其他ALM工具集成以及使用SonarQube的各种组件的位置

说明:开发人员提交代码到SCM(代码管理平台),CI服务器会触发自动构建,并执行运行SonarQube分析所需的SonarScanner,并推送分析报告到SonarQube Server,数据存储到SonarQube配置的数据库。开发人员通过SonarQube UI评审,评论他们的问题,以管理和减少技术债务。并且经理从分析中接收报告。
Mac环境安装Sonar
Mac环境

12
复制代码
MacOS:10.15.5 java:1.8.0_111
复制代码
12
复制代码
MacOS:10.15.5 java:1.8.0_111
复制代码
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

环境配置大致分为以几个步骤
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目录下,建议重新命名删掉版本后缀。
如下图所示

3.配置环境变量
打开命令行工具

12
复制代码
cd ~/ open .bash_profile
复制代码
12
复制代码
cd ~/ open .bash_profile
复制代码
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
复制代码
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
复制代码
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
复制代码
1
复制代码
source ~/.bash_profile
复制代码
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
复制代码
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
复制代码
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
复制代码
1
复制代码
mysql Ver 14.14 Distrib 5.7.18, for macos10.12 (x86_64) using EditLine wrapper
复制代码
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;
复制代码
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;
复制代码
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 |+--------------------+
复制代码
12345
复制代码
+--------------------+| Database |+--------------------+| sonar |+--------------------+
复制代码
12345
复制代码
+--------------------+| Database |+--------------------+| sonar |+--------------------+
复制代码

Sonarqube目录下找到conf/sonar.properties文件,编辑文件加入对应数据库的配置。

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
复制代码
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
复制代码
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 版本,如下图所示

将下载下来的backelite-sonar-swift-plugin-0.4.6.jar,放到SonarQube/extensions/plugins/目录下,如图所示

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)
复制代码
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)
复制代码
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
复制代码
12
复制代码
# User configurationsource ~/.bash_profile
复制代码
12
复制代码
# User configurationsource ~/.bash_profile
复制代码

6.启动SonarQube server

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

浏览器输入http://localhost:9000/,可以看到管理台界面。如下图所示

输入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 从插件官网下图所示的地方下载:

到了最激动人心的时候了,我们cd到工程中。执行 sh run-sonar-swift.sh -v
执行完成,浏览器登录http://localhost:9000/,就可以看到如下结果

待研究和实践的事项

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

sonar不支持mysql_sonar-iOS的实践相关推荐

  1. block在美团iOS的实践

    说到block,相信大部分iOS开发者都会想到retain cycle或是__block修饰的变量. 但是本文将忽略这些老生常谈的讨论,而是将重点放在美团iOS在实践中对block的应用,希望能对同行 ...

  2. appium python框架结构,GitHub - wyybingo/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...

    0910 UPDATE 新增控件集参数化,相同测试步骤的Android/iOS可共用一份测试用例 不同测试步骤的用例还需要单独写 0904 UPDATE 优化Android log及crsahinfo ...

  3. 个推数据统计产品(个数)iOS集成实践

    2019独角兽企业重金招聘Python工程师标准>>> 最近业务方给我们部门提了新的需求,希望能一站式统计APP的几项重要数据.这次我们尝试使用的是个推(之前专门做消息推送的)旗下新 ...

  4. pythonwebview自动化测试_GitHub - githubwzg/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...

    0910 UPDATE 新增控件集参数化,相同测试步骤的Android/iOS可共用一份测试用例 不同测试步骤的用例还需要单独写 0904 UPDATE 优化Android log及crsahinfo ...

  5. iOS开发——设置支持的iOS设备(512m内存以上设备)

    问题: 最近在微博上看到iOS开发者遇到的设置支持的iOS设备问题,问题是这样的,有些apps在开发过程中会用到比较多的内存,比如需要512m的内存,因此需要设置不支持内存不足512m的设备. 1.请 ...

  6. unity3D埃及探险游戏源码,支持安卓+IOS双端 unity2019 C#语言开发

    unity3D埃及探险游戏源码,支持安卓+IOS双端 unity2019 C#语言开发.完整的源码可直接运营.拿来学习研究和二次开发都很不错. 源码下载 unity3D埃及探险游戏源码C#语言开发.完 ...

  7. 王者荣耀战力查询小程序源码下载-支持安卓ios微信和QQ战力查询支持打包成APP

    王者荣耀战力查询小程序源码下载-支持安卓ios微信和QQ战力查询支持打包成APP 该源码没有后台的也无需后台的,所以也就没有什么服务器和域名的烦恼和费用了 使用方法用HBuilder X软件打开文件然 ...

  8. cocos2dx+JAVA手游《全民挂机》全套源码支持安卓+IOS双端

    cocos2dx+JAVA手游<全民挂机>全套源码支持安卓+IOS双端,客户端用cocos2dx 2.2.3实现,服务端用java,支持安卓+IOS双端,一款很不错的挂机游戏源码! 源码下 ...

  9. Unity密室逃脱-逃离房间游戏源码.,支持安卓+IOS双端 unity2021 C#语言开发

    Unity密室逃脱-逃离房间游戏源码.,支持安卓+IOS双端 unity2021 C#语言开发.完整的源码可直接运营.拿来学习研究和二次开发都很不错. 源码下载 unity密室逃脱-逃离房间游戏源码C ...

  10. unity5.X简易的3d跑酷游戏源码。支持安卓+IOS双端 C#语言开发。

    unity5.X简易的3d跑酷游戏源码.支持安卓+IOS双端 C#语言开发.拿来学习研究和二次开发都很不错. 完整源码下载 unity5.X简易的3d跑酷游戏源码.支持安卓+IOS双端C#语言开发-U ...

最新文章

  1. 《精通Linux设备驱动程序开发》——1.5 Linux发行版
  2. elk-logstash时区问题
  3. android获取各种系统路径的方法
  4. Delphi中一些DLL的运用。
  5. matlab怎么编写数据处理程序,【悬赏--已结束】求编写一个基于Matlab的数据处理程序...
  6. 四针角oled屏连接arduino_和孩子一起做个显示温湿度的oled屏桌面摆件[青创小电视]...
  7. Windows网络编程获得本机IP地址
  8. npy文件的保存与读取
  9. 均值(average)与期望(mean)
  10. 苹果手机如何制作铃声
  11. 要做最快的男人,教你用Python写一个打字测试器测试你的打字速度~
  12. Linux 下压缩包解压后目录的权限问题
  13. UI设计中面性图标设计总结
  14. Java面试核心知识点(283页)Java面试题合集最新版(485页)
  15. 小私企老板的痛病通病
  16. 华为发布:30岁以下员工仅占28% 你信吗?
  17. 谷歌浏览器linux,windows下载
  18. 浏览器主页被hao.qq劫持
  19. Matlab中的FCM算法代码及中文详解
  20. 蚂蚁金融科技守护金融安全,蚂蚁风险大脑助阵 1

热门文章

  1. C语言程序打印命令,跪求C语言程序读ID3v1信息从mp3文件并打印出来。 1)使用命令行输入一个MP3档案名称。 2)判断档案名称的分...
  2. django开源电子文档管理系统_基于 Python 开发的在线文档系统
  3. tomcat https 启用8443加证书
  4. Saltstack远程执行命令(3)
  5. Ubuntu18 安装yum
  6. python中expandtabs()函数的用法
  7. ArrayList 类方法toArray的一点疑惑
  8. 2021-03-06JAVA大数据Week1
  9. 【Netty】Netty之Bootstrapping
  10. 手游的巨头时代,中小厂商该何去何从?