代码查看工具_这样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依賴
org.sonarsource.scanner.mavensonar-maven-plugin3.7.0.1746展開項目的Maven選項,雙擊運行,執行完畢后就可以登錄管理臺查看了。
打開管理臺,你會發現產生了一個和你項目名一樣的項目,并且各種代碼質量指標都標注的清清楚楚!!
我們點進去,點開bug選項隨便一處,查看Bug
果然掃出來了一處可能出現bug的代碼,假設Get這個枚舉對象為null的話,下面的對象getId()方法肯定會出現空指針了。
我們再導入一個一個項目,寫幾個不規范的代碼,看看能不能掃出來。
果然是掃到了有異味的代碼。。。比如方法不規范拉,代碼里輸出日志不規范 了~
這里就不繼續陪大家看bug和異味的代碼了呀~
檢測出了代碼規范問題和bug漏洞咋辦,改唄~
改完以后就可以早點下班了~~
各位老鐵有空可以去嘗試玩一玩啊,據說經常做代碼review的程序員下班都比普通程序員要早。
結尾
寫到結尾了,順便提一句,有人說為什么不用類似阿里巴巴規約掃描插件,其實在項目開發中也有在用,但是確實只能測試出來一部分阿里定義出來的代碼不規范問題,像漏洞和bug和這個就更不能比了,所以千萬別有杠精來跟我較勁比較了,我只能說,都用吧!!
寫到這里了,點贊轉發三連有么,為了你能早點下班~
- END -推薦閱讀:
代碼優化實戰:我又優化了一百個if else!阿里內部員工,排查Java問題常用的工具單優秀的 Java 項目,代碼都是如何分層的?點擊閱讀原文,領取2020Java電子書資料(持續更新
總結
以上是生活随笔為你收集整理的代码查看工具_这样Review代码牛逼啦!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python对数据进行分类_在Pytho
- 下一篇: Java 日期类型与字符串的相互转换