iOS-SonarQue——安装及使用

传送门

Demo源码:https://gitee.com/hcsaaron/cssonar-demo

当前文章:《iOS-SonarQue——安装及使用》

《iOS-SonarQue——展示OCLint分析结果》

《iOS-SonarQue——使用slather生成覆盖率报告》

系统环境

Mac OS 10.15.6

必要条件

运行SonarQube的唯一前提条件是在计算机上安装Java(Oracle JRE 11或OpenJDK 11),即JDK 11

数据库支持 PostgreSQL(推荐)、Microsoft SQL Server、Oracle

安装JDK

到Oracle官网-Java SE Downloads 下载JDK 11(访问Oracle官网速度很慢,花钱买了个VPN,速度杠杠的~)

安装成功后可以在/Library/Java/JavaVirtualMachines看到jdk-11.0.10.jdk

再在终端上执行java --version,可以看到当前JDK版本信息

java 11.0.10 2021-01-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.10+8-LTS-162)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.10+8-LTS-162, mixed mode)

安装PostgreSQL

使用PostgreSQL,必须配置为使用UTF-8字符集。

If you want to use a custom schema and not the default "public" one, the PostgreSQL search_path property must be set:
ALTER USER mySonarUser SET search_path to mySonarQubeSchema

PostgreSQL macOS packages 这里介绍了几种安装PostgreSQL的方式,我选择了安装Postgres.app

Postgres.app是一个简单的本机macOS应用程序,无需安装程序即可在菜单栏中运行。打开应用程序,您已经准备好了PostgreSQL服务器并正在等待新的连接。关闭应用程序,然后服务器关闭。

安装完成后,为了在终端使用psql命令,需要配置环境路径。

  • 终端执行打开~/.bash_profile
  • 添加export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/13/bin
  • 保存后终端执行source ~/.bash_profile使设置生效。

现在可以在终端执行psql --version,显示如下说明设置成功:

psql (PostgreSQL) 13.2

如果想要图形界面客户端,可以下载安装 pgAdmin 4

配置数据库

首先使用postgres用户登录数据库

psql postgres

然后创建用户sonar并设置密码,这里的密码你可以填写自己的密码

CREATE USER sonar WITH PASSWORD 'sonar';

创建属于用户sonar的数据库sonar

CREATE DATABASE sonar OWNER sonar;

给sonar用户加上添加数据库的权限

ALTER ROLE sonar CREATEDB;

安装SonarQue

下载并解压 SonarQube 8.8 到任意位置(不可解压到以数字开头的目录中),下面用$SONARQUBE-HOME表示sonarqube的目录位置。

编辑$SONARQUBE-HOME/conf/sonar.properties以配置数据库设置:

sonar.jdbc.url=jdbc:postgresql://localhost/sonar
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

接下来cd$SONARQUBE-HOME/bin/macosx-universal-64,执行以下命令来启动SonarQue:

./sonar.sh console

SonarQube常用命令:
./sonar.sh console #Debug信息
./sonar.sh start #启动服务
./sonar.sh stop #停止服务
./sonar.sh restart #重启服务

SonarQube启动成功,在浏览器打开http://localhost:9000,登录SonarQube,默认账号密码为admin,登录成功后会提示修改密码。

iOS-SonarQue——安装及使用_第1张图片
SonarQube登录进来是长这个样子的

SonarQue汉化

Administration - Plugins - 搜索 Chinese Pack - Install - 重启SonarQue

iOS-SonarQue——安装及使用_第2张图片
安装中文插件

下载Sonar-Scanner

  • 命令行下载:
brew install sonar-scanner

下载完成后,执行sonar-scanner --version查看版本信息:

INFO: Scanner configuration file: /usr/local/Cellar/sonar-scanner/4.4.0.2170/libexec/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.4.0.2170
INFO: Java 11.0.10 Oracle Corporation (64-bit)
INFO: Mac OS X 10.15.6 x86_64
  • 下载zip
    进入SonarScanner 选择 Mac OS X 64-bit下载zip并解压,需要将该目录下的bin目录加到系统的环境变量PATH中,以便在命令行中可以访问sonar-scanner命令。

Sonar-Scanner 简单使用

使用SonarQube分析是非常简单的。只需要在你的项目目录下执行如下命令(自行修改相关值):

sonar-scanner \
  -Dsonar.projectKey=projectKey \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=authenticationToken

Sonar-Scanner 配置参数再使用

为了避免每次执行命令都输入一大堆参数,我们将相关参数配置在配置文件中。

1) 配置全局设置

在SonarScanner的安装目录中找到/conf/sonar-scanner.properties,通过编辑更新全局设置:

#----- Default SonarQube server
#sonar.host.url=http://localhost:9000

#----- Default source code encoding
#sonar.sourceEncoding=UTF-8

#----- 登录账号密码
sonar.login=admin
sonar.password=xxxx
2) 配置项目参数

在项目的根目录中创建一个配置文件,名为sonar-project.properties,配置项目设置(自行调整相关参数值):

sonar.projectKey=CSSonarDemo
#sonar.projectName=CSSonarDemo
sonar.projectVersion=1.0
sonar.language=objc
sonar.sources=CSSonarDemo
sonar.tests=CSSonarDemoTests
sonar.projectDescription=测试SonarQube扫描的demo
sonar.login=xxxx

其中sonar.login=xxxx需替换为你SonarQube后台创建项目时创建的令牌:

iOS-SonarQue——安装及使用_第3张图片
SonarQube后台新建项目-创建令牌

iOS-SonarQue——安装及使用_第4张图片
创建令牌后会生成对应的标识符,将其写入sonar-project.properties
3) 启动分析

便可从项目目录运行以下命令以启动分析:

sonar-scanner

分析后的项目会自动出现在SonarQube服务器中

iOS-SonarQue——安装及使用_第5张图片

安装其他工具

  • 安装OCLint(代码分析工具,可查看之前写的《OCLint学习》)
brew tap oclint/formulae
brew install oclint
  • 安装xcpretty(增加xcodebuild输出的可读性)
gem install xcpretty
  • 安装lizard(复杂度检测工具)
sudo pip install lizard

我这边提示:

-bash: pip: command not found

改用以下命令:

sudo pip3 install lizard

补充:SonarQue启动失败原因

  1. JDK版本太低
    前面也有说到,SonarQue需要JDK 11,否则可以在日志中找到如下错误信息:
SonarQube requires Java 11 to run
  1. JDK版本不支持
    刚开始我下载 Java SE 16 和 Java SE 15 都不行,可以在日志中看到下错误信息,最后下载了 Java SE 11 (LTS) 才可以(不知所以然)。
jvm 1    | Error: Could not create the Java Virtual Machine.
jvm 1    | Error: A fatal exception has occurred. Program will exit.
  1. 端口被占用
    家里电脑启动SonarQube发现端口9001被占用,需要在sonar.properties修改以下默认配置:
sonar.search.port=9001
http.nonProxyHosts=127.0.0.1

lsof -i:查看端口是否被占用:

lsof -i:9001

没有被占用则不输出任何信息,如果被占用则输出相关信息:

COMMAND  PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    9736 huangchusheng  119u  IPv6 0xdac165cd4bdf31c1      0t0  TCP localhost:etlservicemgr (LISTEN)

参考资料

SonarQube Documentation 官方文档,了解更多SonarQube的使用

使用SonarQube 8.1静态检查OC代码质量

你可能感兴趣的:(iOS-SonarQue——安装及使用)