LinterCheckAstNode - スコープ指定、グローバル

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:4分
  • LinterCheckAstNode API は、リンターチェックで抽象構文ツリー (AST) ノードの詳細を取得するためのメソッドを提供します。

    この API は インスタンススキャン (com.glide.instance_scan) プラグインに含まれており、 sn_instance_scan 名前空間で実行されます。詳細については、「 インスタンススキャン」を参照してください。

    このクラスのメソッドを使用して、リンターチェックフォーム[スクリプト] フィールドにコードを追加することで、AST ノードタイプのリンターチェックを実行します。詳細については、「 高度なリンターチェックスクリプト」を参照してください。

    リンターチェックを作成して、スクリプトの問題を特定します。リンターチェックがレコードで実行されると、そのコードの抽象構文ツリーが生成されます。抽象構文ツリーを使用して、コードの問題を分析できます。

    この API のメソッドにアクセスするには、インスタンススキャン engine.rootNode オブジェクトを使用します。

    LinterCheckAstNode - getNameIdentifier()

    名前ノードタイプの文字列値を取得します。名前ノードは、関数名や変数名など、キーワードではない単純な識別子を表します。

    表 : 1. パラメーター
    名前 タイプ 説明
    なし
    表 : 2. 返される内容
    タイプ 説明
    文字列 リンターオブジェクトが名前ノードタイプの場合は、名前を文字列として返します。それ以外の場合は null です。

    次の例では、リンターチェックで Findings API の incrementWithNode() メソッドを使用しています。リンターチェックフォームの [スクリプト] フィールドでこのメソッドを使用します。

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);

    LinterCheckAstNode - getParent()

    アクセスされたノードの親ノードオブジェクトを取得します。

    表 : 3. パラメーター
    名前 タイプ 説明
    なし
    表 : 4. 返される内容
    タイプ 説明
    オブジェクト アクセスされたノードの親ノードオブジェクト。

    次の例では、リンターチェックで Findings API の incrementWithNode() メソッドを使用しています。リンターチェックフォームの [スクリプト] フィールドでこのメソッドを使用します。

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);

    LinterCheckAstNode - getTypeName()

    アクセスされたノードのタイプを取得します。

    表 : 5. パラメーター
    名前 タイプ 説明
    なし
    表 : 6. 返される内容
    タイプ 説明
    文字列 アクセスされたノードのタイプ。たとえば、ソースの関数呼び出しは、タイプ名「CALL」のノードとしてトークン化されます。

    次の例では、リンターチェックで Findings API の incrementWithNode() メソッドを使用しています。リンターチェックフォームの [スクリプト] フィールドでこのメソッドを使用します。

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);

    LinterCheckAstNode - visit(関数 callbackFunction)

    このノードから始まるサブツリー内の各ノードにアクセスし、指定されたコールバック関数を各ノードで実行します。

    表 : 7. パラメーター
    名前 タイプ 説明
    callbackFunction 関数 このノードのサブツリー内の各ノードで実行されるコールバック関数。このコールバック関数は、アクセス先ノードとなるパラメーターとしてノードを取ります。
    表 : 8. 返される内容
    タイプ 説明
    なし

    次の例では、リンターチェックで Findings API の incrementWithNode() メソッドを使用しています。リンターチェックフォームの [スクリプト] フィールドでこのメソッドを使用します。

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);