架构与整合(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...
待钻研和实际的事项
- 自定义扫描规定 如何新增规定
- sonarQube部署在一台服务器(lunix)上,而SonarScanner在另外一台服务器(mac os)上,并尝试应用Docker装置。
- 示范视频(Demonstration video)