Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android代碼審查工具---lint工具的使用

android代碼審查工具---lint工具的使用

編輯:關於Android編程


轉載請著名出處:http://blog.csdn.net/lijunhuayc



搞了這麼久android我居然不知道lint工具是干啥的,雖然每次在eclipse下右鍵項目android tools下面都能看到它,我卻木有去瞧瞧她能干嘛~作為一枚android搬磚人,我感到羞愧啊~~~~~

好吧,既然沒用過,那幾天看到這玩意兒,知道她能干啥了,那麼就來現場調戲她一番再說~

你想調戲她麼?跟著我來吧,絕對新手級別現場表演~

先來看看谷歌是如何說的:

The Android lint tool is a static code analysis tool that checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization.

In Android Studio, the configured lint and other IDE inspections run automatically whenever you compile your program. You can also manually run inspections in Android Studio by selecting Analyze > Inspect Code from the application or right-click menu. The Specify Inspections Scope dialog appears so you can specify the desired inspection profile and scope.

大體意思就是lint工具可以從各個方面checks你的項目潛在的bug等等。在你編譯運行的時候它會自動運行。你也可以手動分析程序。(一下就暴露了我是英語渣渣~~~以後不能裝逼了~~)

具體詳細的可以看這裡:http://developer.android.com/tools/help/lint.html

eclipse中運行lint有兩種方式,項目左上角工具欄裡面有個 帶勾勾 的工具可以單個或者批量檢查項目,其次是右鍵項目android tools裡面 Run lint ....


好吧,拿個項目跑一下試試:


\


我勒個去,不查不知道一check嚇一大跳。這麼多嗎蛋的問題。不說了,哭一會去了~~~


好吧,接下來一個一個的看看是不是都是有問題的,雙擊可以跳轉到對應位置去。


1、第一個紅色錯誤:是layout布局裡面用@+id 定義了多個相同的id,之所以錯誤是因為這個layout對應的界面只顯示界面,暫時沒有使用數據,布局文件有雷同的地方,存在復制粘貼的操作導致的,這裡修改一下id就可以了


<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+MqGitdq2/rj2uuzJq7TtzvOjuszhyr7Qxc+iIKGwIENsYXNzIHJlZmVyZW5jZWQgaW4gdGhlIG1hbmlmZXN0LCBjb20uZ29sZHRlbC5laW0uYWN0aXZpdHkuQ2hhdE5vdGljZUFjdGl2aXR5LCB3YXMgbm90IGZvdW5kIGluIHRoZSA8YnI+CiBwcm9qZWN0IG9yIHRoZSBsaWJyYXJpZXMgobGho9StwLTKx21hbmlmZXN0wO/D5teisuG1xGFjdGl2aXR5w7vV0rW9o6y87LLpt6LP1srHtMthY3Rpdml0edLRvq2yu7Tm1NrBy6Gjc2/S1Lrz16LS4qOsyb6z/bK708O1xGFjdGl2aXR5vMe1w8ihz/ttYW5pZmVzdNbQtcTXorLhoaM8L3A+CjxwPjxicj4KPC9wPgo8cD4zoaK12sj9uPa67MmrtO3O86O6PC9wPgo8cD7M4cq+o7qhsCAgUGxhY2luZyBhIDxXZWJWaWV3PiBpbiBhIHBhcmVudCBlbGVtZW50IHRoYXQgdXNlcyBhIHdyYXBfY29udGVudCBsYXlvdXRfaGVpZ2h0IGNhbiBsZWFkIHRvIHN1YnRsZSA8YnI+CiBidWdzOyB1c2UgbWF0Y2hfcGFyZW50IGluc3RlYWQgIKGxIHdlYnZpZXe1xHBhcmVudCBlbGVtZW50yrnTw8HLd3JhcF9jb250ZW501/fOqmhlaWdodMr00NS/ycTc0v3G8M6iw+61xEJVR6OsvajS6cq508NtYXRjaF9wYXJlbnS0+szmoaM8L3A+CjxwPjxicj4KPC9wPgo8cD54bWy0+sLryOfPwqO6PHByZSBjbGFzcz0="brush:java;">

修改webview父標簽的屬性為match_parent,但我們發現webview的父標簽是ScrollView的一個子元素,谷歌推薦我們ScrollView的子元素應該使用warp_parent屬性,所以又會出現黃色的警告信息,這裡無關緊要,不管。




依次看下面的黃色警示信息,看看哪些是需要修改的~


1、The com.gl.listener.BaseListenerService is not registered in the manifest 提示說這個service沒有在manifest注冊,查看這個服務是個基類服務,不需要注冊的。還有其他的service也是提示沒注冊的,其他的service是沒有使用到的廢棄的類,可以直接刪除了,醬紫就縮減了項目。


2、Expected duration Toast.LENGTH_SHORT or Toast.LENGTH_LONG, a custom duration value is not supported 提示說Toast.makeText的duration參數推薦應該使用Toase.LENGTH_SHORT或者Toast.LENGTH_LONG之一,沒影響不用修改。

查看了大部分警告信息,大都是無關緊要的提示,是google推薦我們的一些詳細的具體的規范,但有時候這些規范不利於我們編碼,so不一定要完全遵守,舉個例子:比如說使用ImageView控件的時候會提示我們需要一個contentDescription屬性,但是我們完全可以不寫這個屬性。


3、The resource R.dimen.bottom_tab_padding_drawable appears to be unused 提示說這個資源沒有被使用,意思就是說這些冗余的資源文件中的信息,我們不再使用過來,可以刪除了。其他還有很多這樣的信息。依次排查。經過大量的篩查可以精簡項目文件。



看這裡有300多條沒使用的資源信息,其中包括乳品,動畫xml,背景xml,字符串資源,dimens資源等等,刪除可以減少安裝包大小。並且使項目結果較為清晰,不然有朝一日[N年後的今天],你再次維護此項目的時候會讓你頭疼到死,因為你無法知道當初留下這些沒有使用的資源的用意何在(當然,這一條同樣適用於代碼冗余審查,留下不使用的代碼比資源更加難於維護)。


4、下面還有一條performance類型的警告信息,這類型的警告信息就是影響性能的警示信息了,能處理的盡量處理掉,比如:This LinearLayout layout or its RelativeLayout parent is possibly useless。本項目裡面定位到layout文件查看,發現是布局頂層使用了一個RelativeLayout,然後包著一個LinearLayout作為子布局,其他所有布局控件均在這個LinearLayout內部,意思就是說這裡的布局層級冗余了,頂層的相對布局和二層的線性布局有一個無濟於事,意思就是多了一層無用的布局,可以去除掉一層。我們這裡的處理是刪除最外層RL布局,這樣做的好處是LL內部的布局是依賴LL來布局的,如果刪除LL內部的布局務必需要調整為依賴RL,會大量修改,而刪除RL則不會影響到LL內部的控件布局。一個字:方便!!!




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved