close

大家好,我是TJ

一個勵志推薦10000款開源項目與工具的程序員


來源:blog.csdn.net/a745233700/article/details/126202100
隨着業務的發展,系統會越來越龐大,原本簡單穩定的功能,可能在不斷迭代後複雜度上升,潛在的風險也隨之暴露,導致最終服務不穩定,造成業務價值的損失。而為了減少這種情況,其中一種比較好的方式就是提高代碼質量,比如通過代碼審查,從而降低錯誤風險,但是,代碼審查難度大,代碼缺陷、漏洞不易發現,且審查工作隨着代碼量增加而增加,審查效率低。
工欲善其事,必先利其器,因此,這篇文章給大家介紹幾種檢查代碼質量的利器,Alibaba Java Coding Guidelines、CheckStyle、PMD、FindBugs、SonarLint,讓你在關注代碼質量的同時,減少 code review 的工作量,提高 code review 的效率,並通過代碼質量分析去反向提升我們的代碼編寫能力

一、Alibaba Java Coding Guidelines1、整體介紹:

Alibaba Java Coding Guidelines 專注於Java代碼規範,目的是讓開發者更加方便、快速規範代碼格式。該插件在掃描代碼後,將不符合規約的代碼按 Blocker、Critical、Major 三個等級顯示出來,並且大部分可以自動修復,它還基於 Inspection 機制提供了實時檢測功能,編寫代碼的同時也能快速發現問題所在。
阿里巴巴規約掃描包括:
OOP規約
並發處理
控制語句
命名規約
常量定義
注釋規範
2、安裝步驟:
File > Settings > Plugins > Marketplace搜索 「Alibaba Java Coding Guidelines」,按照提示進行安裝,然後重啟即可。
3、使用說明:
3.1、運行方式:
(1)可以Tools > 阿里編碼規約 > 編碼規約掃描
圖片
(2)在編輯界面或者項目區域點擊右鍵,在右鍵菜單中選擇「編碼規約掃描」即可:
圖片
3.2、菜單功能:
編碼規約掃描:開始掃描代碼
打開/關閉實時檢測功能:實時檢測代碼,一般機器性能比較好的話可以開啟這項功能
切換語言至英文:中英文切換
3.3、運行結果:
掃描完成後顯示結果如下,我們可以看到掃描結果主要分為 Blocker(阻擋者)、Critical(嚴重問題)、Major(主要的)三個大類,它們表示的是問題的嚴重程度,嚴重程度由高到低為:Blocker > Critical > Major,至於每一類中都會包含什麼樣的問題,圖中的內容已經說明了一切。
圖片
選中其中的一個問題項目,會出現如下內容(如果當前鼠標點擊的是最終項,右邊區域顯示的是其它的內容,後面會再講到):
圖片
(1)指定區域搜索同一類問題:
當點擊③處的按鈕時,會彈出如下按鈕:
圖片
這裡選擇掃描區域,來掃描鼠標選中的同類問題。如果按照默認選擇,那麼運行後的結果就如下圖所示:
圖片
這裡我們可以看到,顯示了整個Project中的所有該類的問題。
(2)預覽具體的不規範代碼:
如果點擊的是最終的問題點或者問題所在的類文件,那顯示的就是如下界面,預覽該處不規範的代碼。
圖片
3.4、工具欄功能介紹:
圖片
Rerun Inspection:重新運行一次掃描
Close:關閉真箇AJCG面板
Expand All:展開結果的樹狀結構,整個結果是樹狀結構的。
Collapse All:收起結果的樹狀結構
Go Pre Problem:選擇上一個問題
Go Next Problem:選擇下一個問題
Help:幫助
Group by Serverity:(不知道如何描述)
Group by derectory:按目錄分組/按類名分組間切換
Filter resoled items:過濾掉已經解決的項
Autoscroll to Source:自動滾動到源碼
Export:導出,可以導出為XML和HTML兩種格式
Edit Settings:編輯設置
二、CheckStyle:1、整體介紹:
CheckStyle 側重檢查編碼格式和代碼風格規範,如命名規範、Javadoc注釋規範、空格規範、size度量(如過長的方法)、重複代碼、多餘Imports等,從而有效約束開發人員更好地遵循代碼編寫規範。Checkstyle主要是文法層面的代碼編寫規範的分析,對bug幾乎沒什麼發現能力。
Checkstyle插件中默認內置有2個執行代碼檢查的配置文件(Sun Checks 和 Sun Checks),但是這兩個文件檢查的非常詳細嚴格,即使優秀的開源項目也會檢查出來有非常多的錯誤告信息,所以需要導入我們自定義的配置文件。
2、安裝步驟:
通過File > Settings > Plugins > Marketplace搜索 「CheckStyle」,按照提示進行安裝,然後重啟即可。
3、使用說明:
圖片
可以看到基本都是一些縮進啥的編碼規範,可以不用太關注
三、PMD1、整體介紹:
PMD側重面向安全編碼規則,且具備一定的數據流分析和路徑分析能力,能力比CheckStyle稍微強點,並且 PMD 支持自定義規則,PMD可以直接使用的規則包括以下內容:
潛在的bug:空的try/catch/finally/switch語句
未使用的代碼(Dead code):未使用的變量、參數、私有方法等
可選的代碼:String/StringBuffer的濫用
複雜的表達式:不必須的if語句、可被while替代的for循環
重複的代碼:拷貝/粘貼代碼意味着拷貝/粘貼bugs
循環體創建新對象:儘量不要在循環體內實例化新對象
資源關閉:Connect,Result,Statement等使用之後確保關閉掉
2、安裝步驟:
通過File > Settings > Plugins > Marketplace搜索 「PMDPlugin」,按照提示進行安裝,然後重啟即可
3、使用說明:
參考文章:http://wjhsh.net/andy-songwei-p-11830812.html
3.1、運行方式:
(1)從Tools菜單中啟動:
通過Tools > Run PMD可以看到如下的界面,如果通過該方式啟動,掃描的範圍就是整個項目中的文件了。
圖片
Pre Defined:預定義的規則,也就是插件自帶的檢測規則。後面展開的列表中列出了所有的規則列表,想掃描哪一種類型的問題,點擊即可。其中「All」表示使用所有的規則。
Custom Rules:自定義的檢測規則,PMD允許用戶根據需要自定義檢查規則,默認這裡是不可點擊的,需要在設置中導入自定義規則文件後方可選擇。
(2)從右鍵菜單中啟動:
在文件或者編輯器中點擊右鍵,也可以看到「Run PMD」選項,如果通過該方式啟動, 檢測範圍取決於鼠標或光標當前所選中的區域。
3.2、運行結果:
圖片
運行後會出現如上所示的面板,左邊工具欄,鼠標停留在上面會提示其功能;右邊顯示了檢測結果,當點擊具體某一問題項時,會跳轉到對應的源碼中。
3.3、配置檢測規則:
通過File > Settings > Other Settings > PMD可以打開檢測規則的設置界面:
圖片
在 「RuleSets(規則設置)」 界面可以管理自定義的檢測規則。因為在實際工作中,可能需要根據實際情況自定義檢測規則,就可以通過這裡導入,如果要使用它,需要在啟動PMD進行檢測時選擇該自定義規則。
點擊「Options」選項卡,在其中可以配置一些檢測規則選項:
圖片
其中重點需要留意的是「Skip TestSource」這一項,因為在項目中有不少Android Studio自動生成的測試代碼,如下所示,選擇上述選項後可以將其過濾掉。
圖片
四、FindBugs:1、整體介紹:
FindBugs 側重於發現代碼中存在的bug,如運行時錯誤檢測(空指針檢查、未合理關閉資源、字符串相同判斷錯(==,而不是equals)等),它可以簡單高效全面地幫助我們發現程序代碼中存在的bug以及潛在隱患,針對各種問題,它提供了簡單的修改意見供我們參考
2、安裝步驟:
通過File > Settings > Plugins > Marketplace搜索 「FindBugs」,按照提示進行安裝,然後重啟即可
3、使用說明:
FindBugs 可以分析單個文件、包下面的所有文件、整個module下的文件、整個project下的文件,右鍵想要分析的文件名/包名/module名/project
圖片
分析完之後就會出現結果面板
圖片
點擊對應的item在右邊會定位到具體的代碼,這是根據提示進行處理修改就行
圖片
4、附:常見的錯誤信息
4.1、Bad practice 代碼壞習慣:
圖片
4.2、Dodgy code 糟糕的代碼:
圖片
4.3、Internationalization 代碼國際化相關:
圖片
4.4、Performance 代碼性能相關:
圖片
4.5、Experimental:
圖片
4.6、Malicious code vulnerability 惡意破壞代碼相關:
圖片
4.7、Multithreaded correctness 多線程代碼正確性相關:
圖片
4.8、Correctness 代碼正確性相關:
圖片
五、SonarLint:1、整體介紹:
sonar 比Findbugs高了一個層級,它不僅關注常規靜態BUG,還關注到了如代碼質量、包與包、類與類之間的依賴情況,代碼耦合情況,類、方法、文件的複雜度,代碼中是否包含大量複製粘貼的代碼,關注的是項目代碼整體的健康情況。sonar 有兩種使用方式:插件和客戶端,sonar 的插件名稱為sonarLint。
2、安裝步驟:
通過File > Settings > Plugins > Marketplace搜索 「SonarLint」,按照提示進行安裝,然後重啟即可
3、使用說明:
圖片
右鍵項目或者文件進行如上圖所示操作,執行之後可以看到如下信息,如果代碼中有不合理的地方會在report中顯示,同時點擊錯誤的地方在右邊會給出建議的修改供參考。
圖片
4、配置 SonarLint 服務端:
4.1、配置 Sonar 服務器:
sonarLint插件的使用場景是自用自審,但 sonar 也提供了平台版本,使用場景則是他審,sonar 平台的搭建就不在這篇文章介紹了,感興趣的讀者可以自己上網查看,我們這裡主要介紹如何在sonarLint插件中配置關聯 sonar 平台服務器的工程,進行本地檢查:
圖片
點擊新增按鈕,輸入Configuration Name,配置sonarlint服務器的地址,然後下拉框選擇Login/Password,輸入sonarlint服務器的賬號密碼
圖片
4.2、具體 Sonar工程配置:
配置完服務器之後,需要針對具體工程進行配置,點擊connection下拉框,選擇上面配置好的服務器連接,然後點擊Search in list,找到對應的工程:
圖片
4.3、使用 SonarLint 檢查:
配置完上面兩步之後,接下來就可以選擇要進行檢查的類或者目錄進行sonarlint檢查了(跟第3點的使用方式一致),同時,在 commit 代碼的時候,勾選 「Perform Sonarlint analysis」,會針對你要提交的代碼進行sonarlint檢查
圖片
總結

檢查代碼規範的話,直接使用Alibaba Java Coding Guidelines就可以了

找 BUG 的話,使用PMD、Findbugs、SonarLint相互補充:


PMD自定義能力強,用來自定義項目BUG規則非常好用
Findbugs找 BUG 能力很強,我們拿找到的BUG給新員工培訓也很好。
SonarLint規則豐富,比 Findbugs 能覆蓋到更全的場景

往期推薦

11個你不需要的 VS Code擴展

這麼好用的Windows新功能,竟然被微軟屏蔽了?

如何快速開發一個圖片編輯器?

點擊下方卡片,關注公眾號「TJ君」

每天了解一個牛x、好用、有趣的東東


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()