代碼質(zhì)量分析工具SonarQube的安裝使用见芹、漢化、數(shù)據(jù)庫配置

之前用過Coding.net的代碼質(zhì)量分析功能蠢涝,實用強(qiáng)大玄呛,但是最近突然找不到這個功能了(坑!)和二。。惯吕。
雖然官網(wǎng)上仍然把代碼質(zhì)量分析當(dāng)一個主要功能介紹惕它,但找不到任何相關(guān)的文檔和說明,就好像這個功能消失了一樣(WHAT废登?淹魄?)。堡距。甲锡。
聯(lián)系客服也毫無回應(yīng)(什么情況兆蕉??)搔体。恨樟。。

我們的需求是疚俱,找一個能夠統(tǒng)計代碼注釋率劝术,分析代碼質(zhì)量,適用于多種編程語言的工具呆奕。試用了幾個最后確定用SonarQube养晋。

接下來介紹

  • 如何使用 SonarQube 分析本地的項目
  • 如何安裝漢化包
  • 如何更改數(shù)據(jù)庫配置

安裝和使用

首先,到官網(wǎng)下載最新版本梁钾。我下載的是V7.0绳泉。
然后按照Get Started in Two Minutes啟動 SonarQube 服務(wù)器:

  • 解壓(放哪兒都行)
  • windows:在解壓后的文件夾中,找到bin目錄姆泻,選擇系統(tǒng)零酪,比如我選的windows-x86-64,然后直接雙擊 StartSonar.bat啟動服務(wù)器拇勃。
  • 打開頁面 http://localhost:9000
  • 點擊頁面上的Log in按鈕登錄四苇,賬號密碼都是admin

怎么分析項目呢方咆?

第一次登錄會看到 Tutorial月腋,按照提示設(shè)置用于驗證身份的token。生成的token需要復(fù)制記下來瓣赂!不會再顯示第二次榆骚!在用戶 > 我的賬戶 > 安全中可以生成新token(令牌),或者回收已創(chuàng)建的 token煌集。

如果想強(qiáng)化安全妓肢,不想在執(zhí)行代碼掃描或調(diào)用Web Service時使用真實SonarQube用戶的密碼,可以使用用戶令牌來代替用戶登錄苫纤。這樣可以通過避免把分析用戶的密碼在網(wǎng)絡(luò)傳輸碉钠,從而提升安全性。

然后選擇要分析的項目的主要語言以及當(dāng)前操作系統(tǒng)方面,然后定義用于標(biāo)識項目的key放钦。

然后會提示下載安裝掃描器。并修改環(huán)境變量恭金。比如windows需要將掃描器的bin目錄添加至%PATH%環(huán)境變量操禀。當(dāng)然,掃描器以后就不需要再下載了横腿。

接下來就可以掃描項目了颓屑。按照說明斤寂,復(fù)制命令,在要分析的項目目錄下執(zhí)行揪惦。比如我的命令是這樣的:

sonar-scanner.bat -Dsonar.projectKey=myproject -Dsonar.sources=. -Dsonar.host.url=http://localhost:9000 -Dsonar.login=(已創(chuàng)建的token)
分析完成

看到這些輸出就說明分析完成了遍搞,頁面 http://localhost:9000 此時會自動刷新,然后就可以查看分析結(jié)果了器腋。

配置項目的掃描器參數(shù)
重新掃描只需要再次執(zhí)行上面的命令溪猿。但是每次都執(zhí)行這么長的命令很麻煩啊。還好掃描器是可以配置的纫塌。
只需要在要分析的目錄下诊县,創(chuàng)建一個文件sonar-project.properties。內(nèi)容如下:

# your authentication token
sonar.login=[之前生成的token]

# must be unique in a given SonarQube instance
sonar.projectKey=[項目key]
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=[項目名稱]
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set. 
# Comma-separated paths to directories containing source files.
# 限定要分析的路徑
sonar.sources=.

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

# Set the language of the source code to analyze
# 限定要分析的代碼語言措左,比如js依痊。
# 不設(shè)置則默認(rèn)分析多種語言
sonar.language = js

然后在文件sonar-project.properties所在目錄下,也就是要分析的目錄下怎披,啟動掃描器胸嘁。比如windows上,運行sonar-scanner.bat凉逛。
關(guān)于掃描器更多的參數(shù)配置查看:Analysis Parameters性宏。

新建項目分析
頁面上找到Administration > Projects,點擊右上角按鈕create project鱼炒。

漢化

分析結(jié)果出來了但還是有點懵衔沼?不知道具體含義蝌借?
安裝漢化包試試:頁面上找到Administration > Marketplace昔瞧,在搜索框中輸入chinese,出現(xiàn)一個Chinese Pack菩佑,點擊右側(cè)的install按鈕自晰。
安裝成功后,會提示重啟 SonarQube 服務(wù)器稍坯。
稍等一會酬荞,再看頁面上已經(jīng)顯示中文了。

配置數(shù)據(jù)庫

這時候頁面底部會提示瞧哟,嵌入數(shù)據(jù)庫適用于測試環(huán)境混巧。以后不能遷移數(shù)據(jù)到別的數(shù)據(jù)庫服務(wù)器了。另外也不能升級 SonarQube 的版本了勤揩。

SonarQube 默認(rèn)數(shù)據(jù)庫為 h2咧党。我們可以配置成別的數(shù)據(jù)庫,比如MySQL陨亡,Oracle等等傍衡。

舉例MySQL深员,配置步驟:

  1. 首先確保已安裝數(shù)據(jù)庫,并啟動服務(wù)器蛙埂。

  2. 連接mysql:mysql -u root -p

  3. 為 SonarQube 創(chuàng)建數(shù)據(jù)庫:

    CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
    CREATE USER 'sonar' IDENTIFIED BY 'password';
    GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'password';
    GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    
  4. 修改 SonarQube 的配置文件倦畅,在解壓后的目錄中,修改conf\sonar.properties文件绣的,添加三行配置叠赐,或者找到注釋中的默認(rèn)設(shè)置,取消注釋,再修改拦赠。:

    # 連接 mysql 數(shù)據(jù)庫的用戶名宽菜,密碼
    sonar.jdbc.username=root
    sonar.jdbc.password=123456
    # 上一步創(chuàng)建的數(shù)據(jù)庫的 url
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    
    

    不同數(shù)據(jù)庫設(shè)置不同,在注釋中有提示谈山,比如 mysql 對應(yīng)設(shè)置有注釋#----- MySQL 5.6 or greater...。更多說明可以看官方文檔的Installing the Server宏怔。

  5. 修改完成后奏路,重啟 SonarQube 服務(wù)器。就ok了(頁面底部不會再提示使用的是嵌入的默認(rèn)數(shù)據(jù)庫了)臊诊。

啟動SonarQube報錯:遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個現(xiàn)有連接

  1. 如果是初次啟動報錯鸽粉,那檢查數(shù)據(jù)庫版本是否符合要求。比如我這個注釋里面寫著MySQL 5.6 or greater抓艳,所以MySQL數(shù)據(jù)庫版本不能低于5.6触机。
  2. 版本符合要求的前提下,我遇到過另一種情況玷或,開機(jī)之后儡首,首次運行SonarQube,控制臺報錯并閃退偏友。這種情況的話蔬胯,檢查MySQL服務(wù)器是否已經(jīng)啟動,數(shù)據(jù)庫是否能夠連接位他。

結(jié)尾

綜上就是對 SonarQube 入門使用的說明氛濒。它還有很多強(qiáng)大功能有待挖掘。

我認(rèn)為鹅髓,對于開發(fā)者來說舞竿,好的工具真的非常重要。找到合適的工具窿冯,能夠提高之后的工作效率骗奖,以及開發(fā)質(zhì)量。多花點時間,也是值得的重归。

參考閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末米愿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鼻吮,更是在濱河造成了極大的恐慌育苟,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎木,死亡現(xiàn)場離奇詭異违柏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)香椎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門漱竖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人畜伐,你說我怎么就攤上這事馍惹。” “怎么了玛界?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵万矾,是天一觀的道長。 經(jīng)常有香客問我慎框,道長良狈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任笨枯,我火速辦了婚禮薪丁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘馅精。我一直安慰自己严嗜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布硫嘶。 她就那樣靜靜地躺著阻问,像睡著了一般梧税。 火紅的嫁衣襯著肌膚如雪沦疾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天第队,我揣著相機(jī)與錄音哮塞,去河邊找鬼。 笑死凳谦,一個胖子當(dāng)著我的面吹牛忆畅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尸执,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼家凯,長吁一口氣:“原來是場噩夢啊……” “哼缓醋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绊诲,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤送粱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掂之,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抗俄,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年世舰,在試婚紗的時候發(fā)現(xiàn)自己被綠了动雹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡跟压,死狀恐怖胰蝠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情震蒋,我是刑警寧澤姊氓,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站喷好,受9級特大地震影響翔横,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梗搅,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一禾唁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧无切,春花似錦荡短、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至籍嘹,卻和暖如春闪盔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辱士。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工泪掀, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颂碘。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓异赫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子塔拳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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

  • 1.SonarQube Sonar的功能:是一個用于代碼質(zhì)量管理的開源平臺鼠证,用于管理源代碼的質(zhì)量,可以從七個維度檢...
    Broom閱讀 9,415評論 0 6
  • 新晉測試小白最近在研究sonarqube的靜態(tài)代碼檢查靠抑,整理了關(guān)于sonarqube 如何在mac os x系統(tǒng)下...
    測試小白_stone閱讀 1,942評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理名惩,服務(wù)發(fā)現(xiàn),斷路器孕荠,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 荒村遠(yuǎn)稚伍,流水育山青弯予。冬到疾風(fēng)催落葉,夏來狂雨滌生靈个曙。天地護(hù)伶仃锈嫩。 荒村贊,法治更溫馨垦搬。右里暗爭成過往呼寸,左鄰紅臉是曾...
    繁花落盡深眸閱讀 258評論 6 15
  • 三年前,我不喝茶的主要原因是不懂茶道猴贰,覺得喝與不喝一個樣对雪。這三年不喝茶,主要是腸胃不爭氣米绕,沾綠茶就拉稀瑟捣。基于此栅干,...
    宗林的李閱讀 387評論 4 3