Mac环境下配置Sonarqube与Sonar-scanner

前言

在一个团队开发中,每个人的代码质量良莠不齐,因此我们需要把握好代码质量的关。这个往往决定这个团队的开发维护效率。如果使用不同风格的,不严谨的代码,在后续业务扩大,成员增多时会直接导致维护的高成本。每个团队都拥有自己的一套代码检查方式。对于小团队往往会选择一些开源的工具,本文主要介绍Mac环境下Sonarqube的安装以及Objective-C
团队开发中,代码质量的把关,往往决定了一个团队的开发维护效率。成员的增长,业务的扩大,不同风格、不严谨的代码,直接导致后续维护的高成本。本篇介绍MacSonarqube的安装以及添加Objective-CSwift支持。

准备

Sonarqube7.9版本开始不支持MySql,所以在Sonarqube-7.9版本中使用Postgresql数据库,后面也会区分两种方式进行配置。

下载

  1. JDK 11+
  2. Sonar7.9 ,使用社区版本
  3. Sonar-scanner
  4. MySql:支持 5.6 <= version < 8.0
  5. PostgreSQL,支持9.3->9.610.0版本

相关资源密码:x9g3

配置JDK

下载所需JDK并且安装;

方式一:

  1. Vim编辑.bash_profile

  2. 编辑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
    
  3. 退出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

  1. 下载的MySql安装完毕后,在系统偏好设置中启动MySql

    注意⚠️:MySql的初始密码安装完会显示在系统的通知栏,注意记录下方便后面修改密码;

  2. 在环境变量中添加,然后通过source .bash_profile使其生效。

     PATH=$PATH:/usr/local/mysql/bin
    
  3. 通过终端输入,然后输入密码进入MySql

     mysql -u root -p
    
  4. 输入以下命令修改root密码,最后重启MySql;

     ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
    

安装PostgreSQL

下载好的安装包安装完成,用户名为postgres,在安装过程中记住输入的密码; 在MacLauncher中启动PgAdmin登录新建一个数据库,名字记住,后面在sonarqube中会用到;

安装 Sonarqube

下载好的压缩包解压出来的文件夹放到你想放到的位置,然后打开终端,进入到此文件夹下的bin/macosx-universal-64目录下,输入命令:

sonar.sh start

然后打开浏览器进入localhost:9000就可以看到Sonarqube主页。

配置数据库

这里为 Sonarqube 配置 MySql 或者 postgreSQL。

  1. 到刚刚安装SonarqubeSonar文件夹目录下,找到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
  1. 完成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 安装与使用

sonarqubeObjective-CSwift的代码检测,需要依赖OCLintXcode工程的编译log的分析结果。简单说下过程,对Xcode工程进行xcodebuild,输出编译logOCLint对编译log进行分析,输出xmlsonarqube根据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官网

  1. Homebrew简单,但可能外网连不上
  2. 推荐直接download包,解压执行文件路径加入$PATH

具体安装所需文件可以参照sonar-swift的要求。

运行扫描结果
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容