13 リファレンス: カスタム監査ルールのコンテキスト・オブジェクト・プロパティ

このリファレンスを使用して、コンテキスト・オブジェクトで渡されるカスタム監査ルールで使用できるプロパティおよび機能について学習します。コンテキスト・オブジェクトには、監査済ファイル・セットに応じてOracle JAF監査エンジンによって生成されたASTノード・データが含まれます。

コンテキスト・オブジェクト 説明

Register関数に渡されるコンテキスト・オブジェクト・メンバー

ルールのregister()関数は、監査の起動時にJAF監査エンジンによって呼び出されると、Registerコンテキスト・オブジェクトを受け取ります。

登録済リスナーで使用可能なコンテキスト・オブジェクト・プロパティ

監査のターゲット・ファイル内の特定データについてJAF監査エンジンによってリスナーがトリガーされると、ルールの登録済リスナーはRuleコンテキスト・オブジェクトを受け取ります。

CSSルール・リスナーで使用可能なコンテキスト・オブジェクト・プロパティ

CSS監査ルールの登録済リスナーは、CSS処理に固有の情報を含むRuleコンテキスト・オブジェクトを受け取ります。

Markdownルール・リスナーで使用可能なコンテキスト・オブジェクト・プロパティ

Markdown監査ルールの登録済リスナーは、Markdown処理に固有の情報を含むRuleコンテキスト・オブジェクトを受け取ります。

Register関数に渡されるコンテキスト・オブジェクト・メンバー

ルールのregister()関数は、監査の起動時にJAF監査エンジンによって呼び出されると、Registerコンテキスト・オブジェクトを受け取ります。

Registerコンテキスト・オブジェクトは、JAF監査の起動時に、JAF構成で指定されている監査ルールに渡されます。JAF起動時に生成されるコンテキスト・オブジェクトには、すべてのルール・タイプのregister()関数で使用できるその他のサポート・データおよび機能が含まれます。

ノート:

Registerコンテキスト・オブジェクトをキャッシュしないでください。context.utils.msgLibなど、格納されている値はキャッシュしても構いません。

メンバー 説明
rulePack ルール・パック・マネージャ・インスタンス。これは、ルール・パック・データにアクセスするためのメソッドを提供します。詳細は、「ルール・パック・クラスのメソッド」を参照してください。
ruleOpts ルール・パックのrules.jsonファイルからのルール・オプション・オブジェクトの読取り専用コピーおよび構成プロパティruleModsのオーバーライド。
runMode 実行モード値は、コマンドラインからの監査の起動を表すcliになります。将来のリリースで、他のオプションもサポートされる可能性があります。
config 有効なランタイム構成プロパティの読取り専用コピーである構成オブジェクト。
ojetConfig oraclejetconfig構成オブジェクト(Oracle JAF監査がOracle JETツールで管理されているプロジェクトのルートで実行されている場合)。このプロパティは、フック・ルールのstartupRPおよびclosedownRPフェーズでのみ使用可能です。
utils その他のユーティリティ・ライブラリ。「登録済リスナーで使用可能なコンテキスト・オブジェクト・プロパティ」utilsを参照してください。
sysOpts 実行時オプションを反映するブール・プロパティverboseModeおよびdebugModeが含まれるオブジェクト。
jsNodeTypes JavaScript抽象構文ツリー(AST)の列挙ノード・リスナー・タイプ文字列が含まれるオブジェクト(ルールがJavaScriptを処理する場合)。「JavaScript/TypeScriptルールのリスナー・タイプ」も参照してください。

登録済リスナーで使用可能なコンテキスト・オブジェクト・プロパティ

監査のターゲット・ファイル内の特定データについてJAF監査エンジンによってリスナーがトリガーされると、ルールの登録済リスナーはRuleコンテキスト・オブジェクトを受け取ります。

JAF監査エンジンは、ターゲット・ファイル・セットの特定のノード・タイプを処理するためにルールで登録しているリスナーが指定されているルールすべてにRuleコンテキスト・オブジェクトを渡します。生成されたコンテキスト・オブジェクトには、ルール・タイプの登録済リスナーで使用できる次のその他のサポート・データおよび機能が含まれています。

ノート:

Ruleコンテキスト・オブジェクトをキャッシュしないでください。context.utils.msgLibなど、格納されている値はキャッシュしても構いません。

プロパティ 説明
type

引数でルールに渡されるデータのタイプを指定したり、イベントを通知します。

HTML、JSONおよびCSSの場合: 「HTMLおよびJSONルールのリスナー・タイプ」を参照してください。

JavaScript/TypeScriptの場合: 「JavaScript/TypeScriptルールのリスナー・タイプ」を参照してください。

登録されたタイプでは、ルールがフック・ルールであることも指定できます。フック・ルールは、一般的なノード・ルールの解析済ファイル・データに対するレスポンスとは対照的に、効率的に監査エンジンにフックを付け、監査の特定フェーズでコールされます。詳細は、「フック・ルール呼出しについて」を参照してください。フック・タイプは、startupclosedownstartupRPstartauditclosedownRPおよびfileです。

node DOM、JavaScript/TypeScript(抽象構文ツリー - AST)、JSON (AST)またはセレクタ・ツリーの現在のノードからの詳細が格納されるノード・オブジェクト。
tagNode 含まれているタグ要素に関する詳細が格納される現在のタグ要素ノード・オブジェクト。タイプtagの場合、nodeおよびtagNodeプロパティは同じです。
tag divoj-avatarなどのHTML要素名。
ojTag HTML要素がoj-で始まり、定義済のOracle JET要素タグである場合は、trueです。ojtagcontext.typeは、要素名がoj-で始まることのみを表します。
ojNS 要素名がOJネームスペースに定義されている場合は、trueです。
elemStack HTMLページの場合、現在の要素の位置コンテキストを示すノード・オブジェクトの配列です。配列の最後のエントリ(インデックスが最高)が現在の要素です。
sysOpts ブール・オプションverboseModeおよびdebugModeを含む、その他のシステム・オプション。コンテキスト・プロパティmsgLibも参照してください。
userDefs 構成ファイルのuserDefsプロパティ(定義されている場合)。このプロパティはOracle JAFでは検査されません。
rulePack ルール・パック・マネージャ・インスタンス。これは、ルール・パック・データにアクセスするためのメソッドを提供します。使用可能なメソッドの詳細は、「ルール・パック・クラスのメソッド」を参照してください。
Issue Issueクラス。これは、レポートされる問題ごとに新しいIssueオブジェクトを作成してIssueの詳細を問い合せる場合に使用します。使用可能なメソッドの詳細は、「ルール問題クラスのメソッド」を参照してください。
reporter Reporterインスタンス。構成されたIssueオブジェクトは、監査出力に含めるために監査ルールによってこのインスタンスに渡されます。これは、IssueオブジェクトをReporterインスタンスに追加してReporterの詳細を問い合せる場合に使用します。使用可能なメソッドの詳細は、「ルール・レポータ・クラスのメソッド」を参照してください。
ruleName ルール名。
filepath 現在処理中のファイルへのフル・ファイル・パス。一貫性を保つため、filepathでは常に、プラットフォーム関係なくフォワード・スラッシュを使用します。監査ルールは、この点においてプラットフォームに依存しません。
filetype ファイル・タイプ(小文字)
phase ルールがフック・ルールである場合、この文字列はルールが呼び出されたフェーズ(startupclosedownstartupRPstartauditclosedownRPfileなど)を表します。
utils

Oracle JAFユーティリティ・ライブラリが格納されます:

登録タイプによっては、ライブラリが省略されることがあります。たとえば、タイプhtmlの場合、AstUtilsライブラリ(JavaScript/TypeScript用)は存在しません。(「Utils: 一般的な非ファイル・システム関数」を参照してください。)

userDefs 構成プロパティuserDefsによって(オプションで)定義される値。
NodeTypes 列挙タイプ定義のセット。たとえば、NodeTypes.TAGNodeTypes.SCRIPTなど。

Markdownルール・リスナーで使用可能なコンテキスト・オブジェクト・プロパティ

Markdownルールの登録済リスナーは、Markdown処理に固有の情報を含むRuleコンテキスト・オブジェクトを受け取ります。

Markdown処理では、ルールはfileイベント(.mdファイルが最初に読み取られるとき)、または特定のMarkdownイベント(特定のタイプのマークアップが見つかったとき)をリスニングできます。どちらの場合も、JAF監査エンジンは、Markdownファイルの特定のノード・タイプを処理するためにルールで登録されているルール・リスナーにRuleコンテキスト・オブジェクトを渡します。Markdownファイル用に生成されたcontextオブジェクトには、Markdown処理に固有のサポート・データおよび機能が含まれます。

要約データにアクセスするために、contextオブジェクトの補助データ・プロパティsuppDataには、イメージ、段落、ヘッダー、コード・ブロックなどを取得するためにそのutilsオブジェクトで使用できる次のメソッドが用意されています。「登録済リスナーで使用可能なコンテキスト・オブジェクト・プロパティ」で説明しているように、基本プロパティに加えて、これらはすべてのルール・タイプのcontextオブジェクトで使用できます。

ノート:

Ruleコンテキスト・オブジェクトをキャッシュしないでください。context.utils.msgLibなど、格納されている値はキャッシュしても構いません。

補助データ・プロパティsuppdataには、次のサブプロパティが含まれています:
  • ast: 抽象構文ツリー(AST)
  • utils: ユーティリティ・オブジェクト(次の表のメソッド)
メソッド 引数 説明
getLinks() なし

マークアップをスキャンしてURL参照を検索し、linkオブジェクトの配列を返します。

linkオブジェクトは次のプロパティを持ちます:

  • inline: URLを含む完全なリンクを示すブール(デフォルトはtrue)
  • link: URL文字列
  • text: リンク・テキストを含む文字列
  • pos: 次のプロパティを持つ、場所情報を含むオブジェクト:
    • line: 参照キーの行番号(1からの相対位置)
    • col: 参照キーの列番号(1からの相対位置)
    • start: 参照キーの先頭のインデックス番号
    • end: 参照キーの末尾のインデックス番号

リンク宣言が参照リンクを使用する場合、リンク・オブジェクトではinlineプロパティがfalseとして宣言され、refKeyプロパティがlinkプロパティに置き換わります。

refKeyプロパティを使用すると、参照リンク・オブジェクトを介して関連付けられたURLを検索できます。次のgetRefLinks()を参照してください。

getRefLinks() なし

マークアップをスキャンして参照リンクを検索します。非インライン・リンクは、マークアップ内の他の場所で定義されたリンクへの参照を提供します。このメソッドは、参照キーによる参照リンク・オブジェクトを含むオブジェクトを提供します。

URLへの間接参照を含む次のマークアップ・テキストについて考えてみます:

Link to the [resource file](some ref key)

これは次の参照リンクに解決されます:

[some ref key]: www./some/url

これは、参照リンク・オブジェクトを含むオブジェクトを返します。各オブジェクトにはその参照キーの名前が付けられます(例: some ref key)。各参照リンク・オブジェクトのプロパティは次のプロパティを持ちます:

  • link: URL文字列
  • title: タイトル文字列(MDコンストラクトで指定されている場合)
  • pos: 次のプロパティを持つ、場所情報を含むオブジェクト:
    • line: 参照キーの行番号(1からの相対位置)
    • col: 参照キーの列番号(1からの相対位置)
    • start: 参照キーの先頭のインデックス番号
    • end: 参照キーの末尾のインデックス番号
getImages() なし

マークアップをスキャンしてイメージ宣言を検索し、imageオブジェクトの配列を返します。

imageオブジェクトは次のプロパティを持ちます:

  • inline: URLを含む完全なリンクを示すブール(デフォルトはtrue)
  • link: イメージURL文字列
  • text: 代替テキストを含む文字列
  • pos: 次のプロパティを持つ、場所情報を含むオブジェクト:
    • line: 参照キーの行番号(1からの相対位置)
    • col: 参照キーの列番号(1からの相対位置)
    • start: 参照キーの先頭のインデックス番号
    • end: 参照キーの末尾のインデックス番号

イメージ宣言が参照リンクを使用する場合、イメージ・オブジェクトではinlineプロパティがfalseとして宣言され、refKeyプロパティがlinkプロパティに置き換わります。

getCode() なし

(バックティックまたはチルドを使用して)マークアップをスキャンしてフェンス・コード・ブロックを検索し、codeオブジェクトの配列を返します。

codeオブジェクトは次のプロパティを持ちます:

  • code: コード・ブロックを含む文字列。セパレータとして/n改行文字が使用されます
  • pos: 開始位置と終了位置の情報をそれぞれ次の形式で保持する2つのオブジェクトを含むオブジェクト:
    • line: 開始行番号(1からの相対位置)
    • start: コード・ブロックの先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

    • line: 終了行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: コード・ブロックの末尾のインデックス番号(0からの相対位置)
getParas() なし

マークアップをスキャンして段落と見出しを検索します。paraオブジェクトの配列を返します。

paraオブジェクトは次のプロパティを持ちます:

  • text: 段落または見出しテキストを含む文字列
  • level: 見出しレベルの番号
  • pos: 段落/見出しの開始位置と終了位置の情報をそれぞれ次の形式で保持する2つのオブジェクトを含むオブジェクト:
    • line: 開始行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

    • line: 終了行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

ノート: 標準の段落テキストの場合、levelは0です。ゼロより大きい値は、マークアップ見出しの#文字の数を表します(たとえば、##は見出しレベルh2を表し、levelは2になります)。

getLists()  

マークアップをスキャンして順序付きリストおよび順序なしリストを検索し、オブジェクトの配列を返します。各オブジェクトは次のプロパティを持ちます。

listオブジェクトは次のプロパティを持ちます:

  • ordered: ブール(順序なしリストにはfalseを使用し、順序付きリストにはtrueを使用)
  • items: リスト・アイテム・オブジェクトの配列。それぞれに、文字列値を参照するitemプロパティがあります
  • pos: リストの開始位置と終了位置の情報をそれぞれ次の形式で保持する2つのオブジェクトを含む配列:
    • line: 開始行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

    • line: 終了行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

リスト・エントリがサブリストを表す場合、リスト・アイテム内にchildrenプロパティが使用されます。各オブジェクト・サブリストを含む配列が含まれています。それぞれがlistオブジェクトと同じフォーマットを使用し、ordereditemsおよびposプロパティを持ちます。

testParas() (regexp RegExp, [boolean firstmatch])

正規表現を引数として受け取り、マークアップ内で見つかった各段落にそれを適用します。オプションの2番目のブール引数は、一致するすべての段落を返すか、または一致する最初の段落のみを返すか(省略した場合はこれがデフォルト)を指定します。

paraオブジェクトの配列を返します。paraオブジェクトのプロパティについては、前述のgetParas()を参照してください。

次の例では、一致する段落オブジェクトがparasに含められます:

var paras = utils.testParas(/Oracle/);
getLineMap() なし

マップ・キーとして行番号(1からの相対位置)を持つMapオブジェクトを返します。マップ上のget()からの戻り値は、プロパティstartおよびendを持つオブジェクトです。これは、指定された行のファイルへの開始インデックスと終了インデックス(0からの相対位置)を表します。

この例では、map変数がMapオブジェクトを格納し、posが行3の位置情報を(startおよびendプロパティを持つオブジェクトとして)格納します

var map  = getLineMap();
var pos  = map.get(3);
getLine() (number line)

.mdファイルからの行を文字列として返します。lineは1からの相対位置で指定されます。

この例では、map変数がMapオブジェクトを格納し、lineが行3を文字列として格納します。

var map  = getLineMap();
var line  = getLine(3);
getLineDisp() (number line, [number col])

指定された行の先頭のインデックス番号(ゼロからの相対位置)を返します。

オプションのcol列番号(1からの相対位置)を指定した場合、返されるインデックスはその列を指します。

CSSルール・リスナーで使用可能なコンテキスト・オブジェクト・プロパティ

CSSルールの登録済リスナーは、CSS処理に固有の情報を含むRuleコンテキスト・オブジェクトを受け取ります。

JAF監査エンジンは、ターゲットCSSファイルの特定のノード・タイプを処理するためにルールで登録しているCSSルール・リスナーにRuleコンテキスト・オブジェクトを渡します。CSSファイル用に生成されたコンテキスト・オブジェクトには、CSS処理に固有の次のサポート・データおよび機能が含まれます。「登録済リスナーで使用可能なコンテキスト・オブジェクト・プロパティ」で説明しているように、基本プロパティに加えて、これはすべてのルール・タイプのコンテキスト・オブジェクトで使用できます。

ノート:

Ruleコンテキスト・オブジェクトをキャッシュしないでください。context.utils.msgLibなど、格納されている値はキャッシュしても構いません。

プロパティ タイプ 説明
context.ast ノード

スタイルシート用の完全なAST。

context.offset オブジェクト

格納ファイルに関連するスタイルシートの元が含まれます。スタイルシート・テキストがスタンドアロンの.cssファイルである場合、値は{row : 1, col: 1, index: 0}になります。ただし、スタイルシートが埋込みHTML <style>である場合は、rowcolおよびindexの値は、格納ファイル内のスタイルシートの1文字目の位置を示します。

このプロパティは、CSSノードでlocプロパティと組み合せて使用して、特定のプロパティまたは値の実際の位置を示すことができます。(locの位置情報は常に、スタイルシートの開始位置に対して相対的です。)

context.utils.CssUtils オブジェクト ルールが呼び出されたときにレジスタ・コンテキストで使用できるその他の関数およびルール・コンテキストが格納されているユーティリティ・ライブラリ。「CssUtils: CSSユーティリティ関数」を参照してください。