Android Studio最速入門~効率的にコーディングするための使い方

第40回 分析機能について

この記事を読むのに必要な時間:およそ 8 分

データフローの分析

個人的にはAndroid Studio(やIntelliJ IDEA)の自慢機能のひとつだと思っている「データフロー分析」です。この機能を用いることで,次のような分析を行うことができます。

  • 変数やパラメタに代入される値がどこからくるか
  • 変数がもつ可能性のある値のリストアップ
  • 変数にnullが代入される可能性
  • 式や変数が,このあとどう使われるか
Analyze Data Flow to Here
「ここまで」データがどう流れてきたかを分析します。変数やフィールド,メソッドのパラメタにカーソルを置き "Analyze Data Flow to Here" を実行すると,データの流れを追ってその対象にどのような値が代入され得るかをリストアップします。
図22はあるメソッドのパラメタtitleに対して "Analyze Data Flow to Here"を実行した例です。

図22 "Analyze Data Flow to Here"の実行例

図22 

これだけでもパラメタに設定し得る値と,その流れがわかります。さらにツールバーの Group by leaf expression」 Group by leaf expression nullness」で,この結果をグループ化することができます。
Group by leaf expression」を押すと,結果を代入し得る値(または式)別にグループ化します。

図23 ⁠Group by leaf expression」でグループ化した例

図23 「Group by leaf expression」でグループ化した例

※各ノードのトップにある「Value:?」が,このパラメタに代入し得る値になります

もうひとつの Group by leaf expression nullness」は,さらにnull値を取り得るか」でグループ化します。

図24 ⁠Group by leaf expression nullness」でグループ化した例

図24 「Group by leaf expression nullness」でグループ化した例

Analyze Data Flow from Here
「ここから」データがどう流れていくかを分析します。変数やフィールド,メソッドの戻り値にカーソルを置き "Analyze Data Flow from Here" を実行すると,その対象がその後,どのように利用されているかをリストアップします。

図25 "Analyze Data Flow from Here"の実行例

図25 

※あいにくAndroid Studioには,この例に適したサンプルコードがなかったので,IntelliJ IDEAでの実行例です。

スタックトレースの分析

"Analyze Stacktrace..."のことです。割りとしょうもない系の機能ですが,この機能は外部から提供されたスタックトレースを分析する機能です。たとえばテストをしているとき,自分以外の人がバグを見つけて,その時のログとしてスタックトレースをメールやバグトラッキングシステムに添付したとしましょう。この「外部の」スタックトレースは単なるテキストなので,スタックトレースから該当のソースコードへジャンプする事はできません。当たり前ですね。

しかし"Analyze Stacktrace..."を通すことで,スタックトレースにリンクできるソースコードを割り当て「Runツールウィンドウ」「Debugツールウィンドウ」と同じようにソースコードへジャンプできるようにします。他にもスレッドダンプが含まれていれば,それを解析したログビューを表示します。

"Analyze Stacktrace..."を実行すると図26のような「Analyze Stacktrace」ダイアログが表示されるので「Put a stack trace or a complete thread dump here:」の下にあるテキストエリアにスタックトレースを貼り付けて下さい。

図26 ⁠Analyze Stacktrace」ダイアログ

図26 「Analyze Stacktrace」ダイアログ

※IntelliJ IDEAではスクランブルがかかったスタックトレースを解読する機能(Unscramble stacktrace)がありますが,これはAndroid Studioでは使えません

貼り付けたスタックトレースが,ここに辿り着く間にテキスト処理でラインカットやワードラップされている場合は「Normalize」ボタンで復元を試みて下さい。⁠OK」ボタンを押すと「Runツールウィンドウ」にこのスタックトレースが(可能ならば)ソースコードへのリンク付きで表示されます。

まとめ

Android Studioの分析機能は地味な存在ながら便利な機能が揃っています。他のIDEではなかなかお目にかからない機能という事も相まって,Android Studioを特徴付けている機能のひとつだと筆者は思っています。

なかなか奥深く使いこなすのは簡単ではありませんが,筆者に「Javaでもいいや」ではなく「Javaがいい」と思わせるくらいに強力な機能です。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai