由於之後開發將會使用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/)