當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀] Android Lint是在ADT 16(和 Tools 16)引入的一個新工具,可以掃描Android 項目源碼中潛在的bug 。它可同時作為一個命令行工具,以及集??成在Eclipse(如下所述),和Intell

 Android Lint是在ADT 16(和 Tools 16)引入的一個新工具,可以掃描Android 項目源碼中潛在的bug 。它可同時作為一個命令行工具,以及集??成在Eclipse(如下所述),和IntelliJ(詳細信息)中。這個架構是有意獨立于IDE的,因此它有希望與其他的IDE,其他的構建工具和持續(xù)集成系統(tǒng)集成。

以下是它進行掃描的一些錯誤類型的例子:

缺少翻譯(和未使用的翻譯)

布局性能問題(老的layoutopt工具會用于查找所有這樣的問題,和除此之外更多的問題)

未使用的資源

不一致的數(shù)組大小(當在多個配置中定義數(shù)組)

可訪問性和國際化問題(硬編碼字符串,缺少contentDescription等)

圖標問題 (如丟失密度、 重復圖標、 錯誤尺寸等)

可用性問題 (如不在文本字段上指定輸入的類型)

清單錯誤 以及其他更多的問題。

請參閱此文檔以了解當前 lint 檢查的問題的完整列表。 有關如何取消顯示(suppress)特定的 lint 警告信息,請參閱取消警告顯示的文檔.

如果你對編寫自定義的lint 檢查有興趣,可以參閱編寫新的 Lint 檢查和編寫自定義 Lint 規(guī)則。

命令行用法

在 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”,就是用性類別的圖標子類別。

有些檢查默認情況下牌禁用狀態(tài)??梢酝ㄟ^添加--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

InefficientWeight: Looks for inefficient weight declarations in LinearLayouts

ScrollViewSize: Checks that ScrollViews use wrap_content in scrolling dimension

MergeRootFrame: Checks whether a root can be replaced with atag

...

使用--show命令加上 id 列表或類別 (或不帶參數(shù)查看全部)可以獲取指定的問題的解釋:

$ 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 輸出有一定的優(yōu)勢:

它包含每個問題相關的更長的解釋,并通過一個More info 的屬性提供關于這個問題的更詳細信息的鏈接。

它包含有錯誤的實際的源代碼行 (上下各有三行代碼的一個窗口)。

它可以包含關聯(lián)到該源代碼文件的鏈接

對于錯誤圖標,為能夠比較起見,在報告中會顯示圖標本身 要生成 HTML 報告,只需要添加--html 文件名 作為參數(shù):[!--empirenews.page--]

$ lint --html /tmp/report.html

默認情況下,鏈接到源代碼文件將只使用本地的 file:// 路徑資源。您可以通過 --url 選項把 URL 重新映射向不同的前綴。例如:

$ lint --html /tmp/report.html --url /src/MyProj=http://buildserver/src/MyProj

其他命令行選項

運行l(wèi)int --help以獲取可用參數(shù)的相關信息。

Eclipse 中的用法

注: 此文檔是在 lint 首次發(fā)布時編寫的。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,它將只查找致命錯誤 (這樣會更快),并且如果發(fā)現(xiàn)了任何錯誤的時候會中止導出。你可以在 Lint 選項中關閉它。

編輯并保存和 XML 文件,例如布局文件或清單文件。在這種情況下,所有適用于給定文件的文件范圍檢查都會運行,并且會為任何已發(fā)現(xiàn)的問題加上編輯器的標記。

使用布局編輯器。每個 UI 操作后,在布局文件上會運行文件范圍檢查 (如各種 layoutopt 規(guī)則),并且結果將顯示在一個特別的 lint 窗口(當發(fā)現(xiàn)錯誤時它可以從顯示在布局編輯器的右上角的錯誤標記中打開)。

Lint 窗口

要在一個項目上運行 Lint,請在包瀏覽器中選擇項目,然后單擊 Lint 工具欄上的功能(見下面的圖片)。

或者您可以在項目上右擊,在 Android Tools 子菜單中,有一個“運行 Lint”的功能。它將打開一個 Lint 窗口,其中包含各種錯誤。選擇一個錯誤將會在右側的文本區(qū)顯示相關聯(lián)的解釋。

如果 lint 視圖上有任何錯誤,你可以在錯誤上雙擊,來跳轉到相關聯(lián)的源代碼位置。每個警告圖標將顯示其嚴重程度,并具對于已修復的警告(見下一節(jié))會有一個小燈泡重疊。

該窗口也有一個操作欄(在右上角),它可以讓你

再次運行 lint 檢查以刷新結果 (在刷新期間它會變成一個 Stop 按鈕,用于中止檢查)

如果有錯誤,運行與此錯誤相關聯(lián)的修復

忽略此修復

刪除警告標記

刪除所有的警告標記

快速修復

許多 lint 警告有自動修復功能。例如,各種 layoutopt 修復的替換提示 (如替換 wrap_content 為 0dp)。

從 lint 視圖中,單擊燈泡來調用一個修復程序。

從布局編輯器警告摘要中,單擊修復按鈕來修復。

從 XML 代碼編輯器中,調用快速修復 (Ctrl+1 或Command+1)并選擇與該警告關聯(lián)的快速修復。

取消錯誤警告的顯示

從編輯器快速修復菜單中,你也可以選擇

僅忽略此文件中的這個警告

忽略此項目中的這個警告

在此期間忽略此警告。

通過添加注解或屬性忽略此廣告, 此處有解釋。

(如果你在 quickfix 列表找不到 lint 的修復操作,請參閱 已知 Bug 章節(jié))

這些選擇都存儲項目里名為lint.xml的文件中,可以通過命令行工具讀取。因此,您可以在 UI 中忽略警告,并在你的源項目關聯(lián)的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)

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉