Understand APIチュートリアル6:インタラクティブレポート

Understand

本記事は米国向けに公開されている開発元のブログ記事をベースとし、日本国内のUnderstand 7.0 APIの活用をご検討されているお客様向けに加筆・修正を加えたものとなります。

前回の記事はこちらをご確認ください。

※一部の記事の内容ではUnderstand 6.5が使用されていますが、基本的な機能はUnderstand 7.0でも同様にご利用いただけます。

チュートリアル目次

第1回:Understand APIチュートリアル1:Python API入門

第2回:Understand APIチュートリアル2:最初のAPIスクリプトの作成

第3回:Understand APIチュートリアル3:Entity、References、Kind Filterとは

第4回:Understand APIチュートリアル4:字句解析(Lexer、Lexemeとは)

第5回:Understand APIチュートリアル5:グラフ

第6回:Understand APIチュートリアル6:インタラクティブレポート

インタラクティブレポートとは

インタラクティブレポート(=IReportプラグイン)は、Understandにテキストベースのウィンドウを作成し、選択した情報を表示します。プロジェクト全体、特定のアーキテクチャ、または特定のエンティティを参照でき、その内容は皆様の想像力次第で単純なものから複雑なものまで作成できます。

例えば、Understandに同梱されているインタラクティブレポート「API Info」では、選択したエンティティで利用可能なすべてのAPI情報を表示します。実際に見てみたい方は、Understandプロジェクト内のエンティティを右クリックし、[インタラクティブレポート]-[API Info]を選択してください。
※インタラクティブレポート「API Info」はプラグインとなります。本プラグインはUnderstand7.0では[ツール]-[プラグイン]-[プラグインの管理]からプラグインマネージャーを開き、インタラクティブレポートの[すべて表示]-[API Info]を有効にすることで利用可能になります。

独自のIReportプラグインを作成する

すべてのIReportプラグインは、前回のチュートリアルのグラフプラグインと同様にuPythonスクリプトです。プラグインスクリプトの起動方法はチュートリアル5で説明しましたので、ここではその部分を飛ばしてロジックの説明に移ります。IReportプラグインにはgenerate(report, target)という関数が必要です。ここにレポート生成ロジックが記述されます。このレポートの基本的なテンプレートは以下のようになります。

# Report generation
def generate(report, target):
  """
  Required, generate the report
  """
  # If the report can be valid for multiple types of objects, use
  # isinstance to determine the target type.
  if isinstance(target, understand.Arch):
    report.print("arch: ")
  if isinstance(target, understand.Ent):
    report.print("ent: ")
  if isinstance(target, understand.Db):
    report.print("db: ")
  report.bold()
  # This take advantage of the fact that there is a name method
  # for entities, architectures, and datases.
  report.print(target.name())
  report.nobold()
  report.print("\n")

  # retrieve options defined in init like this:
  option = report.options().lookup("test")
  report.print("option: {}\n".format(option))

generate()で使用されるreportパラメーターはIReportオブジェクトです。これは、IReportの様々なメソッドにアクセスするために使用します。targetパラメーターは、ユーザーがUnderstandで選択したものです。

関数の残りの部分は、コード自体に含まれるコメントで説明されている通りです。

コードの複雑さのチェック、パラメーターを値でグループ化、ファイル内のすべてのマクロの使用箇所の検索など、IReportの機能・利用ユースケースは多岐にわたります。

本シリーズの終わりに

以上でAPIチュートリアルは終了です。
今回は弊社の新しい試みとして、開発元のブログ記事のうち、特に有用そうな記事を日本の皆様向けにアレンジしてご案内しました。
余談となりますが、本シリーズの発案時、開発元のマネージャー(先日みなとみらいで開催されたユーザー会で講演したGroke氏)に相談したところ、”Yes, that would be perfectly fine!”と快諾いただけました。ユーザー会に参加された方ならもしかすると、あのGroke氏の笑顔が目に浮かぶかもしれません!

筆者としては本シリーズに関する皆様の反応を伺えれば、今後の励みや改善活動に繋がりますので、感想やご意見、ご要望などがある方はぜひ弊社までお寄せください。

本シリーズを最後まで読了いただき誠にありがとうございました。
今後もUnderstand APIの使い方につきましては、当ブログにて情報発信を続けていきたいと考えております。

なお、Python APIの詳しい説明につきましては、Understandメニューの[ヘルプ]-[Python API ヘルプ](html)も併せてご確認ください。(htmlのため、ブラウザーの機能で日本語に翻訳してご確認ください。)

ではまた次のブログ記事でお会いしましょう。
ありがとうございました!