SonarQube的安裝和使用

1、SonarQube 介紹

SonarQube 是一個(gè)用于代碼質(zhì)量管理的開放平臺(tái)灼捂。通過插件機(jī)制离例,Sonar 可以集成不同的測試工具,代碼分析工具悉稠,以及持續(xù)集成工具宫蛆。

與持續(xù)集成工具(如 Hudson、Jenkins 等)不同的猛,Sonar 并不是簡單的把不同的代碼檢查工具結(jié)果(如 FindBugs耀盗、PMD 等)直接顯示在 Web 頁面上,而是通過不同的插件對(duì)這些結(jié)果進(jìn)行再加工處理卦尊,通過量化的方式度量代碼質(zhì)量的變化叛拷,從而可以方便地對(duì)不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。

在對(duì)其他工具的支持方面猫牡, Sonar 不僅提供了對(duì) IDE 的支持胡诗,可以在 Eclipse 和 IntelliJ IDEA 這些工具里聯(lián)機(jī)查看結(jié)果;同時(shí) Sonar 還對(duì)大量的持續(xù)集成工具提供了接口支持淌友,可以很方便的在持續(xù)集成中使用 Sonar。

此外骇陈,Sonar 的插件還可以對(duì) Java 以外的其他變成語言提供支持震庭,對(duì)國際化以及報(bào)告文檔化有良好的支持。

Sonar 的相關(guān)下載和文檔可以在下面的鏈接中找到:

http://www.sonarqube.org/downloads/

需要注意最新版本的 Sonar 需要至少 JDK 1.8 及以上版本你雌。

2器联、安裝 JDK

yum install -y java-1.8.0

3、安裝 SoanrQube

cd /usr/local/src
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.3.zip
unzip sonarqube-6.3.zip
mv sonarqube-6.3 /usr/local/
ln -s /usr/local/sonarqube-6.3 /usr/local/sonarqube

4婿崭、準(zhǔn)備 Sonar 數(shù)據(jù)庫

為 Sonar 準(zhǔn)備 MySQL 數(shù)據(jù)庫拨拓,版本必須大于 5.6。

4.1氓栈、下載 mysql 二進(jìn)制包

cd /usr/local/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz

4.2渣磷、創(chuàng)建 mysql 用戶

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

4.3、解壓 mysql 二進(jìn)制包

cd /usr/local/src
tar zxf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
 
 
mv mysql-5.6.30-linux-glibc2.5-x86_64 /usr/local
chown -R mysql:mysql /usr/local/mysql-5.6.30-linux-glibc2.5-x86_64
 
 
ln -s /usr/local/mysql-5.6.30-linux-glibc2.5-x86_64 /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql

4.4授瘦、初始化mysql

/usr/local/mysql/scripts/mysql_install_db \
    --defaults-file=/usr/local/mysql/my.cnf \
    --user=mysql --basedir=/usr/local/mysql \
    --datadir=/usr/local/mysql/data

4.5醋界、啟動(dòng) mysql

/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &

4.6、創(chuàng)建sonar數(shù)據(jù)庫

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar@pw';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar@pw';
FLUSH PRIVILEGES;

5提完、配置并啟動(dòng) Sonar

sonar 的配置文件主要是配置相關(guān)啟動(dòng)參數(shù)和數(shù)據(jù)庫的信息形纺,數(shù)據(jù)庫不需要初始化,Sonar 啟動(dòng)的過程中會(huì)自動(dòng)初始化徒欣。

# cd /usr/local/sonarqube/conf/
# ls
sonar.properties wrapper.conf

編寫配置文件逐样,修改數(shù)據(jù)庫配置

# vim sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar@pw
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

配置 Java 訪問數(shù)據(jù)庫驅(qū)動(dòng)

"""
默認(rèn)情況 Sonar 有自帶的嵌入數(shù)據(jù)庫,如果需要使用類似 Oracle 數(shù)據(jù)庫,必須手動(dòng)復(fù)制驅(qū)動(dòng) jar 包到 ${SONAR_HOME}/extensions/jdbc-driver/oracle 目錄下脂新,其他支持的數(shù)據(jù)庫默認(rèn)提供了驅(qū)動(dòng)秽澳。

其他數(shù)據(jù)庫的配置可以參考官方文檔:[http://docs.sonarqube.org/display/HOME/SonarQube+Platform](http://docs.sonarqube.org/display/HOME/SonarQube+Platform)
"""

啟動(dòng) Sonar,可以在 Sonar 的配置文件來配置 Sonar Web 監(jiān)聽的 IP 地址和端口戏羽,默認(rèn)是 9000 端口担神。

# vim sonar.properties
sonar.web.host=0.0.0.0
sonar.web.port=9000

啟動(dòng)

/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start

6、Sonar 插件使用

6.1始花、安裝中文插件

Sonar 和 Jenkins 一樣有豐富的插件妄讯,而且插件的安裝也比較簡單,這里使用 Sonar 中文支持的例子酷宵,介紹 Sonar 插件管理的兩種方法:
第一種方法:手動(dòng)下載插件到相應(yīng)目錄下

下載中文 jar 包到插件目錄下

cd /usr/local/sonarqube/extensions/plugins
wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.11/sonar-l10n-zh-plugin-1.11.jar

重啟 sonar

/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart

第二種方法:使用 Web 界面安裝插件

默認(rèn)密碼:admin / admin

配置→ 系統(tǒng) → 更新中心 → Available → 訓(xùn)責(zé) Chinese Pack亥贸。

6.2、安裝語言插件

默認(rèn)情況 SonarQube 安裝成功后只能分析 Java浇垦,如果想讓它分析其他語言需要安裝插件炕置,例如安裝常用的 Python、PHP男韧、CSS朴摊、JavaScript 等你需要的其他語言。如果由于網(wǎng)絡(luò)問題使用 Web 界面安裝插件失敗的化此虑,就可以使用第一種方式甚纲,手工下載插件,下載地址:

https://github.com/SonarQubeCommunity/


cd /usr/local/sonarqube/extensions/plugins/
wget https://sonarsource.bintray.com/Distribution/sonar-php-plugin/sonar-php-plugin-2.9.2.1744.jar
wget http://downloads.sonarsource.com/plugins/org/codehaus/sonar-plugins/python/sonar-python-plugin/1.5/sonar-python-plugin-1.5.jar
wget https://github.com/SonarQubeCommunity/sonar-css/releases/download/1.10/sonar-css-plugin.jar
 
 
 
# 重啟 Sonar
/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart

7朦前、使用 Sonar Scanner 進(jìn)行分析

7.1介杆、安裝 Sonar Scanner

cd /usr/local/src/
wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.6.1.zip
unzip sonar-scanner-2.6.1.zip
mv sonar-scanner-2.6.1 /usr/local/
ln -s /usr/local/sonar-scanner-2.6.1/ /usr/local/sonar-scanner

7.2、配置 Sonar Scanner

# vim /usr/local/sonar-scanner/conf/sonar-scanner.properties
 
 
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8

7.3韭寸、分析項(xiàng)目代碼

如果你要使用 Sonar Scanner 分析一個(gè)項(xiàng)目代碼春哨,需要在項(xiàng)目的根路徑下防止一個(gè)配置文件 sonar-project.properties ,這個(gè)配置文件用來描述項(xiàng)目的相關(guān)信息恩伺,如項(xiàng)目名稱赴背、版本等。

例子如下:http://docs.sonarqube.org/display/SONAR/Analysis+Parameters

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
 
# this is the name displayed in the SonarQube UI
sonar.projectName=My project
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

使用官方測試項(xiàng)目進(jìn)行實(shí)踐

官方為各種常用語言提供了代碼案例莫其,可以進(jìn)行測試 Sonar 的相關(guān)功能癞尚。

cd /usr/local/src
wget https://github.com/SonarSource/sonar-examples/archive/master.zip -O sonar-examples.zip
unzip sonar-examples.zip
cd sonar-examples-master/projects/languages/php/php-sonar-runner-unit-tests/
ls -lh

可以看到官方提供的案例中的 sonar-project.properties 的例子

cat sonar-project.properties

# Required metadata
sonar.projectKey=org.sonarqube:php-simple-sq-scanner
sonar.projectName=PHP :: Simple Project :: SonarQube Scanner
sonar.projectVersion=1.0
 
# Comma-separated paths to directories with sources (required)
sonar.sources=src
 
# Language
sonar.language=php
 
# Encoding of the source files
sonar.sourceEncoding=UTF-8
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者乱陡。
  • 序言:七十年代末浇揩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子憨颠,更是在濱河造成了極大的恐慌胳徽,老刑警劉巖积锅,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異养盗,居然都是意外死亡缚陷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門往核,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箫爷,“玉大人,你說我怎么就攤上這事聂儒』⒚” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵衩婚,是天一觀的道長窜护。 經(jīng)常有香客問我,道長非春,這世上最難降的妖魔是什么柱徙? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮奇昙,結(jié)果婚禮上护侮,老公的妹妹穿的比我還像新娘。我一直安慰自己敬矩,他們只是感情好概行,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弧岳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪业踏。 梳的紋絲不亂的頭發(fā)上禽炬,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音勤家,去河邊找鬼腹尖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伐脖,可吹牛的內(nèi)容都是我干的热幔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讼庇,長吁一口氣:“原來是場噩夢啊……” “哼绎巨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蠕啄,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤场勤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赏廓,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狠鸳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了留瞳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拒迅。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖她倘,靈堂內(nèi)的尸體忽然破棺而出璧微,到底是詐尸還是另有隱情,我是刑警寧澤帝牡,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布往毡,位于F島的核電站,受9級(jí)特大地震影響靶溜,放射性物質(zhì)發(fā)生泄漏开瞭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一罩息、第九天 我趴在偏房一處隱蔽的房頂上張望嗤详。 院中可真熱鬧,春花似錦瓷炮、人聲如沸葱色。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苍狰。三九已至,卻和暖如春烘绽,著一層夾襖步出監(jiān)牢的瞬間淋昭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工安接, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翔忽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓盏檐,卻偏偏與公主長得像歇式,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胡野,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容