前言
在一个团队开发中,每个人的代码质量良莠不齐,因此我们需要把握好代码质量的关。这个往往决定这个团队的开发维护效率。如果使用不同风格的,不严谨的代码,在后续业务扩大,成员增多时会直接导致维护的高成本。每个团队都拥有自己的一套代码检查方式。对于小团队往往会选择一些开源的工具,本文主要介绍Mac
环境下Sonarqube的安装以及Objective-C
团队开发中,代码质量的把关,往往决定了一个团队的开发维护效率。成员的增长,业务的扩大,不同风格、不严谨的代码,直接导致后续维护的高成本。本篇介绍Mac
上Sonarqube
的安装以及添加Objective-C
、Swift
支持。
准备
Sonarqube
从7.9
版本开始不支持MySql
,所以在Sonarqube-7.9
版本中使用Postgresql
数据库,后面也会区分两种方式进行配置。
下载
- JDK 11+
- Sonar7.9 ,使用社区版本
- Sonar-scanner
- MySql:支持
5.6
<=version
<8.0
- PostgreSQL,支持
9.3->9.6
、10.0
版本
相关资源密码:x9g3
配置JDK
下载所需JDK
并且安装;
方式一:
Vim编辑
.bash_profile
-
编辑JDK环境变量:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home PATH=$JAVA_HOME/bin:$PATH:. CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:. export JAVA_HOME export PATH export CLASSPATH
退出
esc
编辑模式,保存wq
并退出,接着输入source .bash_profile
使修改生效。
方式二:
直接到`.bash_profile`文件下编辑`.bash_profile`文件,编辑内容为方式一下的内容。
注意⚠️:
完成在终端输入java -version
查看相应结果。
//会输出类似信息表示安装成功
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
安装MySql
-
下载的
MySql
安装完毕后,在系统偏好设置
中启动MySql
。注意⚠️:
MySql
的初始密码安装完会显示在系统的通知栏,注意记录下方便后面修改密码; -
在环境变量中添加,然后通过
source .bash_profile
使其生效。PATH=$PATH:/usr/local/mysql/bin
-
通过终端输入,然后输入密码进入
MySql
。mysql -u root -p
-
输入以下命令修改
root
密码,最后重启MySql;ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
安装PostgreSQL
下载好的安装包安装完成,用户名为postgres
,在安装过程中记住输入的密码; 在Mac
的Launcher
中启动PgAdmin
登录新建一个数据库,名字记住,后面在sonarqube
中会用到;
安装 Sonarqube
下载好的压缩包解压出来的文件夹放到你想放到的位置,然后打开终端,进入到此文件夹下的bin/macosx-universal-64
目录下,输入命令:
sonar.sh start
然后打开浏览器进入localhost:9000就可以看到Sonarqube
主页。
配置数据库
这里为 Sonarqube 配置 MySql 或者 postgreSQL。
-
到刚刚安装
Sonarqube
的Sonar
文件夹目录下,找到conf/sonar.properties
文件,编辑文件加入对应数据库的配置。MySql
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=修改为自己的密码
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
**PostgreSQL**
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=public
sonar.jdbc.username=postgres
sonar.jdbc.password=你的密码
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
-
完成
Sonar
配置后,重启Sonar
。到Sonar
文件夹bin/macosx-universal-64
目录下运行下方命令,完成后打开localhost:9000查看。sonar.sh restart
# 主要命令一览, 建议添加alias到~/.bash_profile
./sonar.sh console #Debug信息
./sonar.sh start #启动服务
./sonar.sh stop #停止服务
./sonar.sh restart #重启服务
安装 Sonar-scanner
下载的文件解压或者直接移动到你的目标文件夹,配置环境变量(放置在原有Path变量前面):
SONAR_RUNNER_HOME=你的sonar-scanne文件价夹路径
PATH=$PATH:$SONAR_RUNNER_HOME/bin
然后通过source .bash_profile
使其生效。然后通过命令sonar-scanner -v
查看版本信息。
使用
在待扫描项目的根目录新建一个sonar-project.properties
(注意⚠️命名不要错)文件,并输入以下信息:
# 项目标识,多个项目一定要改此值来区分
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=xibaoxiaoandroid
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=带扫描项目路径
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
#如果扫描Java项目,此项是必须配置的
sonar.java.binaries=target/classes
保存完以后再待扫描根目录下执行命令,扫描完成后,在localhost:9000中查看到扫描结果。
sonar-scanner
检查 Objective-C、Swift 环境下运行
配置需要文件:sonar-swift
OCLint 安装与使用
sonarqube
对Objective-C
、Swift
的代码检测,需要依赖OCLint
对Xcode
工程的编译log
的分析结果。简单说下过程,对Xcode
工程进行xcodebuild
,输出编译log
,OCLint
对编译log
进行分析,输出xml
,sonarqube
根据xml
来显示可视化结果。
OCLint is a static code analysis tool for improving quality and reducing defects by inspecting C, C++ and Objective-C code and looking for potential problems.
OCLint
安装方式见OCLint官网。
-
Homebrew
简单,但可能外网连不上 - 推荐直接
download
包,解压执行文件路径加入$PATH
具体安装所需文件可以参照sonar-swift的要求。