Lint 檢查改進(jìn)代碼

使用 Lint 檢查改進(jìn)您的代碼

除了通過構(gòu)建測(cè)試來確保您的應(yīng)用符合其功能要求之外,還務(wù)必通過 Lint 運(yùn)行代碼來確保您的代碼不存在結(jié)構(gòu)問題。結(jié)構(gòu)不合理的代碼會(huì)影響 Android 應(yīng)用的可靠性和效率舟山,并使您的代碼更難以維護(hù)重窟,而 Lint 工具有助于找到這些代碼。

例如曼验,如果 XML 資源文件包含未使用的命名空間考阱,這樣不僅占用空間翠忠,而且還會(huì)導(dǎo)致不必要的處理鞠苟。其他結(jié)構(gòu)問題(如使用目標(biāo) API 版本不支持的已棄用的元素或 API 調(diào)用)可能會(huì)導(dǎo)致代碼無法正常運(yùn)行乞榨。Lint 可幫助您解決這些問題。

要進(jìn)一步提高 Lint 檢查的性能当娱,還應(yīng)向您的代碼添加注解吃既。

概覽

Android Studio 提供了一個(gè)名為 Lint 的代碼掃描工具,可幫助您發(fā)現(xiàn)并更正代碼結(jié)構(gòu)質(zhì)量的問題跨细,而無需您實(shí)際執(zhí)行應(yīng)用鹦倚,也不必編寫測(cè)試用例。系統(tǒng)會(huì)報(bào)告該工具檢測(cè)到的每個(gè)問題并提供問題的描述消息和嚴(yán)重級(jí)別冀惭,以便您可以快速確定需要優(yōu)先進(jìn)行的關(guān)鍵改進(jìn)震叙。此外,您還可以降低問題的嚴(yán)重級(jí)別以忽略與項(xiàng)目無關(guān)的問題散休,或者提高嚴(yán)重級(jí)別以突出特定問題媒楼。

Lint 工具可以檢查您的 Android 項(xiàng)目源文件是否有潛在的錯(cuò)誤,以及在正確性戚丸、安全性划址、性能、易用性、無障礙性和國(guó)際化方面是否需要優(yōu)化改進(jìn)夺颤。使用 Android Studio 時(shí)痢缎,無論何時(shí)編譯應(yīng)用,都會(huì)運(yùn)行配置的 Lint 和 IDE 檢查世澜。不過独旷,您可以手動(dòng)運(yùn)行檢查從命令行運(yùn)行 Lint

注意:在 Android Studio 中編譯代碼時(shí)寥裂,會(huì)運(yùn)行額外的 IntelliJ 代碼檢查以簡(jiǎn)化代碼審核势告。

圖 1 顯示了 Lint 工具如何處理應(yīng)用源文件。


**圖 1.** Lint 工具的代碼掃描工作流
應(yīng)用源文件

源文件包含組成 Android 項(xiàng)目的文件抚恒,包括 Java咱台、Kotlin 和 XML 文件、圖標(biāo)以及 ProGuard 配置文件俭驮。

lint.xml 文件

一個(gè)配置文件回溺,可用于指定要排除的任何 Lint 檢查以及自定義問題嚴(yán)重級(jí)別。

Lint 工具

一個(gè)靜態(tài)代碼掃描工具混萝,您可以從命令行或在 Android Studio 中對(duì) Android 項(xiàng)目運(yùn)行該工具(請(qǐng)參閱手動(dòng)運(yùn)行檢查)遗遵。Lint 工具檢查可能會(huì)影響 Android 應(yīng)用的質(zhì)量和性能的代碼結(jié)構(gòu)問題。強(qiáng)烈建議您先更正 Lint 檢測(cè)到的所有錯(cuò)誤逸嘀,然后再發(fā)布您的應(yīng)用车要。

Lint 檢查結(jié)果

您可以在控制臺(tái)或 Android Studio 的 Inspection Results 窗口中查看 Lint 檢查結(jié)果。請(qǐng)參閱[手動(dòng)運(yùn)行檢查]

從命令行運(yùn)行 Lint

如果您當(dāng)前使用 Android Studio 或 Gradle崭倘,您可以通過從項(xiàng)目的根目錄輸入以下某個(gè)命令翼岁,使用 Gradle 封裝容器對(duì)項(xiàng)目調(diào)用 lint 任務(wù):

在 Windows 上:  
gradlew lint

在 Linux 或 Mac 上:   
./gradlew lint

您應(yīng)看到類似于以下內(nèi)容的輸出:

 > Task :app:lint
    Ran lint on variant release: 5 issues found
    Ran lint on variant debug: 5 issues found
    Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results.html
    Wrote XML report to file:<path-to-project>/app/build/reports/lint-results.xml

Lint 工具完成其檢查后,會(huì)提供 XML 和 HTML 版 Lint 報(bào)告的路徑司光。然后琅坡,您可以轉(zhuǎn)到 HTML 報(bào)告并在瀏覽器中將其打開,如圖 2 所示残家。


**圖 2.** HTML Lint 報(bào)告示例

如果您的項(xiàng)目包含一些編譯變體榆俺,而您希望僅對(duì)某個(gè)特定的編譯變體運(yùn)行 lint 任務(wù),則必須將該變體名稱的首字母大寫坞淮,并在其前面加上 lint 作為前綴茴晋。

gradlew lintDebug

要詳細(xì)了解如何從命令行運(yùn)行 Gradle 任務(wù),請(qǐng)閱讀從命令行編譯您的應(yīng)用回窘。

使用獨(dú)立工具運(yùn)行 Lint

如果您當(dāng)前未使用 Android Studio 或 Gradle诺擅,您可以在通過 SDK 管理器安裝 Android SDK Tools 后使用獨(dú)立 Lint 工具。安裝該組件后毫玖,您可以在 android_sdk/tools/ 目錄中找到 Lint 工具掀虎。

要對(duì)項(xiàng)目目錄中的文件列表運(yùn)行 Lint凌盯,請(qǐng)使用以下命令:

lint [flags] <project directory>

例如,您可以發(fā)出以下命令來掃描 myproject 目錄及其子目錄下的文件烹玉。問題 ID MissingPrefix 提示 Lint 僅掃描缺少 Android 命名空間前綴的 XML 屬性驰怎。

lint --check MissingPrefix myproject 

要查看該工具支持的標(biāo)志和命令行參數(shù)的完整列表,請(qǐng)使用以下命令:

lint --help

以下示例顯示了對(duì)一個(gè)名為 Earthquake 的項(xiàng)目運(yùn)行 Lint 命令時(shí)的控制臺(tái)輸出二打。

    $ lint Earthquake

    Scanning Earthquake: ...............................................................................................................................
    Scanning Earthquake (Phase 2): .......
    AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder]
      <uses-sdk android:minSdkVersion="7" />
      ^
    AndroidManifest.xml:23: Warning: <uses-sdk> tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
      <uses-sdk android:minSdkVersion="7" />
      ^
    res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
    res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
    0 errors, 4 warnings

以上輸出未列出任何錯(cuò)誤县忌,但列出了四條警告:其中三條警告(ManifestOrderUsesMinSdkAttributesUnusedResources)出現(xiàn)在項(xiàng)目的 AndroidManifest.xml 文件中继效,一條警告 (IconMissingDensityFolder) 出現(xiàn)在 Preferences.xml 布局文件中症杏。

將 Lint 配置為抑制警告

默認(rèn)情況下,當(dāng)您運(yùn)行 Lint 掃描時(shí)瑞信,Lint 工具會(huì)檢查它支持的所有問題厉颤。您也可以限制 Lint 要檢查的問題差购,并為這些問題分配嚴(yán)重級(jí)別槽棍。例如,您可以禁止對(duì)與項(xiàng)目無關(guān)的特定問題進(jìn)行 Lint 檢查化借,也可以將 Lint 配置為以較低的嚴(yán)重級(jí)別報(bào)告非關(guān)鍵問題秤涩。
您可以配置不同級(jí)別的 Lint 檢查:

  • 全局(整個(gè)項(xiàng)目)
  • 項(xiàng)目模塊
  • 生產(chǎn)模塊
  • 測(cè)試模塊
  • 打開的文件
  • 類層次結(jié)構(gòu)
  • 版本控制系統(tǒng) (VCS) 范圍
在 Android Studio 中配置 Lint

在您使用 Android Studio 時(shí)帜乞,內(nèi)置的 Lint 工具會(huì)檢查您的代碼。您可以通過以下兩種方式查看警告和錯(cuò)誤:

  • 作為代碼編輯器中的彈出文本查看筐眷。Lint 發(fā)現(xiàn)問題后黎烈,會(huì)用黃色突出顯示有問題的代碼,而對(duì)于更嚴(yán)重的問題匀谣,則會(huì)在代碼下面添加紅色下劃線照棋。
  • 依次點(diǎn)擊 Analyze > Inspect Code 后,在 Lint Inspection Results 窗口中查看振定。請(qǐng)參閱手動(dòng)運(yùn)行檢查必怜。
配置 Lint 文件

您可以在 lint.xml 文件中指定 Lint 檢查偏好設(shè)置。如果您是手動(dòng)創(chuàng)建此文件后频,請(qǐng)將其放置在 Android 項(xiàng)目的根目錄下。

lint.xml 文件由封閉的 <lint> 父標(biāo)記組成暖途,此標(biāo)記包含一個(gè)或多個(gè) <issue> 子元素卑惜。Lint 會(huì)為每個(gè) <issue> 定義唯一的 id 屬性值。

<?xml version="1.0" encoding="UTF-8"?> 
<lint> 
    <!-- list of issues to configure -->  
</lint> 

您可以通過在 <issue> 標(biāo)記中設(shè)置嚴(yán)重級(jí)別屬性來更改某個(gè)問題的嚴(yán)重級(jí)別或?qū)υ搯栴}停用 Lint 檢查驻售。

提示:如需查看 Lint 支持的問題及其對(duì)應(yīng)的問題 ID 的完整列表露久,請(qǐng)運(yùn)行 lint --list 命令。

lint.xml 文件示例

以下示例顯示了 lint.xml 文件的內(nèi)容欺栗。

<?xml version="1.0" encoding="UTF-8"?>  
<lint>  <!-- Disable the given check in this project -->  
    <issue  id="IconMissingDensityFolder"  severity="ignore"  /> 
        <!-- Ignore the ObsoleteLayoutParam issue in the specified files -->  
    <issue  id="ObsoleteLayoutParam">  
        <ignore  path="res/layout/activation.xml"  /> 
        <ignore  path="res/layout-xlarge/activation.xml"  />  
    </issue>  <!-- Ignore the UselessLeaf issue in the specified file -->  
    <issue  id="UselessLeaf"> 
        <ignore  path="res/layout/main.xml"  />  
    </issue>  <!-- Change the severity of hardcoded strings to "error" -->  
    <issue  id="HardcodedText"  severity="error"  />  
</lint>  
配置 Java毫痕、Kotlin 和 XML 源文件的 Lint 檢查

您可以禁止 Lint 檢查 Java征峦、Kotlin 和 XML 源文件。
提示:您可以在 Default Preferences 對(duì)話框中管理 Lint 檢查 Java消请、Kotlin 或 XML 源文件的功能栏笆。只需依次選擇 File > Other Settings > Default Settings,然后在 Default Preferences 對(duì)話框的左側(cè)窗格中依次選擇 Editor > Inspections臊泰。

配置 Java 或 Kotlin 的 Lint 檢查

要專門對(duì) Android 項(xiàng)目中的某個(gè)類或方法停用 Lint 檢查蛉加,請(qǐng)向該代碼添加 @SuppressLint 注解。
以下示例展示了如何對(duì) onCreate 方法中的 NewApi 問題關(guān)閉 Lint 檢查缸逃。Lint 工具會(huì)繼續(xù)檢查該類的其他方法中的 NewApi 問題针饥。

[JAVA](https://developer.android.google.cn/studio/write/lint#java)
@SuppressLint("NewApi")  
@Override  
public  void onCreate(Bundle savedInstanceState)  {  
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  

以下示例展示了如何對(duì) FeedProvider 類中的 ParserError 問題關(guān)閉 Lint 檢查:

[JAVA](https://developer.android.google.cn/studio/write/lint#java)
@SuppressLint("ParserError")  
public  class  FeedProvider  extends  ContentProvider  { 

要禁止 Lint 檢查文件中的所有問題,請(qǐng)使用 all 關(guān)鍵字需频,如下所示:

[JAVA](https://developer.android.google.cn/studio/write/lint#java) 
@SuppressLint("all")  
配置 XML 的 Lint 檢查

您可以使用 tools:ignore 屬性對(duì) XML 文件的特定部分停用 Lint 檢查丁眼。在 lint.xml 文件中添加以下命名空間值,以便 Lint 工具能夠識(shí)別該屬性:

namespace xmlns:tools="http://schemas.android.com/tools" 

以下示例展示了如何對(duì) XML 布局文件的 <LinearLayout> 元素中的 UnusedResources 問題關(guān)閉 Lint 檢查昭殉。如果某個(gè)父元素聲明了 ignore 屬性户盯,則該元素的子元素會(huì)繼承此屬性。在本例中饲化,也會(huì)對(duì) <TextView> 子元素停用 Lint 檢查莽鸭。

//
<LinearLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    tools:ignore="UnusedResources">  
    <TextView  android:text="@string/auto_update_prompt"  />  
</LinearLayout>  

要禁止檢查多個(gè)問題,請(qǐng)使用以逗號(hào)分隔的字符串列出要禁止檢查的問題吃靠。例如:

tools:ignore="NewApi,StringFormatInvalid" 

要禁止 Lint 檢查 XML 元素中的所有問題硫眨,請(qǐng)使用 all 關(guān)鍵字,如下所示:

tools:ignore="all"
通過 Gradle 配置 Lint 選項(xiàng)

通過 Android Plugin for Gradle巢块,您可以使用模塊級(jí) build.gradle 文件中的 lintOptions {} 塊配置某些 Lint 選項(xiàng)礁阁,例如要運(yùn)行或忽略哪些檢查。以下代碼段展示了您可以配置的部分屬性:

android {  
    ... 
    lintOptions {  
        // Turns off checks for the issue IDs you specify. 
        disable 'TypographyFractions','TypographyQuotes'  
        // Turns on checks for the issue IDs you specify. These checks are in  
        // addition to the default lint checks. 
        enable 'RtlHardcoded','RtlCompat',  'RtlEnabled'  
        // To enable checks for only a subset of issue IDs and ignore all others, 
        // list the issue IDs with the 'check' property instead. This property overrides  
        // any issue IDs you enable or disable using the properties above. 
        check 'NewApi',  'InlinedApi'  
        // If set to true, turns off analysis progress reporting by lint. 
        quiet true  
        // if set to true (default), stops the build if errors are found. 
        abortOnError false  
        // if true, only report errors. 
        ignoreWarnings true  
    }  
}  
...  
創(chuàng)建警告基準(zhǔn)

您可以為項(xiàng)目的當(dāng)前警告集創(chuàng)建快照族奢,然后將該快照用作將來運(yùn)行檢查的基準(zhǔn)姥闭,以便只報(bào)告新問題。有了基準(zhǔn)快照越走,您便可開始使用 Lint 使編譯失敗棚品,而不必先返回并解決所有現(xiàn)有問題。

要?jiǎng)?chuàng)建基準(zhǔn)快照廊敌,請(qǐng)修改項(xiàng)目的 build.gradle 文件铜跑,如下所示。

android {
    lintOptions {
        baseline file("lint-baseline.xml")  
    }  
} 

首次添加此代碼行時(shí)骡澈,系統(tǒng)會(huì)創(chuàng)建 lint-baseline.xml 文件以建立基準(zhǔn)锅纺。此后,Lint 工具僅讀取該文件以確定基準(zhǔn)肋殴。如果要?jiǎng)?chuàng)建新基準(zhǔn)囤锉,請(qǐng)手動(dòng)刪除該文件并再次運(yùn)行 Lint 以重新創(chuàng)建它坦弟。

然后,從 IDE(依次選擇 Analyze > Inspect Code)或從命令行運(yùn)行 Lint官地,如下所示酿傍。系統(tǒng)會(huì)輸出 lint-baseline.xml文件的位置。您的設(shè)置的文件位置可能與此處顯示的有所不同区丑。

$ ./gradlew lintDebug

    ...

    Wrote XML report to file:///app/lint-baseline.xml
    Created baseline file /app/lint-baseline.xml

運(yùn)行 lint 會(huì)將所有當(dāng)前問題記錄在 lint-baseline.xml 文件中拧粪。當(dāng)前問題集稱為“基準(zhǔn)”,如果要與其他人共享 lint-baseline.xml 文件沧侥,您可以將其簽入版本控制可霎。

自定義基準(zhǔn)

如果要將某些問題類型(而不是全部)添加到基準(zhǔn),您可以通過修改項(xiàng)目的 build.gradle 文件來指定要添加的問題宴杀,如下所示癣朗。

android { 
    lintOptions { 
        check 'NewApi',  'HandlerLeak' 
        baseline file("lint-baseline.xml") 
    } 
}  

創(chuàng)建基準(zhǔn)后,如果向代碼庫添加任何新警告旺罢,Lint 將僅列出新引入的錯(cuò)誤旷余。

基準(zhǔn)警告

實(shí)行基準(zhǔn)時(shí),您會(huì)收到一條信息性警告扁达,告知您一個(gè)或多個(gè)問題已被過濾掉正卧,因?yàn)樗鼈円言诨鶞?zhǔn)中列出。之所以發(fā)出這條警告跪解,是為了幫您記住您已配置基準(zhǔn)炉旷,因?yàn)槔硐肭闆r下,您希望在某一時(shí)刻解決所有問題叉讥。

這條信息性警告不僅會(huì)告知您過濾掉的錯(cuò)誤和警告的確切數(shù)量窘行,而且還會(huì)跟蹤不再報(bào)告的問題。此信息可讓您知道是否確實(shí)解決了問題图仓,以便您可以選擇性地重新創(chuàng)建基準(zhǔn)罐盔,以防止錯(cuò)誤再次出現(xiàn)時(shí)檢測(cè)不到。

注意:在 IDE 中以批處理模式運(yùn)行檢查時(shí)救崔,會(huì)啟用基準(zhǔn)惶看;但對(duì)于修改文件時(shí)在后臺(tái)運(yùn)行的編輯器中的檢查,會(huì)忽略基準(zhǔn)帚豪。原因是基準(zhǔn)適用于這樣一種情況:代碼庫具有大量的現(xiàn)有警告碳竟,但您確實(shí)希望在處理代碼時(shí)在本地解決相關(guān)問題。

手動(dòng)運(yùn)行檢查

您可以通過依次選擇 Analyze > Inspect Code狸臣,手動(dòng)運(yùn)行配置的 Lint 及其他 IDE 檢查。檢查結(jié)果將顯示在 Inspection Results 窗口中昌执。

設(shè)置檢查范圍和配置文件

選擇要分析的文件(檢查范圍)和要運(yùn)行的檢查(檢查配置文件)烛亦,具體操作步驟如下:

  1. Android 視圖中诈泼,打開您的項(xiàng)目,然后選擇要分析的項(xiàng)目煤禽、文件夾或文件铐达。

  2. 從菜單欄中,依次選擇 Analyze > Inspect Code檬果。

  3. Specify Inspection Scope 對(duì)話框中瓮孙,查看設(shè)置。

    指定檢查范圍

    圖 3. 查看檢查范圍設(shè)置
    Specify Inspection Scope 對(duì)話框中顯示的選項(xiàng)組合因您選擇的是項(xiàng)目选脊、文件夾還是文件而異杭抠。您可以通過選中其他某個(gè)單選按鈕來更改要檢查的內(nèi)容。您可以在 Specify Inspection Scope 對(duì)話框中查看 Specify Inspection Scope對(duì)話框中可能顯示的所有字段的說明恳啥。

    • 如果您選擇一個(gè)項(xiàng)目偏灿、文件或目錄,Specify Inspection Scope 對(duì)話框中會(huì)顯示選定項(xiàng)目钝的、文件目錄的路徑翁垂。
    • 如果您選擇多個(gè)項(xiàng)目、文件或目錄硝桩,在 Specify Inspection Scope 對(duì)話框中沿猜,選定的文件旁邊會(huì)顯示一個(gè)選中的單選按鈕。
  4. Inspection profile 下碗脊,保留默認(rèn)配置文件 (Project Default)啼肩。

  5. 點(diǎn)擊 OK 以運(yùn)行檢查。圖 4 顯示了通過運(yùn)行檢查代碼所生成的 Lint 及其他 IDE 檢查結(jié)果:

    **圖 4.** 選擇問題以查看其解決方法

  6. 在左側(cè)窗格樹狀視圖中望薄,通過展開并選擇錯(cuò)誤類別疟游、類型和問題來查看檢查結(jié)果。
    右側(cè)窗格顯示選定錯(cuò)誤類別痕支、類型或問題的檢查報(bào)告颁虐,并提供錯(cuò)誤的名稱和位置。在適用情況下卧须,檢查報(bào)告會(huì)顯示問題概要等其他信息另绩,以幫助您更正問題。

  7. 在左側(cè)窗格樹狀視圖中花嘶,右鍵點(diǎn)擊某個(gè)類別笋籽、類型或問題,以顯示上下文菜單椭员。
    根據(jù)上下文车海,您可以執(zhí)行以下全部或部分操作:跳到源代碼、排除和包含選定項(xiàng)隘击、抑制問題侍芝、修改設(shè)置研铆、管理檢查警報(bào)和重新運(yùn)行檢查。

如需左側(cè)工具欄按鈕州叠、上下文菜單項(xiàng)和檢查報(bào)告字段的說明棵红,請(qǐng)參閱檢查工具窗口

使用自定義范圍

您可以使用 Android Studio 中提供的某個(gè)自定義范圍咧栗,具體操作步驟如下:

  1. Specify Inspection Scope 對(duì)話框中逆甜,點(diǎn)擊 Custom scope

  2. 點(diǎn)擊 Custom scope 下拉列表以顯示選項(xiàng)致板。

    選擇檢查范圍

    圖 5. 選擇要使用的自定義范圍

    • Project Files:當(dāng)前項(xiàng)目中的所有文件交煞。
    • Project Production Files:僅限當(dāng)前項(xiàng)目中的生產(chǎn)文件。
    • Project Test Files:僅限當(dāng)前項(xiàng)目中的測(cè)試文件可岂。請(qǐng)參閱測(cè)試類型和位置错敢。
    • Open Files:僅限當(dāng)前項(xiàng)目中已打開的文件。
    • Module <your-module>:僅限當(dāng)前項(xiàng)目中對(duì)應(yīng)模塊文件夾中的文件缕粹。
    • Current File:僅限當(dāng)前項(xiàng)目中的當(dāng)前文件稚茅。當(dāng)您選擇了文件或文件夾時(shí),會(huì)顯示此選項(xiàng)平斩。
    • Class Hierarchy:如果您選擇此選項(xiàng)并點(diǎn)擊 OK亚享,會(huì)出現(xiàn)一個(gè)對(duì)話框,其中顯示當(dāng)前項(xiàng)目中的所有類绘面。您可以使用此對(duì)話框中的 Search by Name 字段過濾并選擇要檢查的類欺税。如果未過濾類列表,代碼檢查將檢查所有類揭璃。
  3. 點(diǎn)擊 OK晚凿。

創(chuàng)建自定義范圍

如果您要檢查的部分文件和目錄不在當(dāng)前可用的任何自定義范圍內(nèi),您可以創(chuàng)建自定義范圍瘦馍。

  1. Specify Inspection Scope 對(duì)話框中歼秽,選擇 Custom scope

  2. 點(diǎn)擊 Custom Scope 下拉列表后面的三個(gè)點(diǎn)情组。

    **圖 6.** “Specify Inspection Scope”對(duì)話框

    此時(shí)將顯示 Scopes 對(duì)話框燥筷。
    **圖 7.** 創(chuàng)建自定義范圍

  3. 點(diǎn)擊 Add 圖標(biāo) (加號(hào))以定義新范圍。

  4. 在隨即出現(xiàn)的 Add Scope 下拉列表中院崇,選擇 Local肆氓。
    局部范圍和共享范圍都在項(xiàng)目?jī)?nèi)用于檢查代碼功能。共享范圍還可用于具有范圍字段的其他項(xiàng)目功能底瓣。例如谢揪,當(dāng)您點(diǎn)擊 Edit Settings 圖標(biāo) !(扳手)以更改 Find Usages 的設(shè)置時(shí),隨即出現(xiàn)的對(duì)話框中包含一個(gè) Scope 字段,您可以在其中選擇共享范圍键耕。

    **圖 8.** 從 **Find Usages** 對(duì)話框中選擇共享范圍

  5. 為范圍命名寺滚,然后點(diǎn)擊 OK柑营。
    Scopes 對(duì)話框的右側(cè)窗格填充有可用于定義自定義范圍的選項(xiàng)屈雄。

  6. 從下拉列表中,選擇 Project官套。
    此時(shí)將顯示可用項(xiàng)目的列表酒奶。
    注意:您可以為項(xiàng)目或軟件包創(chuàng)建自定義范圍。它們的步驟相同奶赔。

  7. 展開項(xiàng)目文件夾惋嚎,選擇要添加到自定義范圍的內(nèi)容,然后點(diǎn)擊右側(cè)的某個(gè)按鈕站刑。


    **圖 9.** 定義自定義范圍
    • Include:包含此文件夾及其文件另伍,但不包含其任何子文件夾。
    • Include Recursively:包含此文件夾及其所有文件绞旅,以及子文件夾及其文件摆尝。
    • Exclude:排除此文件夾及其文件,但不排除其任何子文件夾因悲。
    • Exclude Recursively:排除此文件夾及其所有文件堕汞,以及子文件夾及其文件。

    圖 10 顯示包含 main 文件夾晃琳,并且遞歸包含 java 文件夾讯检。藍(lán)色表示部分包含的文件夾,而綠色表示遞歸包含的文件夾和文件卫旱。

    **圖 10.** 自定義范圍模式示例

    • 如果您選擇 java 文件夾并點(diǎn)擊 Exclude Recursively人灼,java 文件夾以及該文件夾下的所有文件夾和文件將不再用綠色突出顯示。
    • 相反顾翼,如果您選擇用綠色突出顯示的 MainActivity.java 文件并點(diǎn)擊“Exclude”投放,MainActivity.java 將不再用綠色突出顯示,而 java 文件夾下的其他所有項(xiàng)目則會(huì)用綠色突出顯示暴构。
  8. 點(diǎn)擊 OK跪呈。該自定義范圍將顯示在下拉列表的底部。

查看和修改檢查配置文件

Android Studio 附帶了許多 Lint 及其他檢查配置文件取逾,這些配置文件可通過 Android 更新進(jìn)行更新耗绿。您可以原封不動(dòng)地使用這些配置文件,也可以修改它們的名稱砾隅、說明误阻、嚴(yán)重級(jí)別和范圍。您還可以激活和禁用整組的配置文件或一組配置文件中的個(gè)別配置文件。
要訪問 Inspections 對(duì)話框究反,請(qǐng)執(zhí)行以下操作:

  1. 依次選擇 Analyze > Inspect Code寻定。
  2. Specify Scope 對(duì)話框的 Inspection Profile 下,點(diǎn)擊 More精耐。
    此時(shí)將顯示 Inspections 對(duì)話框狼速,其中列出了支持的檢查及其說明。
    **圖 11.** 支持的檢查及其說明
  3. 選擇 Profile 下拉列表卦停,以在 Default (Android Studio) 與 Project Default(活動(dòng)項(xiàng)目)檢查之間切換向胡。如需了解詳情,請(qǐng)參閱以下 IntelliJ 頁面:“Specify Inspection Scope”對(duì)話框惊完。
  4. 在左側(cè)窗格的 Inspections 對(duì)話框中僵芹,選擇一個(gè)頂級(jí)配置文件類別,或展開一個(gè)組并選擇特定的配置文件小槐。選擇一個(gè)配置文件類別后拇派,您可以將該類別中的所有檢查項(xiàng)目當(dāng)作一個(gè)檢查項(xiàng)目進(jìn)行修改。
  5. 選擇 Manage 下拉列表凿跳,以復(fù)制檢查項(xiàng)目件豌、對(duì)檢查項(xiàng)目進(jìn)行重命名、向檢查項(xiàng)目添加說明拄显,以及導(dǎo)出和導(dǎo)入檢查項(xiàng)目苟径。
  6. 操作完成后,點(diǎn)擊 OK躬审。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棘街,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子承边,更是在濱河造成了極大的恐慌遭殉,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件博助,死亡現(xiàn)場(chǎng)離奇詭異险污,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)富岳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蛔糯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窖式,你說我怎么就攤上這事蚁飒。” “怎么了萝喘?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵淮逻,是天一觀的道長(zhǎng)琼懊。 經(jīng)常有香客問我,道長(zhǎng)爬早,這世上最難降的妖魔是什么哼丈? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮筛严,結(jié)果婚禮上醉旦,老公的妹妹穿的比我還像新娘。我一直安慰自己脑漫,他們只是感情好髓抑,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著优幸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪褪猛。 梳的紋絲不亂的頭發(fā)上网杆,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音伊滋,去河邊找鬼碳却。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笑旺,可吹牛的內(nèi)容都是我干的昼浦。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼筒主,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼关噪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乌妙,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤使兔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后藤韵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虐沥,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年泽艘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欲险。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匹涮,死狀恐怖天试,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情焕盟,我是刑警寧澤秋秤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布宏粤,位于F島的核電站,受9級(jí)特大地震影響灼卢,放射性物質(zhì)發(fā)生泄漏绍哎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一鞋真、第九天 我趴在偏房一處隱蔽的房頂上張望崇堰。 院中可真熱鬧,春花似錦涩咖、人聲如沸海诲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽特幔。三九已至,卻和暖如春闸昨,著一層夾襖步出監(jiān)牢的瞬間蚯斯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工饵较, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拍嵌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓循诉,卻偏偏與公主長(zhǎng)得像横辆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茄猫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android Studio 提供一個(gè)名為 Lint 的代碼掃描工具狈蚤,可幫助您發(fā)現(xiàn)并糾正代碼結(jié)構(gòu)質(zhì)量的問題,而無需...
    沐風(fēng)雨木閱讀 2,506評(píng)論 1 2
  • Android Lint 是有 Android SDK 提供的一種靜態(tài)代碼檢測(cè)工具募疮,用于檢測(cè) Android 的代...
    灰灰鴿閱讀 10,455評(píng)論 1 15
  • 官方原文鏈接地址 本文只是個(gè)人為了整理Lint相關(guān)知識(shí)炫惩,依據(jù)谷歌翻譯整理而成,水平確實(shí)不堪阿浓,很多地方自己都讀不太懂...
    kai_w閱讀 928評(píng)論 1 0
  • 生活也許過不了幾天就要發(fā)生變化 我只能適應(yīng) 雖然他嚷,不見得,這一開始就是我想要的芭毙,計(jì)劃內(nèi)的 只不過筋蓖,來了,就得學(xué)會(huì)改...
    queeny23閱讀 200評(píng)論 0 1
  • 聽說北國(guó)的秋天會(huì)見到滿天飄落的樹葉退敦,像金子般閃閃發(fā)光粘咖。聽說北國(guó)的冬天會(huì)見到漫天的飛雪,像仙女般隨風(fēng)起舞侈百。我的北國(guó)…...
    櫻花中的小雨滴閱讀 327評(píng)論 0 0