<< 目次を表示 >> ページ位置: ソースコードの生成と読み込み > コード分析 > コード分析 フレームワーク > コード分析のクエリ > コード分析のクエリ言語 (mFQL) > 走査 |
ancestor |
ancestor(count: number, source: set) ancestor(value: string, source: set) ancestor(count: number, value: string, source: set)
ancestor関数は、指定された条件でノードを走査し取得します。走査に失敗したノードは無視します。パラメータとして、走査する親ノードの数・走査対象のノード名か、その両方かを指定します。条件を満たす結果をセットとして返します。
結果セットには同じノードが重複する場合があります。この重複する可能性がある動作は仕様です。distinct関数を利用することで、重複するノードを排除できます。
次の例は、ノードの名前が “OPERATION” のセットを対象に、1レベル上の親ノードを含めたものを結果セットとして返します。 “OPERATION”のノードで、親ノードがないものは対象外となります。
ancestor(1, getByNode("OPERATION"))
次の例は、ノードの名前が “OPERATION” のセットを対象に、親ノードを再帰的に探索し、名前が “CLASS” の親ノードがあるものが結果セットに含まれます。
ancestor("CLASS", getByNode("OPERATION"))
最後の例は、ノードの名前が “OPERATION” のセットを対象に、親ノードを1レベルのみ、つまり直上のノードの名前が “CLASS” の親ノードがあるものが結果セットに含まれます。
ancestor(1, "CLASS", getByNode("OPERATION")) |
Filter |
filter(count: number, source: set) filter(value: string, source: set) filter(count: number, value: string, source: set)
filter関数は ancestor関数と動作は同じですが、ノードの内容を編集することがありません。条件に合わないノードは返却セットに含まれませんが、条件に合うノードは引数として渡されるセットと同じになります。
filter関数は、セットの内容の確認のためにも利用できます。例えば、getByNameやgetByValueで得られるセットについてその種類が適切であることを保証するために利用できます。次の例は、値“CFoo”を持つノードの属性が“TYPE”であるものが結果セットになります。
filter(0, “TYPE”, find(“CFoo”))
理論上、TYPEノードしかCFooの値を持たない場合において、この処理を行うことで結果が適切であることが保証されます。 |