- 打造流暢的Android App
- 蕭文翰
- 2319字
- 2022-07-29 14:49:13
2.1 概述
本節將介紹靜態代碼審查的意義以及如何在Android Studio中集成它們。需要注意的是,這些工具并不是萬能的,雖然它們能高效且全面地執行代碼檢查工作,但它們并不具備人類的“邏輯思維”優勢。也就是說,靜態代碼審查工具是無法確保程序邏輯表達上的正確性的。除此之外,代碼中的不安全(如某些條件下的死循環、空指針異常等)、代碼的執行效率甚至編程風格、變量命名等都可以被靜態代碼審查工具檢測出來。
2.1.1 靜態代碼審查的意義
靜態代碼審查可以說是整個軟件開發過程中必不可少的環節,但目前仍有很多公司忽視它。實際上,這種代碼審查比動態測試(指通過運行被測程序,檢查其運行結果是否符合預期,并符合運行效率和健壯性等要求的測試)更有效率。根據項目自身情況的不同,靜態代碼審查可以找到30%~70%的代碼缺陷。
靜態代碼審查通常在編譯和進行動態測試之前進行,這樣做能在產品正式發布之前發現缺陷,大大降低維護成本,被檢代碼覆蓋率高。同時,這種審查通常會花費較長的時間,并需要由對項目代碼有足夠了解的工程師處理。
2.1.2 安裝靜態代碼審查工具
本小節將介紹幾種靜態代碼審查工具,以及講解如何安裝它們,分別是Android Lint、CheckStyle、Spotbugs和PMD。這4種工具都是被眾多知名廠商廣泛使用過的優秀工具,而且筆者在實際工作中也親自使用過,并在一定程度上確保了App的最終質量。
1.Android Lint
為方便廣大Android App開發者進行靜態代碼審查,Google官方提供了一個工具——Android Lint,并且已經預先集成在IDE中了。國內的很多知名大廠(如美團)都在使用該工具。作為Android App開發者,使用該工具是必知必會的技能。
2.安裝CheckStyle
CheckStyle是SourceForge下的一個項目,提供了一個幫助Java開發人員遵守某些代碼規范的工具。它能夠自動化代碼規范檢查過程,從而使得開發人員從這項重要但是枯燥的任務中解脫出來。默認情況下,CheckStyle內置了Google和Sun公司的代碼檢查規范。網絡上也流傳了很多其他類型的檢查規范,比較知名的如阿里巴巴公司的代碼檢查規范等,都可以獲取到。另一方面,如果有需要,完全可以自定義一套代碼規范,方便進行團隊開發項目的代碼檢查。可以說,CheckStyle的自由度是很高的。
安裝CheckStyle的方法很簡單,啟動Android Studio,打開插件設置窗口,切換到Marketplace選項卡,在搜索框中輸入checkstyle(不區分大小寫),按回車鍵,就可以找到該插件,如圖2.1所示。

圖2.1 找到CheckStyle插件
第一個項目就是我們要找的結果。單擊Install按鈕,等待安裝完成,重啟IDE,即可完成CheckStyle工具的安裝。
如果上述安裝方式總是失敗,或想安裝特定的版本,還可采用本地安裝的方式。
打開Jetbrains插件庫網站,找到CheckStyle,下載指定的版本,如圖2.2所示。

圖2.2 下載CheckStyle插件
下載得到的文件通常是一個ZIP壓縮包,啟動Android Studio的插件設置窗口,單擊選項卡右側的小齒輪,通過選擇Install Plugin from Disk…菜單項來安裝該插件,如圖2.3所示。

圖2.3 本地安裝CheckStyle插件
在接下來彈出的窗口中,選擇下載好的ZIP文件,確認后即可開始安裝。
3.安裝SpotBugs
SpotBugs的前身是大名鼎鼎的靜態代碼檢查工具——FindBugs,FindBugs是一款老牌的Java代碼靜態審查工具。在2009年,Google舉行了一場全球范圍的fixit活動,當時就是使用FindBugs工具查找Java代碼的問題。在那次活動中,總計得到了4000個高質量的問題報告,并由Google的工程師決定哪些需要修復。最終,工程師們提交了代碼修改,使1100多個問題得到解決,并支持將FindBugs工具審查工作納入Google的軟件開發流程。
但是,FindBugs自2016年后就不再維護了。而作為FindBugs的替代者——SpotBugs支持JDK(Java Development Kit)8及以上的版本,由于本書采用的JDK版本是8,因此將使用SpotBugs工具進行靜態代碼審查。
雖然使用SpotBugs是未來的趨勢,但遺憾的是,SpotBugs目前并沒有適用于Android Studio的插件。它可以作為獨立工具運行,也可以借助Maven、Gradle等構建工具使用。打開SpotBugs官網,即可輕松找到下載鏈接,如圖2.4所示。

圖2.4 下載SpotBugs工具
官網提供了GZip和ZIP兩種格式的壓縮包,并提供了環境變量的配置方法。我們下載ZIP格式的壓縮包,將其解壓到/Users/當前登錄的用戶名/SpotBugs/,并如圖2.5所示配置環境變量。

圖2.5 配置SpotBugs環境變量
使用Windows操作系統的讀者請以相同的環境變量名設定。
需要特別注意的是,截至目前,SpotBugs的最新穩定版的版本號是3.1.12,4.x版本仍處于Beta階段。筆者建議大家使用穩定版,但是3.1.12版在SpotBugs網站上已經下載不到了(實際上是maven庫中已經不存在這個版本了)。幸運的是,我們仍可以在國內鏡像站點找到它,比如阿里云提供的倉庫服務。
此外,如果你正在使用的JDK版本為8或者更低,并且還想使用FindBugs進行代碼審查,下面的內容將會對你有幫助。
和安裝FireLine類似,我們可以通過使用Android Studio中的FindBugs插件進行代碼審查。啟動Android Studio,打開插件設置窗口,切換到Marketplace選項卡,在搜索框中輸入findbugs(不區分大小寫),按回車鍵,就可以找到該插件,如圖2.6所示。

圖2.6 安裝FindBugs插件
注意,這里我們安裝FindBugs-IDEA即可。
單擊Install按鈕,等待安裝完成,重啟IDE,即可完成FindBugs工具的安裝。
4.安裝PMD
和上述工具相比,PMD靜態代碼審查工具顯得更有意思。該工具是一款采用BSD協議發布的Java程序代碼檢查工具,其官方甚至沒有說明其名稱的含義,最接近的可能是Programming Mistake Detector。此外,它是開源的,所支持的代碼類型除了Java外,還有XML,因此我們可以用它來檢查Android App項目代碼。
安裝PMD的方法一樣很簡單,啟動Android Studio,打開插件設置窗口,切換到Marketplace選項卡,在搜索框中輸入pmd(不區分大小寫),按回車鍵,就可以找到該插件,如圖2.7所示。

圖2.7 安裝PMD插件
單擊PMDPlugin插件下面的Install按鈕進行安裝,并根據提示重新啟動IDE,即可完成安裝。
除了安裝Android Studio插件外,為了實現自定義PMD檢查,還需要下載可獨立運行的PMD工具。打開PMD在GitHub上的開源庫站點,下載并保存最新版本的release版本即可,如圖2.8所示。

圖2.8 下載可獨立運行的PMD發行版
下載成功后,我們將其解壓到/Users/當前登錄的用戶名/PMD/,并如圖2.9所示配置環境變量并設置別名。

圖2.9 配置PMD環境變量
使用Windows操作系統的讀者請以相同的環境變量名設定(無須設置別名)。
好了,所有筆者推薦的靜態代碼審查工具都已經安裝妥當了。接下來,讓我們逐個熟悉這幾種工具吧。
- Puppet 4 Essentials(Second Edition)
- Learning Neo4j
- Spring Boot開發與測試實戰
- Data Analysis with IBM SPSS Statistics
- Learning Python Design Patterns
- Java程序設計入門
- Python算法詳解
- Python Interviews
- Advanced UFT 12 for Test Engineers Cookbook
- R語言實戰(第2版)
- SQL Server 2014數據庫設計與開發教程(微課版)
- Learning Java by Building Android Games
- 軟件測試實驗實訓指南
- 設計模式之禪
- Xamarin Cross-platform Application Development(Second Edition)