Android Tips #7 Android Lint を活用する

android-tips-7-catch

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ADT16(Android Development Tools 16)から、「Android Lint」という新しいツールが使えるようになりました。
今回はこの「Android Lint」を使うといったい何ができるのか、実際に使いながら紹介したいと思います。

Android Lint とは

Android LintはADT(Android Development Tools)16から導入された、ソースチェックツールです。
Androidアプリケーションのソースをチェックし、パフォーマンスに支障があるソースなどの潜在的な問題を検出し警告してくれます。
Lintに含まれる機能の一部はもともとAndroid SDKに含まれていましたが、
コマンドラインからしか実行できませんでした(以前ご紹介したlayoutoptツールなど)。
ADT16より「Lint」という名称で統合され、IDEからも使えるようになりました。

Android Lint でできること

具体的には以下のようなチェックができます(2012/01/24現在)。

  • 翻訳の有無(また、使われていない翻訳)
  • レイアウトのパフォーマンス問題(layoutoptツールで発見できていたものと、それ以上のもの)
  • 未使用のリソース
  • 一貫性のない配列のサイズ(配列がマルチ構成の場合)
  • アクセシビリティと国際化の問題(ハードコーディングされている文字列やコンテンツの説明など)
  • アイコンの問題(密度の違い、重複、サイズ間違いなど)
  • ユーザビリティ上の問題(テキストフィールドの入力タイプが指定されていないなど)
  • Manifestファイルのエラー
  • タイポグラフィの提案(記号の置換)
  • レイアウトパラメータの間違いの指摘
  • オーバードローの検出
  • 非推奨な記述

またLintは開発中のため、チェックできる内容は随時増えていく予定のようです。
またチェック追加項目をカスタマイズできる機能を追加する予定だそうです。

Android Lint の使いかた

では、実際にAndroid Lintを使ってソースをチェックしてみましょう。今回は簡単に使うことができるEclipse上からAndroid Lintを使ってみます。

1.Lintを起動する - まずは素直に「Lintボタン」を押してみる

ADT16をインストール後、Lintを実行するボタンがAVDManagerボタンの隣にあると思います。
クリックするとLintが起動し、Lint Windowが表示されます。

私の環境では、今回のLintのテスト用にテスト用のAndroidプロジェクトを作成していました。
Lintを起動したところ、以下のような警告が表示されました。

Missing density variation folders in res: drawable-xhdpi

xhdpi用のdrawableフォルダが無いので、怒られてしまったようです。
この場合、対応が必要であればフォルダ・アイコンを用意、
必要なければ無視(無視する方法は後述)という選択肢が考えられますね。

このようにLintボタンを押すことで好きなタイミングでソースをチェックすることができます。
また、その他に以下のタイミングでLintが自動起動します。

  • APKファイルを書き出したとき。この場合、Lintは致命的なエラーを検出する特別なモードで実行され、エラーを検出した場合APKファイルの書き出しを中止します。
  • レイアウトファイルやManifestファイルなどが編集され、保存されたとき。
  • レイアウトエディタを利用しているとき。UI操作が行われるたびにチェックされ、結果はLint Windowに随時表示されます。

2.Lint Windowの使いかた - 警告内容を確認

Lintを実行すると、以下のようなLint Windowが自動で表示され、警告内容の確認ができます。

右上のアイコンから以下の操作を行うことができます。

  1. 更新(Lintの再実行)
  2. 対象の警告の修正プログラムの実行(あれば)
  3. 警告の無視(対象の警告を選択後に押す)
  4. 対象の警告の削除
  5. 警告の全削除

4, 5は警告を無視するわけではないので、Lintを再実行すると再度表示されます。
また、3で警告を無視したあとに復帰させたい場合、後述5のオプションから再設定ができます。

3.クイック修正 - Lintによる自動修正を使う

Lintは警告を表示するだけではなく、警告が出たソースを自動で修正する機能があります。試しに使ってみましょう。
まず、以下のような無意味なレイアウトが含まれているソースを書いてみました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical"
                  android:gravity="center">
        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="@string/hello" />
    </LinearLayout>

</LinearLayout>

Lintを実行すると案の定エラーが出ました。

自動修正プログラムを実行してみます。
画面上に修正前(現在)のソースと自動修正後のソースの比較が表示されました。

OKボタンを押すと以下のソースに変更されました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

前述してあるとおり、自動修正プログラムがSDKに含まれている場合のみ実行できるのでご注意ください。

4.エラーを抑止する - 必要のないエラーを無視

とても便利なLintのチェック機能ですが、アプリ要件によっては無視したい警告もあると思います。
そのようなときはLintが出すエラーを制御(無視)することもできます。
Lint Windowの右上にあるボタン群の真ん中(消しゴムのようなアイコン)を押すと無視することができます。

5.オプション - Lintの動作を詳細に設定

すべてのプロジェクトに対してLint実行オプションをカスタマイズすることができます。

Lint Windowから警告の無視を実行した場合、このオプション設定が変更されたことになります。
復帰したい場合はオプションから設定を有効化すると再度警告が出るようになります。

まとめ

今回はAndroid Lintの基本的な概要と使いかたについて実際に使いながら解説しました。
Lintを使ってソースをチェックする必要性が少しでも理解できれば幸いです。
それぞれのチェック項目の詳細な解説はまたの機会にご説明したいと思います。

参考