使用四大插件提高Android中的代碼質量

由於之後開發將會使用Android studio進而替代Eclipse作爲高效的Android開發工具,所以今天分享一篇關於利用四種插件 lint、findBugs、PMD、 CheckStyles 的功能和使用方式,以及如何將多個插件整合在一起的文章”教大家如何高效的使用Studio插件進行檢測,從而提高Android代碼的質量.”

1

lint

Lint是Android Studio提供的一個代碼檢測工具,通過它開發者不用運行或者寫測試代碼,就可以發現和糾正問題,優化代碼結構。

每個被檢測到的問題,都會生成一條描述信息並指明相應的嚴重性級別,當然這個嚴重性級別我們也可以自己設置的。

檢測範圍
潛在的bug
可優化的代碼
安全性
性能
可用性
可訪問性
國際化
這裏寫圖片描述

(1)插件安裝

Android Studio自帶,無需安裝。

(2)插件使用

通過Gradle運行lint
在工程的根目錄下運行相應的gradle task。

Windows
gradle lint
Linux 或者 MAC
./gradlew lint
當運行上面的命令執行完後,就會在項目目錄/app/build/outputs/lint-results-debug.html生成相應的文件,可用瀏覽器打開查看。

(3)手動運行lint

有時我們可能只針對某個文件或者某個目錄進行檢測,這時使用gradle的方式就比較麻煩了,所以Android Studio提供給我們手動運行lint的方式。

在AS的工程下選擇module、目錄或者文件
右鍵選擇Analyze > Inspect Code.
此時會出現一個選擇“指定檢測範圍”的dialog

這裏寫圖片描述

配置完成後,點擊OK按鈕,進行檢測。檢測結果如下圖所示,左邊是檢測類型的樹形結構,右邊則展示詳細的信息。
這裏寫圖片描述

注:詳細的使用,請看官網文檔 Improve Your Code with Lint
https://developer.android.com/studio/write/lint.html#manuallyRunInspections

2
findBugs
(這裏推薦一個關於findBugs 的使用方式博客介紹http://blog.csdn.net/fengyuzhengfan/article/details/50775170)
FindBugs是一個Java靜態分析工具,用來檢查類或者jar文件,用來發現可能的問題。檢測完成之後會生成一份詳細的報告,藉助這份報告可以找到潛在的bug,比如NullPointException,特定的資源沒有關閉,查詢數據庫沒有調用Cursor.close()等

檢測範圍
常見代碼錯誤,序列化錯誤
可能導致錯誤的代碼,如空指針引用
國際化相關問題:如錯誤的字符串轉換
可能受到的惡意攻擊,如訪問權限修飾符的定義等
多線程的正確性:如多線程編程時常見的同步,線程調度問題。
運行時性能問題:如由變量定義,方法調用導致的代碼低效問題

(1)插件安裝

在Android Studio中選擇Preferences -> Plugins,輸入查找findBugs進行插件安裝。

這裏寫圖片描述

(2)插件使用

在build.gradle文件中,按照下面步驟進行設置:

添加plugin apply plugin:’findbugs’
定義任務,指定輸出格式
這裏寫圖片描述

這裏要注意因爲findBugs是檢查class文件,所以在定義task的時候,我們是dependsOn: “assembleDebug”,確保運行findbugs的task能夠成功檢測。

通過gradle findbugs方式,在工程目錄下運行命令,檢測完成後,會在制定的目錄下生成報告文檔。文檔支持xml和html兩種格式,本文設置的是html格式,可以直接用瀏覽器打開。

當然,和lint一樣,findBugs也支持手動檢測的方式。

在工程裏,右鍵 FindBugs -> (選擇檢測的範圍)。檢測完之後,底部工具欄會跳到FindBugs-IEDA下,如圖所示。
這裏寫圖片描述

3
PMD

PMD是一個很有用的工具,它跟Findbugs類似,但是它不是檢測字節碼,它是直接檢測源代碼。它使用靜態分析來發現錯誤。

爲什麼要將它們同時使用呢?因爲它們的檢測方法不同,可以取到互補的作用。

檢測範圍
可能的bug——空的try/catch/finally/switch塊。
無用代碼(Dead code):無用的本地變量,方法參數和私有方法。
空的if/while語句。
過度複雜的表達式——不必要的if語句,本來可以用while循環但是卻用了for循環。
可優化的代碼:浪費性能的String/StringBuffer的使用。

(1)插件安裝

同樣可以通過AS的plugin進行安裝,推薦安裝QAPlug-PMD。

這裏寫圖片描述

(2)插件使用

在build.gradle文件中進行如下配置

導入Plugin:apply plugin: ‘pmd’
Task配置
這裏寫圖片描述

4
CheckStyles

這個工具用來自動檢測java源碼。啓動之後,可以按照制定的規則對java源碼進行檢查,被將所有的不符合規範的地方生成報告通知給你。

檢測範圍
註解
javadoc註釋
命名規範
文件頭
導入包規範
尺寸設置
空格
正則表達式
修飾符
代碼塊
編碼問題
類設計問題
重複、度量以及一些雜項

總而言之,是一些代碼規範問題!!

(1)插件安裝

通過AS的Plugin進行安裝

這裏寫圖片描述

(2)插件使用

導入Plugin
apply plugin: ‘checkstyle’
設置CheckStyle的版本
checkstyle {
toolVersion ‘6.1.1’
showViolations true
}
配置任務

這裏寫圖片描述

5
插件的接入與使用

檢測範圍
lint、PMD、findBugs和CheckStyle檢測範圍之和。

(1)插件安裝

下載整合插件的文件包(文末),和app工程目錄同級放置。
在app的build.gradle文件導入整合插件腳本
apply from: ‘../config/quality.gradle’

(2)插件使用

修改quality.gradle 的appDir字段,設置檢測的工程目錄
// 應用目錄名稱def appDir = “app-k12”
進入工程根目錄,運行gradle check,檢測完成後,會在build/reports下生成相應的檢測報告文件。當然也可以按照每個插件的使用方式單獨使用。
6
總結

最後,隨文附上插件的git地址,歡迎fork和star。

https://github.com/yushiwo/config

參考文章
How to improve quality and syntax of your Android code
http://vincentbrison.com/2014/07/19/how-to-improve-quality-and-syntax-of-your-android-code/
Improve Your Code with Lint
https://developer.android.com/studio/write/lint.html
Android 進階之工具的使用 Findbugs
http://t.cn/RJydDVa
Android靜態代碼檢測
http://t.cn/RJyduBV
使用 CheckStyle 檢查代碼
http://gudong.name/2016/04/07/checkstyle.html
詳解CheckStyle的檢查規則(共138條規則)
http://blog.csdn.net/yang1982_0907/article/details/18086693
用 PMD 剷除 bug
http://www.ibm.com/developerworks/cn/java/j-pmd/

發佈了39 篇原創文章 · 獲贊 42 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章