之前用過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深员,配置步驟:
首先確保已安裝數(shù)據(jù)庫,并啟動服務(wù)器蛙埂。
連接mysql:
mysql -u root -p
-
為 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;
-
修改 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宏怔。 修改完成后奏路,重啟 SonarQube 服務(wù)器。就ok了(頁面底部不會再提示使用的是嵌入的默認(rèn)數(shù)據(jù)庫了)臊诊。
啟動SonarQube報錯:遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個現(xiàn)有連接
- 如果是初次啟動報錯鸽粉,那檢查數(shù)據(jù)庫版本是否符合要求。比如我這個注釋里面寫著
MySQL 5.6 or greater
抓艳,所以MySQL數(shù)據(jù)庫版本不能低于5.6触机。 - 版本符合要求的前提下,我遇到過另一種情況玷或,開機(jī)之后儡首,首次運行SonarQube,控制臺報錯并閃退偏友。這種情況的話蔬胯,檢查MySQL服務(wù)器是否已經(jīng)啟動,數(shù)據(jù)庫是否能夠連接位他。
結(jié)尾
綜上就是對 SonarQube 入門使用的說明氛濒。它還有很多強(qiáng)大功能有待挖掘。
我認(rèn)為鹅髓,對于開發(fā)者來說舞竿,好的工具真的非常重要。找到合適的工具窿冯,能夠提高之后的工作效率骗奖,以及開發(fā)質(zhì)量。多花點時間,也是值得的重归。
參考閱讀
- 掃描器使用說明 Analyzing with SonarQube Scanner:
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner - 掃描參數(shù)配置 Analysis Parameters:https://docs.sonarqube.org/display/SONAR/Analysis+Parameters
- Installing the Server: https://docs.sonarqube.org/display/SONAR/Installing+the+Server
- Create MySQL DB for SonarQube: https://gist.github.com/davidhyk/d6c92615223b8d7beb53