LinterCheckAstNode - スコープ指定、グローバル
LinterCheckAstNode API は、リンターチェックで抽象構文ツリー (AST) ノードの詳細を取得するためのメソッドを提供します。
この API は インスタンススキャン (com.glide.instance_scan) プラグインに含まれており、 sn_instance_scan 名前空間で実行されます。詳細については、「 Instance Scan」を参照してください。
このクラスのメソッドを使用して、[リンターチェック] フォームの [スクリプト] フィールドにコードを追加することで、AST ノードタイプのリンターチェックを実行します。詳細については、「 高度なリンターチェックスクリプト」を参照してください。
リンターチェックを作成して、スクリプトの問題を特定します。リンターチェックがレコードで実行されると、そのコードの抽象構文ツリーが生成されます。抽象構文ツリーを使用して、コードの問題を分析できます。
この API のメソッドにアクセスするには、インスタンススキャン engine.rootNode オブジェクトを使用します。
LinterCheckAstNode - getNameIdentifier()
名前ノードタイプの文字列値を取得します。名前ノードは、関数名や変数名など、キーワードではない単純な識別子を表します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | リンターオブジェクトが名前ノードタイプの場合は、名前を文字列として返します。それ以外の場合は 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()
アクセスされたノードの親ノードオブジェクトを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | アクセスされたノードの親ノードオブジェクト。 |
次の例では、リンターチェックで 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()
アクセスされたノードのタイプを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | アクセスされたノードのタイプ。たとえば、ソースの関数呼び出しは、タイプ名「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)
このノードから始まるサブツリー内の各ノードにアクセスし、指定されたコールバック関数を各ノードで実行します。
| 名前 | タイプ | 説明 |
|---|---|---|
| callbackFunction | 関数 | このノードのサブツリー内の各ノードで実行されるコールバック関数。このコールバック関数は、アクセス先ノードとなるパラメーターとしてノードを取ります。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、リンターチェックで 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);