這樣Review代碼牛逼啦!
一個(gè)對(duì)項(xiàng)目負(fù)責(zé)的團(tuán)隊(duì)代碼質(zhì)量檢查是必不可少的,有條件的團(tuán)隊(duì)經(jīng)常有代碼review習(xí)慣,這樣可以使技術(shù)團(tuán)隊(duì)共同進(jìn)步,但是一個(gè)龐大的工程做代碼review其實(shí)是很麻煩的,所以就催生了很多的工具,今天我們就來(lái)通過工具來(lái)對(duì)代碼進(jìn)行掃描,通過發(fā)現(xiàn)問題并改進(jìn)問題,使我們的項(xiàng)目代碼更簡(jiǎn)潔,修復(fù)隱藏bug。
什么是Sonarqube
Sonarqube 是一個(gè)用于代碼質(zhì)量管理的開放平臺(tái)。通過插件機(jī)制,Sonarqube 可以集成不同的測(cè)試工具,代碼分析工具,以及持續(xù)集成工具。
在對(duì)其他工具的支持方面,Sonarqube 不僅提供了對(duì) IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 這些工具里聯(lián)機(jī)查看結(jié)果;同時(shí) Sonarqube 還對(duì)大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 Sonar。
簡(jiǎn)單來(lái)說,Sonarqube就是一個(gè)代碼質(zhì)量檢測(cè)工具,可以通過搭建服務(wù)端和使用客戶端來(lái)對(duì)代碼進(jìn)行檢測(cè),我們今天就來(lái)上手試試吧。
搭建Sonarqube服務(wù)器
因?yàn)樾【幁h(huán)境是mac,還是選擇使用docker來(lái)搭建服務(wù)器環(huán)境把。
首先查找鏡像
docker?search?sonarqube

然后pull鏡像
docker?pull?sonarqube

如果使用傳統(tǒng)的搭建還得創(chuàng)建sonarqube需要的對(duì)應(yīng)數(shù)據(jù)庫(kù)的腳本再進(jìn)行關(guān)聯(lián),但是使用鏡像的話這些都內(nèi)嵌了。
好了開始通過鏡像啟動(dòng)容器吧。
docker?run?-d?--name?sonarqube?-p?9000:9000?-p?9092:9092?sonarqube

鏡像啟動(dòng)后就可以訪問服務(wù)頁(yè)面了。
訪問地址:http://localhost:9000

點(diǎn)擊左側(cè)的Log in登錄,默認(rèn)的登錄用戶名密碼都是admin

這樣子服務(wù)端就安裝好了
客戶端使用
第一種姿勢(shì) 純idea插件查看
因?yàn)槟壳皣?guó)內(nèi)大部分程序員都轉(zhuǎn)向Idea了,所以我們使用Idea來(lái)作為客戶端進(jìn)行項(xiàng)目代碼檢測(cè)。
首先就是插件的安裝。如圖所示,小白都看的懂,安裝插件SonarLint并重啟IDE

重啟之后就要配置客戶端連接的服務(wù)器了,服務(wù)器地址和賬號(hào)密碼填寫我們之前本地搭建的信息

點(diǎn)擊Next的時(shí)候會(huì)需要?jiǎng)?chuàng)建Token

點(diǎn)擊Create Token跳轉(zhuǎn)到我們生成Token的網(wǎng)頁(yè),這里我們輸入admin創(chuàng)建Token

復(fù)制生成的Token到idea里面,填寫好即可
驗(yàn)證和使用
接下來(lái)就是驗(yàn)證使用了。我們?cè)陧?xiàng)目代碼目錄上右鍵

會(huì)有SonarLint這個(gè)選項(xiàng),點(diǎn)擊第一個(gè)

可以看到代碼檢測(cè)愉快的跑起來(lái)了。

掃描結(jié)束以后,可以看到,很多不規(guī)范的代碼都被掃出來(lái)了。
隨便點(diǎn)開一個(gè),比如說這個(gè)空方法

并且右側(cè)給出了對(duì)應(yīng)的修復(fù)示例參考

但不懂英文?沒關(guān)系啊 ,姿勢(shì)可不只有這一種!!!
第二種姿勢(shì)
那么這次我們使用管理臺(tái)+maven來(lái)看如何牛逼的使用它,
登錄管理臺(tái),點(diǎn)擊Markerplace模塊,安裝中文包

安裝完成重啟服務(wù)

再次登錄,熟悉的中文是不是回來(lái)了呀!

然后在項(xiàng)目里面加入以下maven依賴
??org.sonarsource.scanner.maven
??sonar-maven-plugin
??3.7.0.1746
展開項(xiàng)目的Maven選項(xiàng),雙擊運(yùn)行,執(zhí)行完畢后就可以登錄管理臺(tái)查看了。

打開管理臺(tái),你會(huì)發(fā)現(xiàn)產(chǎn)生了一個(gè)和你項(xiàng)目名一樣的項(xiàng)目,并且各種代碼質(zhì)量指標(biāo)都標(biāo)注的清清楚楚!!

我們點(diǎn)進(jìn)去,點(diǎn)開bug選項(xiàng)隨便一處,查看Bug

果然掃出來(lái)了一處可能出現(xiàn)bug的代碼,假設(shè)Get這個(gè)枚舉對(duì)象為null的話,下面的對(duì)象getId()方法肯定會(huì)出現(xiàn)空指針了。
我們?cè)賹?dǎo)入一個(gè)一個(gè)項(xiàng)目,寫幾個(gè)不規(guī)范的代碼,看看能不能掃出來(lái)。

果然是掃到了有異味的代碼。。。比如方法不規(guī)范拉,代碼里輸出日志不規(guī)范 了~

這里就不繼續(xù)陪大家看bug和異味的代碼了呀~
檢測(cè)出了代碼規(guī)范問題和bug漏洞咋辦,改唄~
改完以后就可以早點(diǎn)下班了~~
各位老鐵有空可以去嘗試玩一玩啊,據(jù)說經(jīng)常做代碼review的程序員下班都比普通程序員要早。
結(jié)尾
寫到結(jié)尾了,順便提一句,有人說為什么不用類似阿里巴巴規(guī)約掃描插件,其實(shí)在項(xiàng)目開發(fā)中也有在用,但是確實(shí)只能測(cè)試出來(lái)一部分阿里定義出來(lái)的代碼不規(guī)范問題,像漏洞和bug和這個(gè)就更不能比了,所以千萬(wàn)別有杠精來(lái)跟我較勁比較了,我只能說,都用吧!!
寫到這里了,點(diǎn)贊轉(zhuǎn)發(fā)三連有么,為了你能早點(diǎn)下班~
- END -
—?【 THE END 】— 本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲取! 3T技術(shù)資源大放送!包括但不限于:Java、C/C++,Linux,Python,大數(shù)據(jù),人工智能等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取!!
