---
sourceDocument: Xanadu Now Platform の管理
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/platform-administration

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu Now Platform の管理

ft:clusterId :

    - platadm

bundleId :

    - platadm

workflow :

    - Platform


---

# 詳細リンターチェックスクリプト

# 詳細リンターチェックスクリプト {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：4分

リンターチェックスクリプトは、スクリプトの問題を探すチェックを記述するために役立ちます。リンターチェックがレコードで実行されると、そのコードの抽象構文ツリーが提供されます。この抽象構文ツリーを使用すると、ネストされた if ステートメントが多すぎる場合や、while ループの低速な API の使用状況など、コードに関する問題を分析できます。

## リンターチェックの使用方法 {#hs-linter-check-scripts__section_zcb_151_dpb}

リンターチェックには、`rootNode` と呼ばれる一意のオブジェクトがあります。これは、現在のレコードのスクリプトに対する解析済みの抽象構文ツリー (AST) のルートノードです。このオブジェクトには多くの関数がありますが、最も重要なのは `visit` 関数です。`visit` 関数は、ツリーのすべてのノードで呼び出されるパラメーターとしてコールバック関数を取ります。次にコールバック関数は、反復中の現在のノードを表すパラメーターとしてノードを取ります。コールバック関数から false を返してツリーの反復を早期に停止できます。それ以外の場合、`visit` を呼び出したノードのツリー内のすべてのサブノードにアクセスし続けます。  
たとえば、廃止された API が呼び出した `badFunction()` をスキャンする場合、次の例のように、スクリプトを使用してリンターチェックを記述できます。

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

このリンターチェックを使用してスキャンを実行すると、スキャンのすべてのレコードがスクリプトフィールドでチェックされます。たとえば、そのスキャンのレコードに次のようなスクリプトが含まれている場合、スキャンはこのレコードの検出結果を選択します。

    /*
    badFunction()
    */
    // badFunction()
    function badFunction() {
    	return;
    }
    var GoodClass = Class.create();
    GoodClass.prototype = Object.extendsObject(Object, {
    	badFunction: function() {
    		// actually good
    	}
    });
    var badFunction = ["badFunction", "badFunction()"];
    badFunctionButSometimesGood();

    badFunction();

## ノード関数 {#hs-linter-check-scripts__section_q4q_zv1_dpb}

以下に、ノードオブジェクトで呼び出すことができる関数のリストを示します。

* `getRootNode()`：このノードのツリーのルートノードを取得します。
* `getParent()`：このノードの親を取得します。
* `getLineNo()`：このノードの行番号の位置を取得します。
* `getColumnNo()`：このノードの列番号の位置を取得します。
* `toSource()`：このノードのソースを取得します。ソースはこのノードとその子に基づいています。
* `getTypeName()`：このノードのノードタイプ名を取得します。たとえば、ソースの関数呼び出しは、タイプ名「CALL」のノードとしてトークン化されます。  
  注:  
  `node.getTypeName()` の値は、抽象構文ツリー (AST) のさまざまなタイプのノードから取得されます。可能な値は、Rhino の AST パーサー自体から取得されます。
* `getNameIdentifier()`：このノードのノードタイプが「NAME」の場合、名前自体の文字列値である識別子を返します。「NAME」ノードは、関数名や変数名など、キーワードではない単純な名前を表します。  
  注:  
  このノードが NAME ノードでない場合、結果は null になります。
* `getAbsolutePosition()`：このノードの絶対位置を取得します。絶対位置は、スクリプトの先頭からこのノードまでの文字数です
* `compareTo(other)`：このノードを別のノードと比較します。ノードの絶対位置と長さが大きいほど比較での差が大きくなります。`other` はこのノードと比較するノードです
* `visit(callbackFunction)`：このノードから始まるサブツリー内の各ノードにアクセスし、各ノードで指定されたコールバック関数を実行します。`callbackFunction` は、このノードのサブツリー内の各ノードで実行される関数です。このコールバック関数は、アクセス先ノードとなるパラメーターとして LinterCheckAstNode を取ります。
* `debugPrint()`：このノードから始まる抽象構文ツリーの文字列表現を返します。各行にはノードに関する情報が含まれ、インデントはノード間の階層関係を表します。各行の情報は次のように配置されます。
  1. 絶対位置
  2. ノードタイプ名
  3. 親を基準とした位置
  4. 長さ
  5. 名前識別子 (NAME ノードの場合)
  {#hs-linter-check-scripts__ol_hlh_q1b_dpb}

{#hs-linter-check-scripts__ul_vkj_bw1_dpb}詳細については、「[LinterCheckAstNode API - スコープ指定、グローバル](https://www.servicenow.com/docs/access?context=LinterCheckAstNodeAPIBoth&version=xanadu&pubname=xanadu-api-reference&ft:locale=en-US)」を参照してください。

