lint チェックによるコードの改善

アプリが機能要件を満たしていることを確認するためにテストを作成するだけでなく、lint ツールを使用してコードを実行し、コードに構造上の問題がないことを確認することも重要です。lint ツールは、構造化が不十分なコードの発見に役立ちます。そのようなコードは Android アプリの信頼性と効率に悪影響を及ぼし、コードの保守を困難にします。アプリを公開する前に、lint が検出したエラーをすべて修正することを強くおすすめします。

たとえば、XML リソース ファイルに未使用の名前空間が含まれていると、スペースを必要とし、不要な処理が発生します。非推奨になった要素や、ターゲットの API バージョンでサポートされていない API 呼び出しといった構造上の問題があると、コードが適切に実行されなくなることがあります。lint はこうした問題を除去するのに役立ちます。

lint チェックのパフォーマンスを改善するには、コードにアノテーションを追加することもできます。

概要

Android Studio には、lint と呼ばれるコードスキャン ツールがあります。このツールを使用すると、アプリの実行やテストケースの作成を行わずに、コードの構造上の品質に関する問題を特定して修正できます。ツールによって問題が検出されると、問題の内容を説明するメッセージと重大度レベルも報告されるので、実施する必要がある重要な改善を速やかに優先順位付けできます。プロジェクトと無関係な問題を無視するために問題の重大度レベルを下げたり、特定の問題を優先するために重大度レベルを上げたりすることもできます。

lint ツールは、Android プロジェクトのソースファイルをチェックして潜在的なバグを探し、正確性、セキュリティ、パフォーマンス、ユーザビリティ、ユーザー補助、国際化機能を最適化するための改善点を検出します。Android Studio を使用すると、アプリをビルドするときに、設定済みの lint インスペクションと IDE インスペクションが実行されます。ただし、このページで説明するように、インスペクションを手動で実行することも、コマンドラインから lint を実行することもできます。

Android Studio の使用中は、組み込みの lint ツールによってコードがチェックされます。次の 2 つの方法で警告とエラーを表示できます。

  • エディタ ウィンドウのポップアップ テキストとして表示されます。lint が問題を検出すると、問題のあるコードが黄色でハイライト表示されます。重大な問題の場合は、コードに赤色の下線が引かれます。
  • lint の [Inspection Results] ウィンドウで、[Code] > [Inspect Code] をクリックします。

注: Android Studio でコードがコンパイルされると、IntelliJ コード インスペクションも実行されるため、効率的にコードレビューを実施できます。最新の lint ルールとインスペクションを利用できるように、Android Studio をできるだけ最新の状態に保ってください。

図 1 は、lint ツールがアプリのソースファイルをどのように処理するかを示しています。

lint ツールを使用したコードスキャンのワークフロー。
図 1. lint ツールを使用したコード検査のワークフロー。
アプリのソースファイル
ソースファイルは、Kotlin、Java、XML ファイル、アイコン、ProGuard 設定ファイルなど、Android プロジェクトを構成するファイルで構成されています。
lint.xml ファイル
除外する lint チェックを指定し、問題の重大度レベルをカスタマイズするために使用する設定ファイル。
lint ツール
Android プロジェクトに対して実行できる静的コードスキャン ツールです。コマンドラインまたは Android Studio で実行できます。lint ツールは、Android アプリの品質とパフォーマンスに悪影響を及ぼす可能性があるコードの構造上の問題をチェックします。
lint チェックの結果
lint チェックの結果は、コンソールか、または Android Studio の [Inspection Results] ウィンドウで確認できます。コマンドラインから lint を実行すると、結果は build/ フォルダに書き込まれます。詳細については、インスペクションを手動で実行するをご覧ください。

コマンドラインから lint を実行する

Android Studio または Gradle を使用している場合は、プロジェクトのルート ディレクトリから以下のいずれかのコマンドを入力することで、Gradle ラッパーを使用してプロジェクトの lint タスクを呼び出すことができます。

注: 最新の lint ルールを使用するには、Android Gradle プラグインをできるだけ最新の状態に保ってください。

  • Windows の場合:
    gradlew lint
    
  • Linux または macOS の場合:
    ./gradlew lint
    

出力は次のようになります。

> Task :app:lintDebug
Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results-debug.html

lint ツールによるチェックが完了すると、lint レポートの XML バージョンおよび HTML バージョンのパスが表示されます。図 2 に示すように、HTML レポートに移動してブラウザで開くことができます。

HTML 版 lint レポートの例
図 2. HTML 版 lint レポートの例。

プロジェクトにビルド バリアントが含まれている場合、lint はデフォルトのバリアントのみをチェックします。別のバリアントに対して lint を実行するには、バリアント名を大文字にして、先頭に lint を付ける必要があります。

./gradlew lintRelease

注: リントは、ビルドの一部として自動的に実行されません。既存のソースコードをビルドするときに最新の lint チェックが表示されるように、継続的インテグレーション ビルドの一部として lint を明示的に実行することを強くおすすめします。

コマンドラインから Gradle タスクを実行する方法については、コマンドラインからアプリをビルドするをご覧ください。

スタンドアロン ツールで lint を実行する

Android Studio も Gradle も使用していない場合は、Android SDK コマンドライン ツールをインストールして、スタンドアロンの lint ツールを使用します。lint ツールは android_sdk/cmdline-tools/version/bin/lint にあります。

注: Gradle プロジェクトでスタンドアロン ツールを実行しようとすると、エラーが発生します。Gradle プロジェクトで lint を実行する場合は、常に gradle lint(Windows の場合)または ./gradlew lint(macOS または Linux の場合)を使用する必要があります。

プロジェクト ディレクトリにあるファイルのリストに対して lint を実行するには、次のコマンドを使用します。

lint [flags] <project directory>

たとえば、myproject ディレクトリとそのサブディレクトリにあるファイルをスキャンするには、下記のコマンドを実行します。問題 ID MissingPrefix は、Android 名前空間接頭辞が不足している XML 属性のみをスキャンするよう lint に指示します。

lint --check MissingPrefix myproject 

このツールでサポートされているフラグとコマンドライン引数の一覧は、次のコマンドで確認できます。

lint --help

次の例は、Earthquake というプロジェクトに対して lint コマンドを実行したときのコンソール出力を示しています。

$ 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

出力例には、警告が 4 つあり、エラーはありません。

プロジェクトの AndroidManifest.xml ファイルに関連する警告が 2 つあります。

  • ManifestOrder
  • UsesMinSdkAttributes
1 件の警告は、Preferences.xml レイアウト ファイル UnusedResources に関連しています。

res ディレクトリ IconMissingDensityFolder に関連する警告が 1 つあります。

警告を抑制するように lint を設定する

デフォルトでは、lint スキャンを実行すると、lint がサポートする問題がすべてチェックされますが、lint でチェックする問題を限定したり、問題の重大度レベルを指定したりすることもできます。たとえば、プロジェクトと無関係な特定の問題に対する lint チェックを無効にしたり、重要でない問題がレポートされる重大度レベルを下げたりできます。

重大度は次のとおりです。

  • enable
  • disable または ignore
  • informational
  • warning
  • error
  • fatal

次に示すさまざまなレベルで lint チェックを設定できます。

  • グローバル(プロジェクト全体)
  • プロジェクト モジュール
  • 製品版モジュール
  • テスト モジュール
  • 開いているファイル
  • クラス階層
  • バージョン管理システム(VCS)のスコープ

lint ファイルを設定する

lint チェックの設定は、lint.xml ファイルで指定できます。このファイルを手動で作成する場合は、Android プロジェクトのルート ディレクトリに配置してください。

lint.xml ファイルは、1 つ以上の <issue> 子要素を囲む <lint> 親タグで構成されます。lint では、<issue> ごとに固有の id 属性値が定義されます。

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

問題の重大度レベルを変更するか、問題の lint チェックを無効にするには、<issue> タグで severity 属性を設定します。

ヒント: lint がサポートする問題と、それに対応する問題 ID の完全なリストを表示するには、lint --list コマンドを実行します。

サンプル lint.xml ファイル

次の例は、lint.xml ファイルの内容を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Disable the IconMissingDensityFolder 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>

この例は、さまざまな問題タイプがどのように報告されるかを示しています。IconMissingDensityFolder チェックは完全に無効になり、ObsoleteLayoutParam チェックは、囲まれた <ignore ... /> 宣言で指定されたファイルでのみ無効になります。

Kotlin、Java、XML ソースファイルの lint チェックを設定する

Kotlin、Java、XML ソースファイルの lint チェックは、[Preferences] ダイアログでオフにできます。

  1. [File] > [Settings](Windows の場合)または [Android Studio] > [Preferences](macOS または Linux の場合)を選択します。
  2. [Editor] > [Inspections] を選択します。
  3. 無効にするには、適切なソースファイルの選択を解除します。

これらの設定は、適切なプロファイルを選択することで、IDE または個々のプロジェクトに対して設定できます。

Java または Kotlin で lint チェックを設定する

Android プロジェクトのクラスまたはメソッドに対する lint チェックのみを無効にするには、そのコードに @SuppressLint アノテーションを追加します。

次の例は、onCreate メソッドで NewApi 問題の lint チェックをオフにする方法を示しています。lint ツールは、このクラスの他のメソッドでは引き続き NewApi 問題をチェックします。

Kotlin

@SuppressLint("NewApi")
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

Java

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

同じことは、任意のコンポーザブルでも実行できます。次のコード スニペットは、任意の Composable で NewApi チェックをオフにする方法を示しています。

Kotlin

  @SuppressLint("NewApi")
  @Composable
  fun MyComposable{
    ...
  }
  

次の例は、FeedProvider クラスで ParserError 問題の lint チェックをオフにする方法を示しています。

Kotlin

@SuppressLint("ParserError")
class FeedProvider : ContentProvider() {

Java

@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {

ファイル内のすべての lint 問題のチェックを無効にするには、all キーワードを使用します。

Kotlin

@SuppressLint("all")

Java

@SuppressLint("all")

同じアノテーションを使用して、任意のコンポーズ可能な関数の lint チェックを抑制できます。

XML で lint チェックを設定する

XML ファイルの特定のセクションに対する lint チェックを無効にするには、tools:ignore 属性を使用します。lint.xml ファイルに次の名前空間値を挿入すると、lint ツールによって属性が認識されます。

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

次の例は、XML レイアウト ファイルの <LinearLayout> 要素で UnusedResources 問題の lint チェックをオフにする方法を示しています。ignore 属性は、属性が宣言されている親要素の子要素によって継承されます。この例では、<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>

複数の問題に対するチェックを無効にするには、無効にする問題のリストをカンマ区切り文字列で指定します。次に例を示します。

tools:ignore="NewApi,StringFormatInvalid"

XML 要素のすべての lint 問題のチェックを無効にするには、all キーワードを使用します。

tools:ignore="all"

Gradle で lint オプションを設定する

Android Gradle プラグインを使用すると、モジュール レベルの build.gradle ファイルの lint{} ブロックで、実行するチェックや無視するチェックなど、特定の lint オプションを設定できます。

次のコード スニペットは、設定可能なプロパティの一部を示しています。

Kotlin

android {
    ...
    lint {
        // 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.
        checkOnly += "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 set to true, lint only reports errors.
        ignoreWarnings = true
        // If set to true, lint also checks all dependencies as part of its analysis.
        // Recommended for projects consisting of an app with library dependencies.
        checkDependencies = true
    }
}
...

Groovy

android {
    ...
    lint {
        // 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.
        checkOnly '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 set to true, lint only reports errors.
        ignoreWarnings true
        // If set to true, lint also checks all dependencies as part of its analysis.
        // Recommended for projects consisting of an app with library dependencies.
        checkDependencies true
    }
}
...

問題の特定の重大度をオーバーライドする lint メソッドはすべて、設定の順序を考慮します。たとえば、finalizeDsl() で問題を fatal に設定すると、メイン DSL での問題の無効化よりも優先されます。

警告ベースラインを作成する

プロジェクトの現在の警告セットのスナップショットを作成し、将来のインスペクションでスナップショットをベースラインとして使用すると、新しい問題のみをレポートできます。ベースライン スナップショットを使用すると、すべての既存の問題に戻って対処する手間をかけずに、lint でビルドエラーをチェックできます。

ベースライン スナップショットを作成するには、プロジェクトの build.gradle ファイルを次のように変更します。

Kotlin

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

Groovy

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

初めてこの行を追加したとき、ベースラインを確立するために lint-baseline.xml ファイルが作成されます。それ以降、ツールはベースラインを確認するためにファイルの読み取りのみを行います。新しいベースラインを作成する場合は、手動でファイルを削除し、lint を再度実行してファイルを再作成します。

次に、[Code] > [Inspect Code] を選択して IDE から lint を実行するか、次のようにコマンドラインから lint を実行します。出力に、lint-baseline.xml ファイルの場所が表示されます。設定用のファイルの場所は、ここで示している例とは異なる場合があります。

$ ./gradlew lintDebug -Dlint.baselines.continue=true
...
Wrote XML report to file:///app/lint-baseline.xml
Created baseline file /app/lint-baseline.xml

lint を実行すると、lint-baseline.xml ファイルに現在の問題がすべて記録されます。現在の問題セットをベースラインと呼びます。lint-baseline.xml ファイルを他のユーザーと共有する場合は、バージョン管理システムにチェックインします。

ベースラインをカスタマイズする

ベースラインに特定の問題タイプのみを追加する場合は、次のようにプロジェクトの build.gradle ファイルを編集して、追加する問題タイプを指定します。

Kotlin

android {
    lint {
        checkOnly += "NewApi" + "HandlerLeak"
        baseline = file("lint-baseline.xml")
    }
}

Groovy

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

ベースラインの作成後にコードベースに新しい警告を追加すると、lint は新たに追加されたバグのみをリストします。

ベースライン警告

ベースラインが有効になっている場合、1 つ以上の問題がベースラインに含まれているために除外されたことを知らせる情報警告が表示されます。この警告は、ベースラインが設定されていること、およびある時点ですべての問題を修正する必要があることをリマインドするために表示されます。

この情報警告は、今後レポートされない問題もトラッキングします。この情報により、実際に問題が修正されたかどうかがわかります。そのため、オプションでベースラインを再作成して、エラーが検出されずに復活するのを防ぐことができます。

注: ベースラインは、IDE でインスペクションをバッチモードで実行するときは有効になりますが、ファイルの編集時にバックグラウンドで実行されるエディタ内チェックでは無視されます。これは、ベースラインを使用するケースとして、コードベースに既存の警告が大量に存在し、コードの編集時にローカルで問題を修正する場合を想定しているためです。

手動でインスペクションを実行する

設定済みの lint とその他の IDE インスペクションを手動で実行するには、[Code] > [Inspect Code] を選択します。インスペクションの結果は [Inspection Results] ウィンドウに表示されます。

インスペクションのスコープとプロファイルを設定する

分析するファイル(インスペクション スコープ)と実行するインスペクション(インスペクション プロファイル)を選択する手順は次のとおりです。

  1. [Android] ビューでプロジェクトを開き、分析するプロジェクト、フォルダ、またはファイルを選択します。
  2. メニューバーから、[Code] > [Inspect Code] を選択します。
  3. [Specify Inspection Scope] ダイアログで、設定を確認します。

    インスペクション スコープの設定を確認する
    図 3. インスペクション スコープの設定を確認します。

    [Specify Inspection Scope] ダイアログに表示されるオプションは、プロジェクト、フォルダ、ファイルのどれを選択したかによって異なります。

    • プロジェクト、ファイル、またはディレクトリを 1 つ選択すると、選択したプロジェクト、ファイル、またはディレクトリのパスが [Specify Inspection Scope] ダイアログに表示されます。
    • 複数のプロジェクト、ファイル、またはディレクトリを選択すると、[選択したファイル] に対してオンになったラジオボタンが [検査範囲の指定] ダイアログに表示されます。

    インスペクションの対象を変更するには、他のいずれかのラジオボタンを選択します。[Specify Inspection Scope] ダイアログに表示される可能性があるすべてのフィールドについては、Specify Inspection Scope ダイアログの説明をご覧ください。

  4. [検査プロファイル] で、使用するプロファイルを選択します。
  5. [OK] をクリックして、インスペクションを実行します。

    図 4 は、[Inspect Code] から実行した lint および他の IDE インスペクションの結果を示しています。

    問題を選択して解決策を表示します。
    図 4. 検査の結果。問題を選択して解決策を表示します。
  6. [Inspection Results] ペインで、エラーのカテゴリ、タイプ、問題を展開して選択し、インスペクションの結果を表示します。

    [インスペクション レポート] ペインには、[インスペクション結果] ペインで選択したエラーのカテゴリ、タイプ、問題のインスペクション レポートが表示され、エラーの名前と場所が表示されます。場合によっては、問題の解決に役立つ問題の概要などの情報もインスペクション レポートに表示されます。

  7. [インスペクション結果] ペインのツリービューで、カテゴリ、タイプ、または問題を右クリックしてコンテキスト メニューを表示します。

    コンテキストに応じて、次のことができます。

    • ソースにジャンプします。
    • 選択したアイテムを除外または含める。
    • 問題を抑制する。
    • 設定を編集します。
    • 検査アラートを管理する。
    • 検査を再実行します。

ツールバー ボタン、コンテキスト メニュー項目、インスペクション レポートのフィールドの詳細については、 [Inspection Results] ツールウィンドウの説明をご覧ください。

カスタム スコープを使用する

Android Studio に用意されているカスタム スコープのいずれかを使用する手順は次のとおりです。

  1. [Specify Inspection Scope] ダイアログで、[Custom scope] を選択します。
  2. [Custom scope] リストをクリックして、オプションを表示します。

    使用するインスペクション スコープを選択する
    図 5. 使用するカスタム スコープを選択します。
    • すべての場所: すべてのファイル。
    • [Project Files]: 現在のプロジェクト内のすべてのファイル。
    • [Project Source Files]: 現在のプロジェクト内のソースファイルのみ。
    • [Project Production Files]: 現在のプロジェクト内の製品版ファイルのみ。
    • [Project Test Files]: 現在のプロジェクト内のテストファイルのみ。
    • Scratches and Consoles:現在のプロジェクトで開いているスクラッチファイルとコンソールのみ。
    • Recently Viewed Files:現在のプロジェクト内で最近閲覧したファイルのみ。
    • [Current File]: 現在のプロジェクト内の現在のファイルのみ。1 つのファイルまたはフォルダを選択している場合にのみ表示されます。
    • [Selected Directory]: 現在のプロジェクト内の現在のフォルダのみ。フォルダを選択している場合にのみ表示されます。
    • [Class Hierarchy]: このオプションを選択して [OK] をクリックすると、現在のプロジェクト内のすべてのクラスを示すダイアログが開きます。ダイアログで [Search by Name] フィールドを使用して、検査するクラスをフィルタして選択します。クラスリストの絞り込みを行わないと、コード インスペクションによってすべてのクラスが検査されます。
  3. プロジェクトに VCS が構成されている場合は、変更されたファイルのみを検索するように制限することもできます。

  4. [OK] をクリックします。

カスタム スコープを作成する

使用可能なカスタム スコープのいずれも対応していないファイルとディレクトリを選択して検査するには、カスタム スコープを作成します。

  1. [Specify Inspection Scope] ダイアログで、[Custom scope] を選択します。
  2. [Custom Scope] リストの横にあるその他メニューをクリックします。

    [Specify Inspection Scope] ダイアログ
    図 6. [Specify Inspection Scope] ダイアログ

    [Scopes] ダイアログが表示されます。

    カスタム スコープを作成する
    図 7. カスタム スコープを作成する。
  3. ダイアログの左上にある ボタンをクリックして、新しいスコープを定義します。
  4. 表示された [Add Scope] リストで、[Local] を選択します。

    プロジェクト内では、ローカル スコープと共有スコープの両方がコード インスペクション機能に使用されます。共有スコープは、スコープ フィールドを含む他のプロジェクト機能でも使用できます。たとえば、[Find Usages] の設定を変更するために [Edit Settings] をクリックすると表示されるダイアログには、共有スコープを選択できる [Scope] フィールドがあります。

    [Find Usages] ダイアログで共有スコープを選択する
    図 8. [Find Usages] ダイアログで共有スコープを選択します。
  5. スコープに名前を付けて、[OK] をクリックします。

    [Scopes] ダイアログの右側のパネルには、カスタム スコープを定義するためのオプションが表示されます。

  6. リストから [Project] を選択します。

    使用可能なプロジェクトのリストが表示されます。

    注: プロジェクトまたはパッケージのカスタム スコープを作成できます。手順は同じです。

  7. プロジェクト フォルダを展開し、カスタム スコープに追加するアイテムを選択して、追加または除外するかどうかを選択します。

    カスタム スコープを定義する
    図 9. カスタム スコープを定義します。
    • [Include]: このフォルダとその中のファイルを追加しますが、サブフォルダは追加しません。
    • [Include Recursively]: このフォルダとその中のファイルに加えて、サブフォルダとその中のファイルを追加します。
    • [Exclude]: このフォルダとその中のファイルを除外しますが、サブフォルダは除外しません。
    • [Exclude Recursively]: このフォルダとその中のファイルに加えて、サブフォルダとその中のファイルを除外します。

    図 10 では、main フォルダがサブフォルダ抜きで追加され、java フォルダと res フォルダが再帰的に追加されています。青色は部分的に追加されたフォルダを示し、緑色は再帰的に追加されたフォルダとファイルを示します。

    カスタム スコープのパターンの例
    図 10. カスタム スコープのパターンの例。
    • java フォルダを選択して [Exclude Recursively] をクリックすると、java フォルダと、その下のすべてのフォルダとファイルは、緑色でハイライト表示されなくなります。
    • 緑色でハイライト表示された MainActivity.kt ファイルを選択して [Exclude] をクリックすると、MainActivity.kt は緑色でハイライト表示されなくなりますが、java フォルダの下の他のアイテムはすべて緑色のままになります。
  8. [OK] をクリックします。カスタム スコープがリストの一番下に表示されます。

インスペクション プロファイルを確認、編集する

Android Studio には、Android アップデートによって更新される lint およびその他のインスペクションのプロファイルが付属しています。これらのプロファイルはそのまま使用することもできますが、名前、説明、重大度、スコープを編集することもできます。プロファイルのグループ全体またはグループ内の個々のプロファイルを有効化または無効化することも可能です。

[Inspections] の設定にアクセスするには:

  1. [ファイル] > [設定] を選択します。(Windows の場合)または [Android Studio] > [Preferences](macOS または Linux の場合)を選択します。
  2. [Editor] > [Inspections] を選択します。
  3. [Inspections] ペインに、サポートされているインスペクションとその説明のリストが表示されます。

    サポートされているインスペクションとその説明
    図 11. サポートされているインスペクションとその説明。
  4. [Profile] リストを選択して、[Default](Android Studio)インスペクションと [Project Default](アクティブなプロジェクト)インスペクションを切り替えます。

    詳細については、IntelliJ のプロファイルを管理するをご覧ください。

  5. 左側の [Inspections] リストで、最上位レベルのプロファイル カテゴリを選択するか、グループを展開して特定のプロファイルを選択します。

    プロファイル カテゴリを選択すると、そのカテゴリに含まれているすべてのインスペクションを単一のインスペクションとして編集できます。

  6. インスペクションのコピー、名前の変更、説明の追加、エクスポート、インポートを行うには、[Show Schema Actions] スキーマ アクションを表示アイコン リストを選択します。
  7. 完了したら、[OK] をクリックします。