Android探索之旅|Android Studio配合Lint檢測缺失Permission

讀完文章大概需要1.5分鐘

近來有一個Android小項目需要優化, 包括從AndroidManifest.xml刪除不必要的permission(權限)。


需要刪除的權限有點多, 而我又不是很確定哪些權限對於App是必要的。如果我這樣做: 每刪除一個權限, 就運行一下App, 看各樣功能正常不, 那就太費時間了。

或者, 我可以寫Android Instrumentation Test測試來檢測每一次刪除的permission是不是導致App運行錯誤。

但這些方法都好麻煩~

有沒有更簡單快捷的方式呢? 要知道程序員是要懂得偷懶的。

我想到了Lint。

Lint是什麼?

Lint是一種工具程式的名稱,它用來標記原始碼中,某些可疑的、不具結構性(可能造成bug)的段落。

它是一種靜態程序分析工具,最早適用於C語言,在UNIX平臺上開發出來。後來它成爲通用術語,可用於描述在任何一種電腦程式語言中,用來標記原始碼中有疑義段落的工具。

Lint規則

Lint檢測不少規則, 你可以輸入以下命令來查看:

    lint --show



Lint的報告

Lint的報告就是Lint檢測完指定項目後生成的一個文件, 可以是HTML, XML等格式, 指明瞭哪些地方需要優化和改正。

Lint報告類似這樣:


Lint測試生成的報告還可以被[SonarQube](http://www.sonarqube.org/)這樣的開源代碼質量管理系統以圖表的形式展示出來, 非常利於項目優化。

下次我會寫一篇SonarQube配合各種工具生成報告的文章。先來一睹爲快吧:


上圖是SonarQube的報告示例。

Android項目中使用Lint

Android的Lint官方教程, 需要番茄的鏈接:

https://developer.android.com/studio/write/lint.html

我們可以在Android Studio的Gradle配置文件中設置Lint的檢測規則:


然後, 可以在Android Studio中直接啓動Lint檢測:

點擊Android Studio的菜單欄中的Analyze -> Inspect code, 選擇要用Lint檢測的項目(當然了, 你也可以不檢測所有Lint規則, 而是選擇Run Inspection by Name, 然後輸入規則名字, Lint就只會檢測此項規則 ), 可以是整個Project, 或者是一個Module :


或者用命令行的模式來啓動Lint檢測:

到項目的根目錄中, 輸入下面的命令, 回車

    ./gradlew lint

Gradle工具就會編譯你的項目, 生成Lint測試的報告:


看到上圖中說:

    Wrote HTML report to file:///home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.html
    Wrote XML report to file:///home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.xml

意思是:

* HTML格式的報告已生成, 在/home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.html
* XML格式的報告已生成, 在/home/exe/qksms/QKSMS/build/outputs/lint-results-noAnalyticsDebug.xml

Android Studio中配合Lint來檢測缺失的permission

可以配置Lint檢測permission的規則, 點擊Android Studio的菜單欄中的File -> Settings, 在搜索框中輸入lint, 再在子搜索框中輸入permission, 然後可以勾選。


在Android Studio中運行Lint, 或者用上面說過的命令行。

在生成的報告中, 可以查看

Android -> Constant and Resource Type Mismatches

裏面就會有Missing permission


總結
Lint是非常有用的一個代碼監測工具, 可以審查很多種編程語言, 配合Android開發非常好用, 至於更多Lint的特性和使用, 請參考網上更多教程。


歡迎留言補充指正!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章