天天看點

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

我們在進行代碼優化的時候,往往是通過開發者的經驗來判斷哪些代碼可能存在潛在問題,哪些資源的使用不合規範等。實際上Android SDK提供了一款功能非常強大的工具,來幫助開發者自動檢測代碼的品質及安全問題,這款工具就叫Android Lint。Lint提供了指令行方式以及與IDE內建的方式來執行,現在Android開發者基本上都使用Android Studio(後文簡稱AS,下同)來進行開發,強大的AS也內建了該工具,本文就基于AS3.2版本來介紹Lint。

前言

       轉載請申明,轉自【https://www.cnblogs.com/andy-songwei/p/11832280.html】,謝謝!

       我們在進行代碼優化的時候,往往是通過開發者的經驗來判斷哪些代碼可能存在潛在問題,哪些資源的使用不合規範等。實際上Android SDK提供了一款功能非常強大的工具,來幫助開發者自動檢測代碼的品質及安全問題,這款工具就叫Android Lint。Lint提供了指令行方式以及與IDE內建的方式來執行,現在Android開發者基本上都使用Android Studio(後文簡稱AS,下同)來進行開發,強大的AS也內建了該工具,本文就基于AS3.2版本來介紹Lint。

一、Android Lint簡介

       Android Lint是SDK Tools 16(ADT16,目前筆者使用的ADT已經是26了,是以現在就不用擔心自己所使用的SDK中不包含lint工具了)開始引入的一個代碼掃描工具,路徑為:Sdk\tools\bin\lint.bat。通過它對Android工程源代碼進行掃描和檢查,可發現潛在的問題,以便程式員及早修正這個問題。通過Lint,無需實際執行應用,也不必編寫測試用例,就可以檢查Android項目中源檔案是否存潛在的錯誤,以及在正确性、安全性、性能、易用性、無障礙性和國際化方面是否需要優化改進。

二、Lint的工作原理

       會使用Lint了,可以簡單了解一下它的原理,即工作過程。Android Lint 的工作過程比較簡單,一個基礎的 Lint 過程由 Lint Tool(檢測工具),Source Files(項目源檔案) 和 lint.xml(配置檔案) 三個部分組成,Lint Tool 讀取 Source Files,根據 lint.xml 配置的規則(issue)輸出結果(如下圖)。

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

三、Lint在AS中的使用

       由于現在Lint是直接內建到AS中的,是以可以直接使用,無需再安裝。

  1、Lint的啟動

       Lint在Android Studio中的使用步驟非常簡單,有兩條途徑可以啟動Lint:

    (1)從主菜單欄中啟動

       點選主菜單 > Analyze > Inspect Code會彈出檢查範圍選擇對話框

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器
【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

該對話框用于選擇要檢查的範圍,根據實際需要選擇即可。其中選擇“Custom scope”時可以自定義檢查範圍,

選擇好檢查範圍後,點選“OK”後,Lint就開始啟動了,AS界面的底部會表示正在運作中,稍等一會兒就能看到檢查結果了。

    (2)通過右鍵菜單啟動

       在AS界面檔案或編輯界面點選右鍵,在彈出的菜單中也可以看到“Analyze  > Inspect Code”選項,後面就和上面的方法一樣了,這裡不再贅述。

 2、檢視檢查結果

       檢查完成後會可以看到如下界面闆了:

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

在這個面闆中,“Lint檢查結果區”展示的就是通過Lint工具檢查出來的結果。當點選這些結果中的問題項時,可以在右邊看到該類問題或者具體問題的詳情,然後自動完成修改或者根據對問題的描述手動修改。

  3、結果面闆功能說明

        上述結果面闆從左到右可以分為三個大區域:工具欄,結果區和問題詳情區。

     (1)工具欄

       工具欄中提供了多個常用的功能,把滑鼠移到圖示上時會給出相應的提示,這裡對部分按鈕進行說明:

       1)圖中①處,Group By Serverity:檢查結果按照問題嚴重程度分組。

       2)圖中②處,Group By Directory:檢查結果按照目錄分組。

       3)圖中③處,Filter resolved items:過濾掉已經解決的問題項。

       4)圖中④處,Export:導出為HTML或者XML文檔。

       5)圖中⑤處,Edit Settings:編輯設定,通過這裡可以對Lint進行設定,後面會詳細介紹。

       6)圖中⑥處,Apply a quickfix:快速修複,點選這裡可以直接對所選問題進行快速修複。

    (2)檢查結果區

       由于這裡檢查代碼不僅僅隻有Lint在工作,還有很多其它插件也在執行,是以結果中有很多其它工具檢查出來的問題,Android > Lint下面的目錄就是Lint的結果區了。如果展開Lint的結果,會發現這些問題都是Android所特有的問題,比如布局檔案、控件、AndroidManifest檔案中的問題,可見Lint就是為Android而量身定做的。預設時這些結果是按照一定的分類來分組的,比如,Correctness、Performance、Security等,這問題類型是否需要檢查,也是在設定中設定的,後面會詳細介紹。當然通過這個結果區還可以看到Java、Kotlin、Spelling等的問題,也一樣解決。

    (3)問題詳情區

       如果滑鼠在結果區選擇的是某一類問題,這部分顯示了所選問題的詳情,解決建議,以及快速修複等功能。其中“Run inspection on”按鈕,點選後會彈出如下對話框:

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

這裡選擇在哪個範圍内檢查同類問題。

       如果在結果區選擇的是具體的問題項,那麼右邊顯示的就是對問題所在的位置進行預覽。如下圖所示:

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

       通過上面的介紹,可以看到Lint的基本使用還是比較簡單的。

四、對Lint進行設定

  1、進入設定界面的兩種方式

       有兩種途徑可以進入到Lint的設定界面:

    (1)File > Settings > Editor > Inspections;

    (2)Lint控制台工具欄的設定按鈕,即第二節中的按鈕⑤。

  2、設定面闆預覽

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

 3、設定項功能介紹

       設定界面中的各個區域和按鈕的功能都在圖中标注了,這裡再對按鈕①和按鈕②進行說明。

    (1)篩選按鈕   

       這是一個下拉框,通過該處可以篩選要顯示的功能項。

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

    (2) 問題嚴重等級設定

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器
【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

下拉清單,會顯示可以自定義的等級及對應顔色,可以通過此處編輯選擇項的嚴重等級。點選“Edit severities”可以添加新的嚴重等級,以及編輯各等級德顔色和字型。當然,系統預設的問題嚴重性等級和這裡略有差別,系統預設的嚴重等級由高到低依次為:Fatal、Error、Warning、Information、Ignore 5個等級。

五、Lint問題種類

       從設定面闆中可以看到,問題可以分為如下幾個大類:

    (1)Accessibility 輔助選項,比如ImageView的contentDescription往往建議在屬性中定義等。

    (2)Compliance 合規性,違反了Google Play的要求,比如使用了過期的庫版本,性能、安全性、API等級等沒有遵循新系統的要求等。

    (3)Correctness 不夠完美的編碼,比如寫死、使用過時API等。

    (4)Internationalization 國際化,直接使用漢字,沒有使用資源引用等

    (5)Interoperability 互操作性,比如和Kotln的互動等。

    (6)Performanc 對性能有影響的編碼,比如:靜态引用,循環引用等

    (7)Security 不安全的編碼,比如在 WebView 中允許使用 JavaScriptInterface等

    (8)Usability 可用的,有更好的替換的 比如排版、圖示格式建議.png格式等

六、根據規則名稱來檢查

       有時候我們需要明确檢查某一類問題,比如查找項目中沒有使用的資源,并将它們删除,它們會耗性能。可以通過如下的方式來找到這些沒有使用的資源:點選Analyze > Run Inspection By Name,會彈出對話框

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

輸入該規則的名稱,按“Enter”鍵,提示選擇檢查範圍:

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

點選“OK”按鈕,結果中隻會顯示“Unused resoures”的問題項目:

【工利其器】必會工具之(九)Android Lint篇——為Android量身定做的代碼審查利器

該功能能幫我們明确定位某一類問題。

七、自定義Lint

       對于多數情況,預設的Lint已經足夠使用了,但總有一些需求是Lint自帶規則不能滿足的,這個時候就需要自定義Lint規則了。當然,限于筆者對Liint的使用經驗有限,對自定義Lint還不太熟悉,這裡推薦一篇文章,有興趣的可以深入研究:

自定義Lint實踐https://blog.csdn.net/ouyang_peng/article/details/80374867。

參考:

       https://blog.csdn.net/luzhenyuxfcy/article/details/79398761

       http://tools.android.com/tips/lint

       https://developer.android.google.cn/studio/write/lint

       https://blog.csdn.net/hudashi/article/details/8333349

       https://www.jianshu.com/p/9eaf7c0eee67

結語

       本文隻介紹了Android Lint常見的一些使用方法,一定還有很多很牛的功能,希望讀者們多多探索,多多交流,共同進步,謝謝!

繼續閱讀