COBOL アプリケーション・モデル API を使用したコード分析機能

COBOL コード・レビューのカスタム規則 API と COBOL アプリケーション・モデル API (CAM) を使用して、ユーザー作成カスタム規則用に選択した COBOL 言語エレメントを分析します。

このタスクについて

COBOL コード・レビューのカスタム規則 API と COBOL アプリケーション・モデル API は補い合う関係にあります。ユーザー作成カスタム規則を実装するには、両方についてある程度の知識が必要になります。

手順

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

  1. プラグイン開発」パースペクティブを開きます。
  2. パッケージ・エクスプローラーで、カスタム規則用に生成された Java™ ソース・ファイルを右クリックして、「アプリケーションから開く」 > 「Java エディター」とクリックします。 「パッケージ・エクスプローラー」での Java ファイルのロケーションは、project_name > src > package_name > class_name.java です。 例えば、MyPluginProject > src > com.example > CobolRule.javaのようになります。
  3. Java エディターで、必要に応じて、生成された各 visit() メソッドに、必要なコード分析を行うための Java コードを追加します。 visit() メソッドは、選択した COBOL 言語エレメントに応じて、COBOL アプリケーション・モデル・インターフェースの非抽象サブインターフェースごとに生成されます。 例えば、作成ウィザードの 3 ページ目の「プログラム」ツリーで ACCEPT エレメントを選択したとします。
    • ACCEPT に対応する CAM インターフェースは、AcceptStmt インターフェースです。
    • 「既知のサブインタフェースの一覧」見出しの下にある AcceptStmt インターフェースの Javadoc 情報では、AcceptStmt に 2 つのサブインターフェース (AcceptDataTranferStmtAcceptSystemInfoTransferStmt) があることが示されています。
    • 2 つの各サブインターフェースに 1 つずつで合計 2 つの visit() メソッドが生成されます。
    注:
    • visit() メソッドは、ICOBOLVisitor インターフェースに属しています。 これは、COBOL コード・レビューのカスタム規則 API の com.ibm.rsar.analysis.codereview.cobol.custom.model.util パッケージ内にあります。 ICOBOLVistor は直接実装するのではなく、AbstractCOBOLVisitor のサブクラスにしてください。以下の例に、生成された visit() メソッドを示します。
      • boolean visit(com.ibm.etools.cobol.application.model.cobol.AcceptDataTransferStmt n)
      • boolean visit(com.ibm.etools.cobol.application.model.cobol.AcceptSystemInfoTransferStmt n)
    • visit() メソッドへの入力として渡されるノードは、COBOL アプリケーション・モデル (CAM) API 内の com.ibm.etools.cobol.application.model.cobol パッケージの ASTNode インターフェースのサブインターフェースです。
    COBOL ソース・ファイルが分析される際に、コード分析プログラムは、対応する ASTNode のインスタンスを検出すると、常に visit() メソッドを開始します。
  4. visit() メソッドに、以下の機能のための Java コードを追加します。
    • visit() メソッドへの入力として渡される ASTNode n を使用して、 分析する COBOL 言語エレメントのインスタンスに関する情報を取得します。 例えば、見出し部のプログラム ID 属性を取得する場合は、以下のようにします。ここで、n は、IdentificationDivision オブジェクトです。
      String myProgramID = n.getProgramId();
    • カスタム規則に必要なコード分析を実行します。 規則に複数の visit() メソッドがある場合は、各 visit() メソッドの結果を調整するための Java コードも作成する必要があるかもしれません。
    • 戻りコードと戻り情報を設定します。 引き続き現行ノードの子ノードにアクセスする場合は true を返し、子ノードへのアクセスをスキップする場合は false を返します。 分析中の COBOL 言語エレメントが規則に違反している場合は、該当するノードをトークン・リストに追加します。
  5. 終了したら、Java エディターを閉じます。

フィードバック