pandaAnthony:sonar安裝及簡單使用

程序員寫代碼是有一些開發規范的,比如java程序員經常會用到的阿里巴巴java開發手冊;其他語言也會有一些自己的規范。不少公司都比較重視代碼的質量,會做代碼走讀或者code review,叫法不一樣,但目的都是盡量保證代碼的質量和安全。

以前用過crucible這樣的工具來協助code review,公司對于code review是有強制性要求的,需要不少于3個人來做,并且要解決提出的合理要求;其實這樣比較費時間和精力,尤其是不少代碼是并不是核心業務代碼,記得當時看到沒有注解、魔法值這些每次都會提出來。那么有沒有工具來解決這些重復性的工作,讓大家更加關注核心業務的code review呢(自檢的插件還是有的,比如Alibaba Java Coding Guidelines;這里主要介紹需要部署服務器,讓多人協同工作的)。

以前經常聽到過sonar來進行代碼檢查,正好今天被分配了個任務要求做自動代碼檢查,就找資料學習并安裝使用了下,發現用起來比較簡單而且效果也還不錯。

sonar簡介

官網地址:https://www.sonarqube.org/

image.png

這個沒有國際化,只能看英文的了。首頁這里加粗的就是sonar最大的作用就是:代碼質量和安全,他的使用對象是your teammate團隊成員,所以明確介紹了是為團隊成員的代碼質量和安全。

不急著下載,先找到官方文檔Document:https://docs.sonarqube.org/latest/
文檔首頁左邊這里是導航,右邊是歡迎頁加一些簡介,這里告訴我們從7.4版本后在sonar內部就可以看到這些文檔:

image.png

右邊這里更細致的區分了使用對象(比如作為新人,sonar管理員,程序員使用者等),建立了更快捷的導航:
image.png

很明顯,我們是做為新人來使用的。這里有2個鏈接:一個是快速的demo,一個是生產使用。在進入這里之前,我們先看下左側導航的Requirements需求:


image.png

這里對于軟件環境就一點明確的要求JRE11或者OpenJDK11,硬件要求操作系統至少2G內存和1G的可用內存,然后明確指出不支持32位的系統;至于硬盤空間則是根據需要分析的代碼來定的,有興趣的可以自己去看下說明,這里不具體描述了。大概意思是使用sonar云在Amazon EC2 large的實例上分析有5年歷史3億5000萬行代碼需要每個節點50G的空間來運行。

然后企業級硬件的推薦配置8核16G:


image.png

支持的平臺,java(服務器要求jre11,掃描的要求jre11和jre8)和數據庫等:


image.png

如果不想使用最新的(目前是8.2版本),可以在左側導航切換:


image.png

當然如果要使用舊版本的話最好選擇7.9LTS,這個表示7.9版本會長期支持。

sonar安裝

好吧,前面簡介廢話了這么多(其實還是很有用處的,起碼知道了一些基本要求);進入正式的安裝。首先回到文檔首頁https://docs.sonarqube.org/latest/

image.png

選擇快速demo版本:

image.png

發現快速demo版本果真簡單,在2分鐘內搞定。然后他告訴你這只是怎么安裝一個demo實例,如果準備好安裝到正式環境,需要看對應服務器文檔。
快速安裝有2種方式:
1、通過zip解壓安裝:需要下載SonarQube 社區版,然后用非root賬戶解壓并運行。
既然這里說了有社區版那肯定就有收費版,進入下載頁https://www.sonarqube.org/downloads/
image.png

根據實際情況選擇吧,社區版支持的語言和功能沒有Developer版強大,不過也足夠用了。因為這里需要jre11或openjdk11的環境,所以不演示了。

2、使用docker安裝:應該不少人都用過docker了,這里不詳細描述docker了。
centos7下安裝docker:

yum install docker -y

安裝后啟動并設置成開機啟動

systemctl start docker
systemctl enable docker

然后按照文檔安裝(這個時間有點長,遠超2分鐘;這里推薦使用阿里云鏡像加速,具體操作去百度docker阿里云鏡像加速,速度很快),需要注意9000端口沒被占用:

docker pull sonarqube
docker run -d --name sonarqube -p 9000:9000 sonarqube

執行命令后如果沒問題會看到一串字符串,可以理解為docker啟動了一個容器的id標識:


image.png

然后通過瀏覽器訪問:


image.png

可以看到about頁面了,點擊登錄按鈕:


image.png

可以看到登錄界面下方有個警告,說內嵌的數據庫僅適用于評估目的,推薦還是使用外部的數據庫。默認用戶名密碼是admin/admin,登錄:


image.png

可以在右邊看到各項評估指標統計,左邊是項目列表。
到這來sonar的安裝就完成了,下面介紹下怎么結合java進行代碼分析。

簡單使用

點右側的創建新項目:


image.png

如果有項目的話可以點右上角的加號創建:


image.png

可以看到創建新項目需要填寫的項目關鍵字和顯示名稱:


image.png

點擊創建繼續:


image.png

這里需要生成一個token,隨便填寫token的名稱然后點生成:


image.png

點擊繼續:


image.png

可以看到第二步出現了,需要選擇你項目的主要語言,這里我們選擇java:


image.png

然后可以看到提示,我們用什么技術來構建,這里我用的是maven,所以選擇maven繼續:


image.png

可以看到分成具體的一個提示命令了,其中包含了項目名稱,sonar主機url和剛生產的token;我們先復制這個命令直接到工程下運行(在windows下需要去掉反斜杠):


image.png

經過一段時間的等待,發現分析成功了。我們在回到瀏覽器頁面,發現頁面也變化了:


image.png

看到左邊是整體結果Passed通過了,右邊是詳細統計。有多少bug,多少Vulnerabilities漏洞,多少Security Hotspots這些具體的信息及對應的評級。總之有數字的就是需要改進的,然后我們點擊3個Vulnerabilities漏洞查看:


image.png

可以看到左側還是導航欄,記錄了各種級別的問題;有右邊是對應問題的列表,可以看到每個漏洞的級別,甚至告訴你為什么是個issue。
先點擊第一條記錄:


image.png

頁面跳轉了,左側是剛才的問題列表,右側是具體的代碼。其實這里給出了他要求你怎么做了:


image.png

直接百度翻譯:將i設為靜態final常量或非公共常量,并在需要時提供訪問器;比較明確了吧。我們再看下為什么,點‘Why is this an issue’:


image.png

也給出了非常明確的解釋,還有例子:


image.png

提示信息和例子還是很有用的,明確地告訴你需要怎么去解決。

回到首頁發現剛才分析的項目在右側列表了:


image.png

好了,sonar安裝及簡單使用到這里基本上就可以了。實際項目中肯定是需要結合持續集成,后續可能會進一步做相關的介紹和使用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,748評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,165評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,595評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,633評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,435評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,943評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,035評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,175評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,713評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,599評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,788評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,303評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,034評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,412評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,664評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,408評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,747評論 2 370

推薦閱讀更多精彩內容