美文网首页SonarQube
iOS-SonarQue——安装及使用

iOS-SonarQue——安装及使用

作者: Aaron升 | 来源:发表于2021-04-09 01:28 被阅读0次

    传送门

    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 ServerOracle

    安装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,登录成功后会提示修改密码。

    SonarQube登录进来是长这个样子的

    SonarQue汉化

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

    安装中文插件

    下载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后台创建项目时创建的令牌:

    SonarQube后台新建项目-创建令牌 创建令牌后会生成对应的标识符,将其写入sonar-project.properties
    3) 启动分析

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

    sonar-scanner
    

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

    安装其他工具

    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——安装及使用

        本文链接:https://www.haomeiwen.com/subject/iytpkltx.html