Android Tips #11 ADT revision 17のLintの機能追加について

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

2012年3月22日、ADT revision 17 がリリースされ、Lintの機能が追加されました。
今回は追加されたLintの機能を確認していきたいと思います。

Lintの機能追加

Javaソースコードのチェック

Javaソースコードのチェック機能がアップデートされました。
以前のバージョンでは、パターン・ベースのチェック(未使用のリソースのチェックなど)でしたが、
ADT17ではより正確な構文解析ができるよう書き直されました。

ライブラリプロジェクトのチェック

ライブラリプロジェクトのチェックがサポートされました。
未使用リソースのチェックなどのようなルールが、ライブラリプロジェクトで宣言されたリソースを
正確に処理できるようになりました。

@SuppressLint アノテーションの追加とXMLリソースのignore属性の追加

Javaコード上で @SuppressLint アノテーションが指定できる機能が追加されました。
@SuppressLint を付けることによって、JavaコードをLintのチェックから除外できるようになりました。
以下のように、クラスまたはメソッドに対して使用することができます。

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // NewApiでエラーが出る処理
    getActionBar().setDisplayShowHomeEnabled(true);
}

また、リソースXML内の要素内で tools の名前空間の定義と ignore 属性を指定できるようになりました。
以下のように、対象の要素のみLintのチェックから除外することができます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:ignore="UseCompoundDrawables"
    >
    <TextView 
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <ImageView 
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

チェック項目の追加と @TargetApi アノテーションの追加

20項目以上の新しいチェック項目が追加されました。
その中で "NewApi" という「古いAPIでサポートされていないメソッドがないかチェックする」項目が追加されました。
それに伴い、クラスまたはメソッドに対して @TargetApi アノテーションが指定できる機能も追加されました。
以下のように記述し、クラスまたはメソッドが対象としているAPIバージョンを明確にすることができます。

@TargetApi(11)
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // NewApiでエラーが出る処理
    getActionBar().setDisplayShowHomeEnabled(true);
}

ADT plugin for eclipse の機能追加

Eclipseのプラグインもバージョンアップしました。変更点を確認してみましょう。
一番わかり易い変化はLint実行アイコンの変更です。赤から緑に変わっています。

ドロップダウンリストを開いてみると、プロジェクト毎にチェックできるようになっているのがわかります。
また、 "Clear Lint Markers" をクリックすると、すべての警告をリセットすることができます。

次に「Lint Warnings」ウインドウを表示してみます。
さまざまな機能が追加されているので、それぞれ確認していきましょう。

1.エラーの除外(個別)

リストで選択中の警告を個別に除外することができます。
対象がレイアウトリソースの場合は tools:ignore 属性が自動で宣言され、
Javaソースの場合は @SuppressLint アノテーションが自動で宣言されます。

2.エラーの除外(ファイル単位)

リストで選択中の警告を対象のファイルごとチェックから除外します。
除外された内容はプロジェクトごとの設定ファイルである lint.xml に自動的に記述されます。

3.エラーの除外(プロジェクト単位)

リストで選択中の警告のチェック項目を対象のプロジェクトから除外します。
除外された内容はプロジェクトごとの設定ファイルである lint.xml に自動的に記述されます。

4.エラーの除外(完全)

リストで選択中の警告のチェック項目をすべてのプロジェクトから完全に除外します。
Lint設定ウインドウから設定をデフォルト値に戻すこともできます。

5.ツリーの開閉

警告のリストは、同じチェック項目の複数の警告をツリー形式で表示されるようになりました。
開く/閉じるボタンでリスト内のすべての警告のツリーをまとめて開閉することができます。

6.表示カラムの変更

警告のリストのカラムを自由にカスタマイズできるようになりました。
以下のカラムでソートすることができます。

  • Description - 警告の説明
  • Priority - 重要度
  • Category - カテゴリ
  • Location - 対象の場所
  • File - 対象ファイル
  • Path - 対象ファイルのパス
  • Line - 対象のソース行

7.設定ウインドウの表示

Lint設定ウインドウをダイレクトに表示できるようになりました。
以下のようなウインドウが表示され、全体のデフォルト設定とプロジェクト毎の設定ができます。

新規追加・変更があったLintのチェック項目

新規追加・変更があったLintのチェック項目は以下のとおりです。

Correctness

Correctness:Message (新規追加)

Security

Performance

Usability:Typography (Typographyから名称変更)

Usability:Icons (Iconsから名称変更)

Usability

Internationalization

詳細については以下の記事を更新しましたので、そちらを参照ください。

参考