使用四大外掛提高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按鈕,進行檢測。檢測結果如下圖所示,左邊是檢測型別的樹形結構,右邊則展示詳細的資訊。
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。
相關推薦
使用四大外掛提高Android中的程式碼質量
由於之後開發將會使用Android studio進而替代Eclipse作為高效的Android開發工具,所以今天分享一篇關於利用四種外掛 lint、findBugs、PMD、 CheckStyles 的功能和使用方式,以及如何將多個外掛整合在一起的文章”教
React Native自定義外掛,呼叫android原生程式碼
Hi,寶寶們,我又來了,16有你,17前行,18怎麼辦?18讓我們一起學習RN吧,hybrid現在是一個前沿,雖然官網說Learn once, write anywhere~~~ 僅需學習一次,編寫任何平臺。但是你不能指望它幹任何事啊,android原生的很多功能還是無法直接使用的,這個時
android中 程式碼實現截圖功能(靜態+動態視訊)
分享下靜態截圖的功能程式碼: public class ScreenShot { // 獲取指定Activity的截圖,儲存到png檔案 static Bitmap takeScreenShot(Activity activity) { L
Eclipse的常規操作,提高速度與程式碼質量
1、智慧提示: 步驟:Windows→Preferences→Java→Editor→Content Assist 我們看到其中的AutoActivation Delay預設值為200(單位是毫秒)也就是說在打“.”之後停留200毫秒才能出現智慧感知的提示。那麼將它修改
讓Visual Studio的程式碼分析工具提高你的程式碼質量
靜態程式碼分析工具,第三方的有很多。其實visual studio有的版本里面也有的哦,通過Q—A的引子希望本文可以起到拋磚引玉的作用。 Q:為什麼我的Visual Studio中沒有程式碼分析功能([分析]選單中[僅對...執行程式碼分析])。 A:你的vs版本是下面其
關於Android中程式碼修改某個佈局的背景問題
在android中,給相應的佈局設定背景圖片有兩種方法 第一,在佈局中 即在相應佈局中使用以下屬性 android:background="@drawable/bg" ///在資原始檔中新增自己想要的背景圖片 在此引用即可 第二,在程式碼中實現,如下 LinearLa
《隨筆十八》——C#中的 “ 【《Effective C#》提煉總結】提高Unity中C#程式碼質量的22條準則 ”
目錄 引言 本文內容思維導圖式總結 原則1:儘可能地使用屬性,而不是可直接訪問的資料成員 原則2:偏向於使用執行時常量而不是編譯時常量 原則3: 推薦使用is 或as操作符而不是強制型別轉換 原則4: 推薦使用條件屬性而不是#if條件編譯 原則5:理解幾個等同性判斷之
Android中使用Sonar進行程式碼質量分析
以Android Studio為例,在專案根目錄下的build.gradle檔案中 1.新增倉庫地址 allprojects { repositories { maven { url "https://plugins.gradle.org/
提高Unity中C#程式碼質量的21條準則
作者:Williammao, 騰訊移動客戶端開發工程師 商業轉載請聯絡騰訊WeTest獲得授權,非商業轉載請註明出處。 原文連結:http://wetest.qq.com/lab/view/290.html WeTest 導讀 我們知道,在C++領域,作為進階
C#中使用try catch和using如何提高程式碼質量
簡介: try catch我們之前說過是處理異常的,其實主要處理異常的是catch,而finally中是釋放資源的,說白了using在C# 中也是讓使用資源的物件釋放資源的,無疑和finally差不多,
提高 Unity 中 C# 程式碼質量的 21 條準則
本文將《Effective C# Second Edition》一書中適用於 Unity 遊戲引擎裡使用 C# 的經驗之談進行了提煉,總結成為21條(一開始總結的是22條,後來發現第22條也是.NET的特性,Unity版本的mono並沒有實現,所以嚴格意義上來說是2
【《Effective C#》提煉總結】提高Unity中C#程式碼質量的22條準則
毛星雲,網路ID「淺墨」,90後,熱愛遊戲開發、遊戲引擎、計算機圖形、實時渲染等技術,就職於騰訊互娛。 微軟最有價值專家 著作《Windows遊戲程式設計之從零開始》、《OpenCV3程式設計入門》 碩士就讀於南京航空航天大學航天學院(2013級碩士研究生),已於2016年三月畢業。本科
【Unity】Effective C#觀後感之提高Unity中C#程式碼質量的21條準則
我們知道,在C++領域,作為進階閱讀材料,必看的書是《Effective C++》。 而《Effective C#》之於C# ,是類似《Effective C++》之於C++一樣的存在。這篇文章,將《E
用 Eclipse 外掛提高程式碼質量
開發軟體時,我的主要目標之一是:要麼防止將缺陷引入程式碼庫,要麼限制缺陷的生存期;換言之,要儘早找到缺陷。很顯然,越是瞭解如何編寫更好的程式碼以及如何有效測試軟體,就越能及早地捕捉到缺陷。我也很想要一張能發現潛在缺陷的安全之網。 在本系列 八月份 的那期文章中,我得出了這樣
【轉】Effective C#觀後感之提高Unity中C#代碼質量的21條準則
們的 嚴格 知識 將不 實現接口 控制流程 effect 序列 狀態 轉自:http://blog.csdn.net/swj524152416/article/details/75418162 我們知道,在C++領域,作為進階閱讀材料,必看的書是《Effective C++
linux下提高程式碼質量的幾個工具
1、測試程式碼覆蓋率 gcov 2、程式碼靜態測試 splint 3、記憶體洩漏測試 valgrind --tool=memcheck --leak-check=yes ./file 4、效能測試 gpro
使用Intellij IDEA在maven專案中整合mybatis-generator外掛,自動生成程式碼
1.在dependencies下新增: <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artif
提高Android開發效率的一款自動findViewById和設定監聽的實用外掛
今天來講一個外掛LayoutCreator,有了這個外掛,無疑,在開發中效率會大大提升... 下載後,重啟AS即可 介紹使用方法: 1.選中Activity所在的佈局右鍵; 選中LyoutCreator 點選後,可以發現,該外掛已經為我們找到控制元件id了(可以
Android中ListView、GridView的通用適配封裝簡化程式碼
轉載請註明出處:http://blog.csdn.net/u013038616/article/details/50733935 ListView和GridView是我們平時經常用來展示集合資料,每次都要為每種列表建一個專門的適配,雖然建立介面卡灰常簡單,但是每次都會有很多類似的程式碼,作
Android在程式碼中修改控制元件的位置
//這裡我用FrameLayout佈局為列,其他佈局設定方法一樣,只需改變佈局名就行 FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) photoView.getLayoutParams(); //