標籤:android技術文檔 android官方文檔 android文檔翻譯 lint android lint
本文譯自androd官方技術文檔《Android Lint》,原文地址:http://tools.android.com/tips/lint。
本文地址:http://blog.csdn.net/maosidiaoxian/article/details/41592783。轉載請註明出處。翻譯如有錯訛,敬請指正。
Android LintAndroid Lint是在ADT 16(和 Tools 16)引入的一個新工具,可以掃描Android 項目源碼中潛在的bug 。它可同時作為一個命令列工具,以及集??成在Eclipse(如下所述),和IntelliJ(詳細資料)中。這個架構是有意獨立於IDE的,因此它有希望與其他的IDE,其他的構建工具和持續整合系統整合。
以下是它進行掃描的一些錯誤類型的例子:
- 缺少翻譯(和未使用的翻譯)
- 布局效能問題(老的
layoutopt
工具會用於尋找所有這樣的問題,和除此之外更多的問題)
- 未使用的資源
- 不一致的數組大小(當在多個配置中定義數組)
- 可訪問性和國際化問題(寫入程式碼字串,缺少contentDescription等)
- 表徵圖問題 (如丟失密度、 重複表徵圖、 錯誤尺寸等)
- 可用性問題 (如不在文字欄位上指定輸入的類型)
- 清單錯誤
以及其他更多的問題。
請參閱此文檔以瞭解當前 lint 檢查的問題的完整列表。有關如何取消顯示(suppress)特定的 lint 警告資訊,請參閱取消警告顯示的文檔.
如果你對編寫自訂的lint 檢查有興趣,可以參閱編寫新的 Lint 檢查和編寫自訂 Lint 規則。命令列用法在 SDK 工具目錄有一個命令列工具叫做
lint
。如果在你的path上已經配置了 SDK 的
tools/
目錄,您可以使用“
lint
”來調用它。只需指向一個特定的 Android 項目目錄。你也可以指向一個隨機的目錄,(如果它不是一個 Android 的項目)將以遞迴方式搜尋,並將檢查該目錄下的所有項目。(你還可以指定通過空格分隔的多重專案)。
$ lint /src/astrid/
Scanning GreenDroid-GoogleAPIs: ..
Scanning stream: ...
Scanning api: ...........................
Scanning GDCatalog: .......................
Scanning GreenDroid: ...........................................................
Scanning tests: ...
Scanning filters: ....
Scanning tests: .....
Scanning astrid: ....................................................................................................................................................
Scanning simple: .......
api/res/values-ca: Error: Locale ca is missing translations for: sync_SPr_bgwifi_key, sync_SPr_forget_key, sync_SPr_interval_values, sync_SPr_logged_in_prefix... (2 more) [MissingTranslation]
astrid/res/values-ca: Error: Locale ca is missing translations for: DLG_cancel, DLG_dismiss, DLG_ok, EPr_deactivated... (117 more) [MissingTranslation]
api/res/values-cs: Error: Locale cs is missing translations for: sync_SPr_bgwifi_key, sync_SPr_forget_key, sync_SPr_interval_values, sync_SPr_logged_in_prefix... (2 more) [MissingTranslation]
(many lines omitted)
43 errors, 466 warnings
禁用檢查每種錯誤類型的“ID”都顯示在錯誤訊息後面的括弧中,如上面的“MissingTranslation”。
您可以通過添加 --disable argument,禁用一個特定的檢查,或一列的檢查,例如:
$ lint --disable MissingTranslation,UnusedIds,Usability:Icons /src/astrid/
注意,您也可以列出類別,比如上面的“Usability:Icons”,就是用性類別的表徵圖子類別。
有些檢查預設情況下牌禁用狀態。可以通過添加
--enable
標誌啟用它們。
最後,您可以通過
--check
標誌指定運行哪些確切的檢查。這讓你可以在程式碼程式庫中尋找一個具體的問題,比如:
$ lint --check MissingPrefix /src/astrid/
如果要找出哪個 id 和類別是可用的,請運行
$ lint --list
Valid issue categories:
Correctness
Security
Performance
Usability
Usability:Icons
Accessibility
Internationalization
Valid issue id‘s:
"ContentDescription": Ensures that image widgets provide a contentDescription
"DuplicateIds": Checks for duplicate ids within a single layout
"StateListReachable": Looks for unreachable states in a <selector>
"InefficientWeight": Looks for inefficient weight declarations in LinearLayouts
"ScrollViewSize": Checks that ScrollViews use wrap_content in scrolling dimension
"MergeRootFrame": Checks whether a root <FrameLayout> can be replaced with a <merge> tag
...
使用
--show
命令加上 id 列表或類別 (或不帶參數查看全部)可以擷取指定的問題的解釋:
$ lint --show MissingPrefix
MissingPrefix
-------------
Summary: Detect XML attributes not using the Android namespace
Priority: 8 / 10
Severity: Warning
Category: Correctness
Most Android views have attributes in the Android namespace. When
referencing these attributes you *must* include the namespace prefix,
or your attribute will be interpreted by aapt as just a custom
attribute.
HTML 報告這個命令列工具還可以產生HTML報告。這相比普通的 lint 輸出有一定的優勢:
- 它包含每個問題相關的更長的解釋,並通過一個More info 的屬性提供關於這個問題的更詳細資料的連結。
- 它包含有錯誤的實際的原始碼行 (上下各有三行代碼的一個視窗)。
- 它可以包含關聯到該原始碼檔案的連結
- 對於錯誤表徵圖,為能夠比較起見,在報告中會顯示表徵圖本身
要產生 HTML 報告,只需要添加
--html 檔案名稱
作為參數:
$ lint --html /tmp/report.html
預設情況下,連結到原始碼檔案將只使用本地的 file:// 路徑資源。您可以通過 --url 選項把 URL 重新對應向不同的首碼。例如:
$ lint --html /tmp/report.html --url /src/MyProj=http://buildserver/src/MyProj
其他命令列選項運行
lint --help
以擷取可用參數的相關資訊。
Eclipse 中的用法
注: 此文檔是在 lint 首次發布時編寫的。Eclipse 整合已經有了顯著的提高。欲瞭解更多最新的詳細資料,請參閱新的Eclipse Lint UI(New Eclipse Lint UI),布局編輯器 Lint 反饋(Layout Editor Lint Feedback) 和 Lint 儲存(Lint On Save).
Lint 在 ADT 16及更高的版本上整合。該整合 提供了上述 Lint 命令列版本的幾個功能:
- 自動修複許多警告
- Lint 可以在各種編輯器操作中自動運行
- 螢幕某些錯誤類型及特定的錯誤執行個體
- 配置問題檢查嚴重程度
- 從 lint 視圖直接跳轉到問題源碼
Lint 自動化在以下情況時 lint 會自動運行:
- 匯出 APK。在這種情況下,會以特殊模式運行 lint,它將只尋找致命錯誤 (這樣會更快),並且如果發現了任何錯誤的時候會中止匯出。你可以在 Lint 選項中關閉它。
- 編輯並儲存和 XML 檔案,例如布局檔案或資訊清單檔。在這種情況下,所有適用於給定檔案的檔案範圍檢查都會運行,並且會為任何已發現的問題加上編輯器的標記。
- 使用布局編輯器。每個 UI 操作後,在布局檔案上會運行檔案範圍檢查 (如各種 layoutopt 規則),並且結果將顯示在一個特別的 lint 視窗(當發現錯誤時它可以從顯示在布局編輯器的右上方的錯誤標記中開啟)。
Lint 視窗要在一個項目上運行 Lint,請在包瀏覽器中選擇項目,然後單擊 Lint 工具列上的功能(見下面的圖片)。
或者您可以在項目上右擊,在 Android Tools 子功能表中,有一個“運行 Lint”的功能。它將開啟一個 Lint 視窗,其中包含各種錯誤。選擇一個錯誤將會在右側的文本區顯示相關聯的解釋。
如果 lint 視圖上有任何錯誤,你可以在錯誤上雙擊,來跳轉到相關聯的原始碼位置。每個警告圖示將顯示其嚴重程度,並具對於已修複的警告(見下一節)會有一個小燈泡重疊。
該視窗也有一個操作欄(在右上方),它可以讓你
- 再次運行 lint 檢查以重新整理結果 (在重新整理期間它會變成一個 Stop 按鈕,用於中止檢查)
- 如果有錯誤,運行與此錯誤相關聯的修複
- 忽略此修複
- 刪除警告標記
- 刪除所有的警告標記
快速修複許多 lint 警告有自動修複功能。例如,各種 layoutopt 修複的替換提示 (如替換 wrap_content 為 0dp)。
- 從 lint 視圖中,單擊燈泡來調用一個修複程式。
- 從布局編輯器警告摘要中,單擊修複按鈕來修複。
- 從 XML 代碼編輯器中,調用快速修複 (Ctrl+1 或Command+1)並選擇與該警告關聯的快速修複。
取消錯誤警告的顯示從編輯器快速修複菜單中,你也可以選擇
- 僅忽略此檔案中的這個警告
- 忽略此項目中的這個警告
- 在此期間忽略此警告。
- 通過添加註解或屬性忽略此廣告, 此處有解釋。
(如果你在 quickfix 列表找不到 lint 的修複操作,請參閱 已知 Bug 章節)
這些選擇都儲存項目裡名為
lint.xml
的檔案中,可以通過命令列工具讀取。因此,您可以在 UI 中忽略警告,並在你的源項目關聯的
lint.xml
檔案中進行記錄,其他運行著的lint將不會看到你已經忽略的警告(大概是因為已經手動驗證了)。
選項要編輯用於所有項目備用選項的 lint 全域選項,可以調用正常的 Eclipse 選項對話方塊,並選擇 Android > Lint Options:
如果你選擇了一個問題,您可以在右下角的下拉式清單中編輯其嚴重程度。這使您可以把某些問題指定為 Error(即會在啟用了靠近頂部的對話方塊中的選項的情況下中止匯出 APK)。
要完全關閉問題檢查,請選擇“Ignore”作為嚴重程度。
請注意此操作不會編輯每個項目的 lint 設定
。開啟項目設定對話方塊 (右擊該項目),你將在這裡找到 Android Lint 的屬性頁面。在選項對話方塊中手動嚴重性編輯也會與取消顯示的錯誤一起被記錄在
lint.xml
檔案中,所以您的團隊中的其他人將會獲得你對這個項目編輯的相同的嚴重性設定。 子頁 (2): 取消 Lint 警告的顯示(Suppressing Lint Warnings) 編寫一個 Lint 檢查(Writing a Lint Check)
android官方技術文檔翻譯——Android Lint