1. 程式人生 > 實用技巧 >這樣Review程式碼牛逼啦!

這樣Review程式碼牛逼啦!

這樣Review程式碼牛逼啦!

一個對專案負責的團隊程式碼質量檢查是必不可少的,有條件的團隊經常有程式碼review習慣,這樣可以使技術團隊共同進步,但是一個龐大的工程做程式碼review其實是很麻煩的,所以就催生了很多的工具,今天我們就來通過工具來對程式碼進行掃描,通過發現問題並改進問題,使我們的專案程式碼更簡潔,修復隱藏bug。

什麼是Sonarqube

Sonarqube 是一個用於程式碼質量管理的開放平臺。通過外掛機制,Sonarqube 可以整合不同的測試工具,程式碼分析工具,以及持續整合工具。

在對其他工具的支援方面,Sonarqube 不僅提供了對 IDE 的支援,可以在 Eclipse 和 IntelliJ IDEA 這些工具裡聯機檢視結果;同時 Sonarqube 還對大量的持續整合工具提供了介面支援,可以很方便地在持續整合中使用 Sonar。

簡單來說,Sonarqube就是一個程式碼質量檢測工具,可以通過搭建服務端和使用客戶端來對程式碼進行檢測,我們今天就來上手試試吧。

搭建Sonarqube伺服器

因為小編環境是mac,還是選擇使用docker來搭建伺服器環境把。

首先查詢映象

docker search sonarqube

然後pull映象

docker pull sonarqube

如果使用傳統的搭建還得建立sonarqube需要的對應資料庫的指令碼再進行關聯,但是使用映象的話這些都內嵌了。

好了開始通過映象啟動容器吧。

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

映象啟動後就可以訪問服務頁面了。

訪問地址:http://localhost:9000

點選左側的Log in登入,預設的登入使用者名稱密碼都是admin

這樣子服務端就安裝好了

客戶端使用

第一種姿勢 純idea外掛檢視

因為目前國內大部分程式設計師都轉向Idea了,所以我們使用Idea來作為客戶端進行專案程式碼檢測。

首先就是外掛的安裝。如圖所示,小白都看的懂,安裝外掛SonarLint並重啟IDE

重啟之後就要配置客戶端連線的伺服器了,伺服器地址和賬號密碼填寫我們之前本地搭建的資訊

點選Next的時候會需要建立Token

點選Create Token跳轉到我們生成Token的網頁,這裡我們輸入admin建立Token

複製生成的Token到idea裡面,填寫好即可

驗證和使用

接下來就是驗證使用了。我們在專案程式碼目錄上右鍵

會有SonarLint這個選項,點選第一個

可以看到程式碼檢測愉快的跑起來了。

掃描結束以後,可以看到,很多不規範的程式碼都被掃出來了。

隨便點開一個,比如說這個空方法

並且右側給出了對應的修復示例參考

但不懂英文?沒關係啊 ,姿勢可不只有這一種!!!

第二種姿勢

那麼這次我們使用管理臺+maven來看如何牛逼的使用它,

登入管理臺,點選Markerplace模組,安裝中文包

安裝完成重啟服務

再次登入,熟悉的中文是不是回來了呀!

然後在專案裡面加入以下maven依賴

<plugin>
  <groupId>org.sonarsource.scanner.maven</groupId>
  <artifactId>sonar-maven-plugin</artifactId>
  <version>3.7.0.1746</version>
</plugin>

展開專案的Maven選項,雙擊執行,執行完畢後就可以登入管理臺查看了。

開啟管理臺,你會發現產生了一個和你專案名一樣的專案,並且各種程式碼質量指標都標註的清清楚楚!!

我們點進去,點開bug選項隨便一處,檢視Bug

果然掃出來了一處可能出現bug的程式碼,假設Get這個列舉物件為null的話,下面的物件getId()方法肯定會出現空指標了。

我們再匯入一個一個專案,寫幾個不規範的程式碼,看看能不能掃出來。

果然是掃到了有異味的程式碼。。。 比如方法不規範拉,程式碼裡輸出日誌不規範 了~

這裡就不繼續陪大家看bug和異味的程式碼了呀~

檢測出了程式碼規範問題和bug漏洞咋辦,改唄~

改完以後就可以早點下班了~~

各位老鐵有空可以去嘗試玩一玩啊,據說經常做程式碼review的程式設計師下班都比普通程式設計師要早。

結尾

寫到結尾了,順便提一句,有人說為什麼不用類似阿里巴巴規約掃描外掛,其實在專案開發中也有在用,但是確實只能測試出來一部分阿里定義出來的程式碼不規範問題,像漏洞和bug和這個就更不能比了,所以千萬別有槓精來跟我較勁比較了,我只能說,都用吧!!

寫到這裡了,點贊轉發三連有麼,為了你能早點下班~