Windows系統(tǒng)配置SonarQube本地服務(wù)

Windows系統(tǒng)配置SonarQube本地服務(wù)

SonarQube簡介

SonarQube

SonarQube 是一個用于管理源代碼質(zhì)量開放平臺践樱,可以從多個維度檢測代碼質(zhì)量,快速的定位代碼中潛在的或者明顯的 Bug凸丸、錯誤拷邢,提供重復(fù)代碼、編碼標(biāo)準(zhǔn)屎慢、單元測試瞭稼、代碼覆蓋率、代碼復(fù)雜度腻惠、潛在Bug环肘、注釋和軟件設(shè)計報告。支持包括 Java集灌、Python悔雹、Php峻厚、C/C++侨把、C#、HTML情组、JavaScript续誉、PL/SQL莱没、Objective C 等二十多種編程語言的代碼質(zhì)量管理與檢測。通過插件機(jī)制酷鸦,SonarQube可以繼承不同的測試工具饰躲,代碼分析工具,以及持續(xù)集成工具臼隔∴诹眩可與IDE(如:Eclipse、IDEA等)集成使用摔握。

SonarQube 并不是簡單地直接將各種質(zhì)量檢測工具(例如 FindBugs寄狼,PMD 等)的結(jié)果展現(xiàn)給客戶,而是通過不同的插件算法來對這些結(jié)果進(jìn)行再加工,最終以量化的方式來衡量代碼質(zhì)量泊愧,從而方便地對不同規(guī)模和種類的工程進(jìn)行相應(yīng)的代碼質(zhì)量管理伊磺。更多相關(guān)介紹不在此贅述。


SonarQube架構(gòu)

引用SonarQube官網(wǎng)提供的架構(gòu)圖删咱,


SonarQube 架構(gòu)

通過圖中描述整個SonarQube的分析分為幾個部分:

  • 待分析的項目源代碼
  • SonarQube Scanner 源代碼分析工具
  • SonarQube Server 提供服務(wù)屑埋,用來提供分析報表及解決方法
  • SonarQube Database 相關(guān)分析數(shù)據(jù)的持久化存儲

本文則根據(jù)主要描述,記錄本地Windows下SonarQube Server及Databse的配置痰滋。主要環(huán)境如下:

  • Windows 10
  • SonarQube 6.7 LTS
  • MySQL 5.7.21
  • JDK1.8.0_152
  • Maven 3.5.3

SonarQube服務(wù)環(huán)境配置

基本環(huán)境要求

本文使用的版本為 SonarQube 6.7.5 LTS , 官方下載地址摘能。安裝的基本要求如下:

  • 運行SonarQube的唯一先決條件是在您的計算機(jī)上安裝Java(Oracle JRE 8或OpenJDK 8
  • SonarQube服務(wù)器需要至少2GB的RAM才能有效運行
  • 需要的磁盤空間量取決于使用SonarQube分析的代碼量
  • MySQL 5.6 +,僅支持InnoDB存儲引擎敲街,但不支持MyISAM
  • 要獲得SonarQube提供的完整體驗团搞,必須在瀏覽器中啟用JavaScript,IE11+多艇,其他瀏覽器建議最新版本

更多環(huán)境要求逻恐,見官方文檔官方,詳見峻黍。
另梢莽,需要分析Maven項目時,需要本地下載配置Maven奸披,版本Maven 3.0+昏名。


SonarQube環(huán)境配置

官網(wǎng)下載SonarQube后,解壓到任意目錄(建議阵面,非中文目錄)轻局,目錄結(jié)構(gòu)大致如下:

SonarQube 目錄結(jié)構(gòu)

各目錄作用如下:

  • bin 此目錄放置各操作系統(tǒng)(LInux、Windows样刷、MacOS)用于啟動 SonarQube 服務(wù)的工具仑扑、腳本;
  • conf 此目錄存放SonarQube相關(guān)配置文件置鼻;
  • data 此目錄包含嵌入式數(shù)據(jù)庫(H2數(shù)據(jù)庫引擎)的數(shù)據(jù)镇饮,建議只用于測試和演示;
  • elasticsearch 此目錄放置elasticsearch檢索引擎相關(guān)內(nèi)容箕母;
  • extensions 此目錄存放SonarQube的插件储藐、 擴(kuò)展jar 包;
  • lib 此目錄存放SonarQube所依賴的 jar 包嘶是;
  • logs 此目錄存放SonarQube相關(guān)日志信息钙勃;
  • tmp此目錄包含服務(wù)器所需的臨時數(shù)據(jù),服務(wù)器啟動時不要清理聂喇;
  • web 此目錄存放 SonarQube web 服務(wù)的靜態(tài)資源辖源。

SonarQube服務(wù)數(shù)據(jù)庫配置

SonarQube 支持大多數(shù)主流關(guān)系型數(shù)據(jù)庫(例如 Microsoft SQL Server, MySQL, Oracle, PostgreSQL 等),默認(rèn)使用H2數(shù)據(jù)庫,可以直接運行啟動,此處配置MySQL數(shù)據(jù)庫克饶。

  1. MySQL創(chuàng)建數(shù)據(jù)庫

     CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
    
  2. 分配用戶及權(quán)限

     
         CREATE USER 'sonar' IDENTIFIED BY 'sonar';
         GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; 
         GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
      FLUSH PRIVILEGES;
      
    
  3. 修改SonarQube配置文件
    找到 ..\sonarqube-6.7.5\conf 目錄下的 sonar.properties酝蜒,首先搜索 # User credentials. 配置JDBC連接的用戶名及密碼(此處為上步創(chuàng)建的用戶):

     sonar.jdbc.username=sonar
     sonar.jdbc.password=sonar
     
    

    搜索 MySQL 5.6 or greater ,配置數(shù)據(jù)庫鏈接 URL :

     sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    
    

    到此完成了 MySQL 的簡單配置

    SonarQube 配置MySQL

注意: SonarQube支持的為InnoDB引擎矾湃,可以在MySQL配置文件內(nèi)的 [mysqld] 下配置 default-storage-engine=INNODB 來實現(xiàn)創(chuàng)建的表默認(rèn)使用 InnoDB 引擎秕硝。


啟動服務(wù)

在目錄 ..\sonarqube-6.7.5\bin\windows-x86-64 下,雙擊 StartSonar.bat 啟動服務(wù)洲尊,出現(xiàn) [o.s.a.SchedulerImpl] Process[es] is up 提示時,表示 elasticsearch 啟動成功

SonarQube 服務(wù)啟動

此時奈偏,可以在瀏覽器內(nèi)訪問 http://localhost:9000 來登陸SonarQube管理頁面 (注意坞嘀,運行期間不要關(guān)閉命令行

enter description here

首次啟動時,會在配置MySQL數(shù)據(jù)庫內(nèi)生成相關(guān)的表及初始化數(shù)據(jù)

SonarQube 數(shù)據(jù)庫初始化

到此SonarQube服務(wù)啟動成功惊来,如想修改訪問端口等內(nèi)容丽涩,在 ..\sonarqube-6.7.5\conf\sonar.properties文件內(nèi)修改。

在目錄 ..\sonarqube-6.7.5\bin\windows-x86-64 下可以看到多個bat批處理文件

  • InstallNTService.bat 安裝sonarqube為系統(tǒng)服務(wù)
  • StartNTService.bat 啟動sonarqube系統(tǒng)服務(wù)
  • StartSonar.bat 命令行啟sonarqube服務(wù)(關(guān)閉命令行即關(guān)閉服務(wù))
  • StopNTService.bat 停止sonarqube系統(tǒng)服務(wù)
  • UninstallNTService.bat 卸載sonarqube系統(tǒng)服務(wù)

為了方便裁蚁,且防止命令行意外關(guān)閉導(dǎo)致服務(wù)停止等情況矢渊,可以通過管理員方式運行 InstallNTService.bat ,將SonarQube服務(wù)添加到系統(tǒng)服務(wù)中枉证, 或使用 sc 命令自行添加矮男。如出現(xiàn)服務(wù)添加到系統(tǒng)服務(wù)后,啟動立即停止的情況室谚,則通過查看 ..\sonarqube-6.7.5\log 目錄下的日志來查看問題毡鉴,如無日志,嘗試卸載服務(wù)秒赤,嘗試使用 sc 命令添加服務(wù)猪瞬。更多 sc 命令內(nèi)容參看百度百科


插件安裝

啟動服務(wù)后,可以在SonarQube管理頁面的應(yīng)用市場內(nèi)添加需要的插件入篮,如漢化包陈瘦、代碼分析插件:

  • Chinese Pack 漢化包插件
  • Findbugs
  • Checkstyle
  • PMD

服務(wù)頁面點擊登陸,輸入用戶名密碼 潮售,默認(rèn)為 admin / admin痊项, 默認(rèn)密碼可以在 ..\sonarqube-6.7.5\conf\sonar.properties文件內(nèi)修改。

首次登陸賬號酥诽,會提示配置分析的項目及token线婚,可跳過

SonarQube 首次啟動配置
SonarQube 首次啟動配置2

配置完成后,點擊 Finish..盆均,進(jìn)入操作頁面

SonarQube 操作頁面

下面安裝 Chinese Pack (漢化包)塞弊,演示插件安裝。

導(dǎo)航欄選擇 Administration跳轉(zhuǎn)到Administration頁面,選擇 Marketplace 進(jìn)入應(yīng)用市場

SonarQube 安裝漢化包

安裝完成后游沿,出現(xiàn)類似如下提示饰抒,點擊 restart 重啟服務(wù)即可

SonarQube 安裝完成提示

等待幾秒鐘,服務(wù)會自動重啟诀黍,重新登錄后袋坑,可以看到漢化結(jié)果

SonarQube 漢化結(jié)果

其他插件安裝類似如上操作,根據(jù)需要選擇安裝即可眯勾。


安裝相關(guān)問題記錄及處理

啟動服務(wù)時枣宫,提示 “Unable to start JVM”

出現(xiàn)類似提示時,可以嘗試在文件 ..\sonarqube-6.7.5\conf\wrapper.conf 中添加Java JDK的路徑吃环,一般正常配置了Java環(huán)境變量也颤,此處不需要配置。

SonarQube Java JDK問題

啟動服務(wù)時郁轻,提示“另一個程序正在使用此文件翅娶,進(jìn)程無法訪問『梦ǎ”

啟動服務(wù)時竭沫,出現(xiàn)類似提示,是由于 Java(TM) Platform SE binary此后臺進(jìn)程沒有關(guān)閉骑篙,導(dǎo)致jar包被加載占用蜕提,無法訪問。

SonarQube Java后臺占用

此時使用任務(wù)管理器靶端,關(guān)閉對應(yīng)進(jìn)程即可贯溅。

SonarQube Java后臺占用問題處理

漢化包插件安裝失敗

安裝漢化包,重啟后躲查,一直重啟狀態(tài)它浅,或出現(xiàn)其他錯誤提示,可以嘗試在 此處 下載對應(yīng)SonarQube版本的漢化包镣煮,下載完成后姐霍,提取jar包,放置到目錄 ..\sonarqube-6.7.5\extensions\plugins 下典唇,重啟服務(wù)即可镊折。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市介衔,隨后出現(xiàn)的幾起案子恨胚,更是在濱河造成了極大的恐慌,老刑警劉巖炎咖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃泡,死亡現(xiàn)場離奇詭異寒波,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)升熊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門俄烁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人级野,你說我怎么就攤上這事页屠。” “怎么了蓖柔?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵辰企,是天一觀的道長。 經(jīng)常有香客問我况鸣,道長牢贸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任懒闷,我火速辦了婚禮,結(jié)果婚禮上栈幸,老公的妹妹穿的比我還像新娘愤估。我一直安慰自己,他們只是感情好速址,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布玩焰。 她就那樣靜靜地躺著,像睡著了一般芍锚。 火紅的嫁衣襯著肌膚如雪昔园。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天并炮,我揣著相機(jī)與錄音默刚,去河邊找鬼。 笑死逃魄,一個胖子當(dāng)著我的面吹牛荤西,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伍俘,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼邪锌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了癌瘾?” 一聲冷哼從身側(cè)響起觅丰,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妨退,沒想到半個月后妇萄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕企,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年嚣伐,在試婚紗的時候發(fā)現(xiàn)自己被綠了糖赔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡轩端,死狀恐怖放典,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情基茵,我是刑警寧澤奋构,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站拱层,受9級特大地震影響弥臼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜根灯,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一径缅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烙肺,春花似錦纳猪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搏明,卻和暖如春鼠锈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背星著。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工购笆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虚循。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓由桌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親邮丰。 傳聞我的和親對象是個殘疾皇子行您,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

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