EGL API を使用したコード分析メソッド

EGL API を使用して、ユーザー作成規則用に選択する EGL 言語エレメントを分析します。

このタスクについて

EGL API および生成される実装コードについて詳しくは、このトピックの最後にある関連リンクを参照してください。

手順

カスタム規則のコード分析を実装するには、以下のようにします。

  1. プラグイン開発」パースペクティブを開きます。
  2. パッケージ・エクスプローラーで、カスタム規則用に生成された Java™ ソース・ファイルを右クリックして、「アプリケーションから開く」 > 「Java エディター」とクリックします。 「パッケージ・エクスプローラー」での Java ファイルのロケーションは、project_name > src > package_name > class_name.java です。 例えば、MyPluginProject > src > com.example > EglRule.java のようになります。
  3. Java エディターで、生成された各 visit() メソッドに、コード分析を行うための Java コードを追加します。 visit() メソッドは、選択した EGL 言語エレメントに応じて、EGL アプリケーション・モデル・インターフェースの非抽象サブインターフェースごとに生成されます。 例えば、作成ウィザードの 3 ページ目の「ステートメント」ツリーで AddStatement 要素を選択したとします。
    • AddStatement に対応する EAM インターフェースは AddStatement インターフェースです。
    • インターフェースの AST アクセスと IR アクセス用に 1 つずつ、2 つの visit() メソッドが生成されます。
    注:
    • visit() メソッドは、EGL コード・レビューのカスタム規則 API の インターフェース IASTVisitor および IRVisitor に属しています。 IASTVistorIRVistor は直接実装しないでください。 代わりに、サブクラス AbstractASTRuleVisitorAbstractIRRuleVisitor を使用してください。 以下の例に、生成された visit() メソッドを示します。
      • boolean visit(com.ibm.etools.edt.core.ast.AddStatement node)
      • boolean visit(com.ibm.etools.edt.core.ir.api.AddStatement clause)
    • visit() メソッドへの入力として渡されるノードは、EGL アプリケーション・モデル (EAM)) API 内の com.ibm.etools.edt.core.ast パッケージの Node インターフェースのサブインターフェースです。
    • RUN_AS_IR が true に設定されている場合、visit() メソッドに入力として渡される 節は、EGL アプリケーション・モデル (EAM) API におけるパッケージ com.ibm.etools.edt.core.ir.api の インターフェース Element のサブインターフェースです。
    EGL ソース・ファイルが分析される際に、コード分析プログラムは、対応する Node または Element のインスタンスを検出すると、常に visit() メソッドを開始します。
  4. visit() メソッドに、以下の機能のための Java コードを追加します。
    • RUN_AS_IR を使用する場合は、visit() メソッドに入力として 渡される Node node または Element clause を使用して、 分析対象の EGL 言語要素のインスタンスに関する情報を取得します。
    • カスタム規則のコード分析を実行します。規則に複数の visit() メソッドがある場合は、各 visit() メソッドの結果を調整するための Java コードも作成する必要があるかもしれません。
    • 戻りコードと戻り情報を設定します。 引き続き現行ノードの子ノードにアクセスする場合は true を返し、子ノードへのアクセスをスキップする場合は false を返します。 分析中の EGL 言語エレメントが規則に違反している場合は、該当するノードをトークン・リストに追加します。
  5. 終了したら、Java エディターを閉じます。

フィードバック
(C) Copyright IBM Corporation 2000, 2015. All Rights Reserved.
(C) Copyright IBM Japan 2005.